package net.minecraft.server; import java.util.Random; import javax.annotation.Nullable; public class BlockPlant extends Block { protected static final AxisAlignedBB b = new AxisAlignedBB(0.30000001192092896D, 0.0D, 0.30000001192092896D, 0.699999988079071D, 0.6000000238418579D, 0.699999988079071D); protected BlockPlant() { this(Material.PLANT); } protected BlockPlant(Material material) { this(material, material.r()); } protected BlockPlant(Material material, MaterialMapColor materialmapcolor) { super(material, materialmapcolor); this.a(true); this.a(CreativeModeTab.c); } @Override public boolean canPlace(World world, BlockPosition blockposition) { return super.canPlace(world, blockposition) && this.i(world.getType(blockposition.down())); } protected boolean i(IBlockData iblockdata) { return iblockdata.getBlock() == Blocks.GRASS || iblockdata.getBlock() == Blocks.DIRT || iblockdata.getBlock() == Blocks.FARMLAND; } @Override public void a(IBlockData iblockdata, World world, BlockPosition blockposition, Block block, BlockPosition blockposition1) { super.a(iblockdata, world, blockposition, block, blockposition1); this.e(world, blockposition, iblockdata); } @Override public void b(World world, BlockPosition blockposition, IBlockData iblockdata, Random random) { this.e(world, blockposition, iblockdata); } protected void e(World world, BlockPosition blockposition, IBlockData iblockdata) { if (!this.f(world, blockposition, iblockdata)) { // CraftBukkit start if (org.bukkit.craftbukkit.event.CraftEventFactory.callBlockPhysicsEvent(world, blockposition).isCancelled()) { return; } // CraftBukkit end this.b(world, blockposition, iblockdata, 0); world.setTypeAndData(blockposition, Blocks.AIR.getBlockData(), 3); } } public boolean f(World world, BlockPosition blockposition, IBlockData iblockdata) { return this.i(world.getType(blockposition.down())); } @Override public AxisAlignedBB b(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) { return BlockPlant.b; } @Override @Nullable public AxisAlignedBB a(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) { return BlockPlant.k; } @Override public boolean b(IBlockData iblockdata) { return false; } @Override public boolean c(IBlockData iblockdata) { return false; } }