All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.minecraft.server.BlockTallPlant Maven / Gradle / Ivy

package net.minecraft.server;

import java.util.Random;

public class BlockTallPlant extends BlockPlant implements IBlockFragilePlantElement {

  public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", EnumTallFlowerVariants.class);
  public static final BlockStateEnum HALF = BlockStateEnum.of("half", EnumTallPlantHalf.class);
  public static final BlockStateEnum N = BlockDirectional.FACING;

  public BlockTallPlant() {
    super(Material.REPLACEABLE_PLANT);
    this.j(this.blockStateList.getBlockData().set(BlockTallPlant.VARIANT, EnumTallFlowerVariants.SUNFLOWER).set(BlockTallPlant.HALF, EnumTallPlantHalf.LOWER).set(BlockTallPlant.N, EnumDirection.NORTH));
    this.c(0.0F);
    this.a(BlockTallPlant.h);
    this.c("doublePlant");
  }

  public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) {
    this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
  }

  public EnumTallFlowerVariants e(IBlockAccess iblockaccess, BlockPosition blockposition) {
    IBlockData iblockdata = iblockaccess.getType(blockposition);

    if (iblockdata.getBlock() == this) {
      iblockdata = this.updateState(iblockdata, iblockaccess, blockposition);
      return iblockdata.get(BlockTallPlant.VARIANT);
    } else {
      return EnumTallFlowerVariants.FERN;
    }
  }

  public boolean canPlace(World world, BlockPosition blockposition) {
    return super.canPlace(world, blockposition) && world.isEmpty(blockposition.up());
  }

  public boolean a(World world, BlockPosition blockposition) {
    IBlockData iblockdata = world.getType(blockposition);

    if (iblockdata.getBlock() != this) {
      return true;
    } else {
      EnumTallFlowerVariants blocktallplant_enumtallflowervariants = this.updateState(iblockdata, world, blockposition).get(BlockTallPlant.VARIANT);

      return blocktallplant_enumtallflowervariants == EnumTallFlowerVariants.FERN || blocktallplant_enumtallflowervariants == EnumTallFlowerVariants.GRASS;
    }
  }

  protected void e(World world, BlockPosition blockposition, IBlockData iblockdata) {
    if (!this.f(world, blockposition, iblockdata)) {
      boolean flag = iblockdata.get(BlockTallPlant.HALF) == EnumTallPlantHalf.UPPER;
      BlockPosition blockposition1 = flag ? blockposition : blockposition.up();
      BlockPosition blockposition2 = flag ? blockposition.down() : blockposition;
      Object object = flag ? this : world.getType(blockposition1).getBlock();
      Object object1 = flag ? world.getType(blockposition2).getBlock() : this;

      if (object == this) {
        world.setTypeAndData(blockposition1, Blocks.AIR.getBlockData(), 2);
      }

      if (object1 == this) {
        world.setTypeAndData(blockposition2, Blocks.AIR.getBlockData(), 3);
        if (!flag) {
          this.b(world, blockposition2, iblockdata, 0);
        }
      }

    }
  }

  public boolean f(World world, BlockPosition blockposition, IBlockData iblockdata) {
    if (iblockdata.get(BlockTallPlant.HALF) == EnumTallPlantHalf.UPPER) {
      return world.getType(blockposition.down()).getBlock() == this;
    } else {
      IBlockData iblockdata1 = world.getType(blockposition.up());

      return iblockdata1.getBlock() == this && super.f(world, blockposition, iblockdata1);
    }
  }

  public Item getDropType(IBlockData iblockdata, Random random, int i) {
    if (iblockdata.get(BlockTallPlant.HALF) == EnumTallPlantHalf.UPPER) {
      return null;
    } else {
      EnumTallFlowerVariants blocktallplant_enumtallflowervariants = iblockdata.get(BlockTallPlant.VARIANT);

      return blocktallplant_enumtallflowervariants == EnumTallFlowerVariants.FERN ? null : (blocktallplant_enumtallflowervariants == EnumTallFlowerVariants.GRASS ? (random.nextInt(8) == 0 ? Items.WHEAT_SEEDS : null) : Item.getItemOf(this));
    }
  }

  public int getDropData(IBlockData iblockdata) {
    return iblockdata.get(BlockTallPlant.HALF) != EnumTallPlantHalf.UPPER && iblockdata.get(BlockTallPlant.VARIANT) != EnumTallFlowerVariants.GRASS ? iblockdata.get(BlockTallPlant.VARIANT).a() : 0;
  }

  public void a(World world, BlockPosition blockposition, EnumTallFlowerVariants blocktallplant_enumtallflowervariants, int i) {
    world.setTypeAndData(blockposition, this.getBlockData().set(BlockTallPlant.HALF, EnumTallPlantHalf.LOWER).set(BlockTallPlant.VARIANT, blocktallplant_enumtallflowervariants), i);
    world.setTypeAndData(blockposition.up(), this.getBlockData().set(BlockTallPlant.HALF, EnumTallPlantHalf.UPPER), i);
  }

  public void postPlace(World world, BlockPosition blockposition, IBlockData iblockdata, EntityLiving entityliving, ItemStack itemstack) {
    world.setTypeAndData(blockposition.up(), this.getBlockData().set(BlockTallPlant.HALF, EnumTallPlantHalf.UPPER), 2);
  }

  public void a(World world, EntityHuman entityhuman, BlockPosition blockposition, IBlockData iblockdata, TileEntity tileentity) {
    if (world.isClientSide || entityhuman.bZ() == null || entityhuman.bZ().getItem() != Items.SHEARS || iblockdata.get(BlockTallPlant.HALF) != EnumTallPlantHalf.LOWER || !this.b(world, blockposition, iblockdata, entityhuman)) {
      super.a(world, entityhuman, blockposition, iblockdata, tileentity);
    }
  }

  public void a(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman) {
    if (iblockdata.get(BlockTallPlant.HALF) == EnumTallPlantHalf.UPPER) {
      if (world.getType(blockposition.down()).getBlock() == this) {
        if (!entityhuman.abilities.canInstantlyBuild) {
          IBlockData iblockdata1 = world.getType(blockposition.down());
          EnumTallFlowerVariants blocktallplant_enumtallflowervariants = iblockdata1.get(BlockTallPlant.VARIANT);

          if (blocktallplant_enumtallflowervariants != EnumTallFlowerVariants.FERN && blocktallplant_enumtallflowervariants != EnumTallFlowerVariants.GRASS) {
            world.setAir(blockposition.down(), true);
          } else if (!world.isClientSide) {
            if (entityhuman.bZ() != null && entityhuman.bZ().getItem() == Items.SHEARS) {
              this.b(world, blockposition, iblockdata1, entityhuman);
              world.setAir(blockposition.down());
            } else {
              world.setAir(blockposition.down(), true);
            }
          } else {
            world.setAir(blockposition.down());
          }
        } else {
          world.setAir(blockposition.down());
        }
      }
    } else if (entityhuman.abilities.canInstantlyBuild && world.getType(blockposition.up()).getBlock() == this) {
      world.setTypeAndData(blockposition.up(), Blocks.AIR.getBlockData(), 2);
    }

    super.a(world, blockposition, iblockdata, entityhuman);
  }

  private boolean b(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman) {
    EnumTallFlowerVariants blocktallplant_enumtallflowervariants = iblockdata.get(BlockTallPlant.VARIANT);

    if (blocktallplant_enumtallflowervariants != EnumTallFlowerVariants.FERN && blocktallplant_enumtallflowervariants != EnumTallFlowerVariants.GRASS) {
      return false;
    } else {
      entityhuman.b(StatisticList.MINE_BLOCK_COUNT[Block.getId(this)]);
      int i = (blocktallplant_enumtallflowervariants == EnumTallFlowerVariants.GRASS ? BlockLongGrass.EnumTallGrassType.GRASS : BlockLongGrass.EnumTallGrassType.FERN).a();

      a(world, blockposition, new ItemStack(Blocks.TALLGRASS, 2, i));
      return true;
    }
  }

  public int getDropData(World world, BlockPosition blockposition) {
    return this.e(world, blockposition).a();
  }

  public boolean a(World world, BlockPosition blockposition, IBlockData iblockdata, boolean flag) {
    EnumTallFlowerVariants blocktallplant_enumtallflowervariants = this.e(world, blockposition);

    return blocktallplant_enumtallflowervariants != EnumTallFlowerVariants.GRASS && blocktallplant_enumtallflowervariants != EnumTallFlowerVariants.FERN;
  }

  public boolean a(World world, Random random, BlockPosition blockposition, IBlockData iblockdata) {
    return true;
  }

  public void b(World world, Random random, BlockPosition blockposition, IBlockData iblockdata) {
    a(world, blockposition, new ItemStack(this, 1, this.e(world, blockposition).a()));
  }

  public IBlockData fromLegacyData(int i) {
    return (i & 8) > 0 ? this.getBlockData().set(BlockTallPlant.HALF, EnumTallPlantHalf.UPPER) : this.getBlockData().set(BlockTallPlant.HALF, EnumTallPlantHalf.LOWER).set(BlockTallPlant.VARIANT, EnumTallFlowerVariants.a(i & 7));
  }

  public IBlockData updateState(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) {
    if (iblockdata.get(BlockTallPlant.HALF) == EnumTallPlantHalf.UPPER) {
      IBlockData iblockdata1 = iblockaccess.getType(blockposition.down());

      if (iblockdata1.getBlock() == this) {
        iblockdata = iblockdata.set(BlockTallPlant.VARIANT, iblockdata1.get(BlockTallPlant.VARIANT));
      }
    }

    return iblockdata;
  }

  public int toLegacyData(IBlockData iblockdata) {
    return iblockdata.get(BlockTallPlant.HALF) == EnumTallPlantHalf.UPPER ? 8 | iblockdata.get(BlockTallPlant.N).b() : iblockdata.get(BlockTallPlant.VARIANT).a();
  }

  protected BlockStateList getStateList() {
    return new BlockStateList(this, BlockTallPlant.HALF, BlockTallPlant.VARIANT, BlockTallPlant.N);
  }

  public enum EnumTallPlantHalf implements INamable {

    UPPER, LOWER;

    EnumTallPlantHalf() {
    }

    public String toString() {
      return this.getName();
    }

    public String getName() {
      return this == EnumTallPlantHalf.UPPER ? "upper" : "lower";
    }
  }

  public enum EnumTallFlowerVariants implements INamable {

    SUNFLOWER(0, "sunflower"), SYRINGA(1, "syringa"), GRASS(2, "double_grass", "grass"), FERN(3, "double_fern", "fern"), ROSE(4, "double_rose", "rose"), PAEONIA(5, "paeonia");

    private static final EnumTallFlowerVariants[] g = new EnumTallFlowerVariants[values().length];

    static {
      EnumTallFlowerVariants[] ablocktallplant_enumtallflowervariants = values();
      int i = ablocktallplant_enumtallflowervariants.length;

      for (int j = 0; j < i; ++j) {
        EnumTallFlowerVariants blocktallplant_enumtallflowervariants = ablocktallplant_enumtallflowervariants[j];

        EnumTallFlowerVariants.g[blocktallplant_enumtallflowervariants.a()] = blocktallplant_enumtallflowervariants;
      }

    }

    private final int h;
    private final String i;
    private final String j;

    EnumTallFlowerVariants(int i, String s) {
      this(i, s, s);
    }

    EnumTallFlowerVariants(int i, String s, String s1) {
      this.h = i;
      this.i = s;
      this.j = s1;
    }

    public static EnumTallFlowerVariants a(int i) {
      if (i < 0 || i >= EnumTallFlowerVariants.g.length) {
        i = 0;
      }

      return EnumTallFlowerVariants.g[i];
    }

    public int a() {
      return this.h;
    }

    public String toString() {
      return this.i;
    }

    public String getName() {
      return this.i;
    }

    public String c() {
      return this.j;
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy