package com.hbm.blocks.generic; import java.util.List; import java.util.Random; import com.hbm.blocks.BlockEnumMulti; import com.hbm.blocks.ITooltipProvider; import net.minecraft.block.Block; import net.minecraft.block.IGrowable; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.EnumPlantType; import net.minecraftforge.common.IPlantable; import net.minecraftforge.common.util.ForgeDirection; public class BlockNTMFlower extends BlockEnumMulti implements IPlantable, IGrowable, ITooltipProvider { public BlockNTMFlower() { super(Material.plants, EnumFlowerType.class, true, true); } public static enum EnumFlowerType { FOXGLOVE, TOBACCO, NIGHTSHADE, WEED } @Override public EnumPlantType getPlantType(IBlockAccess world, int x, int y, int z) { return EnumPlantType.Plains; } @Override public Block getPlant(IBlockAccess world, int x, int y, int z) { return this; } @Override public int getPlantMetadata(IBlockAccess world, int x, int y, int z) { return world.getBlockMetadata(x, y, z); } @Override public boolean canPlaceBlockAt(World world, int x, int y, int z) { return super.canPlaceBlockAt(world, x, y, z) && this.canBlockStay(world, x, y, z); } protected boolean canPlaceBlockOn(Block block) { return block == Blocks.grass || block == Blocks.dirt || block == Blocks.farmland; } @Override public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { super.onNeighborBlockChange(world, x, y, z, block); this.checkAndDropBlock(world, x, y, z); } protected void checkAndDropBlock(World world, int x, int y, int z) { if(!this.canBlockStay(world, x, y, z)) { this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); world.setBlock(x, y, z, getBlockById(0), 0, 2); } } @Override public boolean canBlockStay(World world, int x, int y, int z) { return world.getBlock(x, y - 1, z).canSustainPlant(world, x, y - 1, z, ForgeDirection.UP, this); } @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { return null; } @Override public boolean isOpaqueCube() { return false; } @Override public boolean renderAsNormalBlock() { return false; } @Override public int getRenderType() { return 1; } @Override public int damageDropped(int meta) { return meta; } /* grow condition */ @Override public boolean func_149851_a(World world, int x, int y, int z, boolean b) { return true; } /* chance */ @Override public boolean func_149852_a(World p_149852_1_, Random p_149852_2_, int p_149852_3_, int p_149852_4_, int p_149852_5_) { return true; } /* grow */ @Override public void func_149853_b(World world, Random rand, int x, int y, int z) { this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); } @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { } }