package me.km.blocks; import java.util.Random; import me.km.KajetansMod; import net.minecraft.block.SoundType; import net.minecraft.block.material.MapColor; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.util.DamageSource; import net.minecraft.util.NonNullList; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; public class BlockSpikeTrap extends BlockTrap { // everything inspired by BlockWoodSlab public static final PropertyEnum VARIANT = PropertyEnum.create("variant", EnumMetals.class); public BlockSpikeTrap(Material material, String name, String local) { super(material, name, local); super.setSoundType(SoundType.METAL); super.setHardness(5); super.setResistance(10); super.setDefaultState(this.blockState.getBaseState().withProperty(VARIANT, EnumMetals.COPPER)); } @Override public AxisAlignedBB getCollisionBoundingBox(IBlockState blockState, IBlockAccess worldIn, BlockPos pos) { return BOX; } @Override public void onEntityCollidedWithBlock(World w, BlockPos pos, IBlockState state, Entity ent) { if(ent instanceof EntityLivingBase) { ent.attackEntityFrom(DamageSource.CACTUS, 1); } } @Override public void registerItemModel(ItemBlock itemBlock) { for(EnumMetals metal : EnumMetals.values()) { KajetansMod.proxy.registerItemRenderer(itemBlock, metal.getMetadata(), name, "variant=" + metal.getName()); } } @Override public MapColor getMapColor(IBlockState state) { return state.getValue(VARIANT).getMapColor(); } @Override public Item getItemDropped(IBlockState state, Random rand, int fortune) { return Item.getItemFromBlock(ModBlocks.spikes); } @Override public ItemStack getItem(World worldIn, BlockPos pos, IBlockState state) { return new ItemStack(ModBlocks.spikes, 1, state.getValue(VARIANT).getMetadata()); } @SideOnly(Side.CLIENT) @Override public void getSubBlocks(Item item, CreativeTabs tab, NonNullList list) { for(EnumMetals metal : EnumMetals.values()) { list.add(new ItemStack(item, 1, metal.getMetadata())); } } @Override public IBlockState getStateFromMeta(int meta) { return this.getDefaultState().withProperty(VARIANT, EnumMetals.byMetadata(meta)); } @Override public int getMetaFromState(IBlockState state) { return state.getValue(VARIANT).getMetadata(); } @Override protected BlockStateContainer createBlockState() { return new BlockStateContainer(this, new IProperty[] {VARIANT}); } @Override public int damageDropped(IBlockState state) { return state.getValue(VARIANT).getMetadata(); } }