package minestrapteam.mods.minestrappolation.block; import com.google.common.base.Predicate; import minestrapteam.mods.minestrappolation.Minestrappolation; import minestrapteam.mods.minestrappolation.enumtypes.MWoodType; import minestrapteam.mods.minestrappolation.lib.MReference; import net.minecraft.block.BlockLog; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.state.BlockState; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.model.ModelBakery; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumFacing; import net.minecraft.world.IBlockAccess; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import java.util.List; public class MBlockLog extends BlockLog { public static final PropertyEnum VARIANT = PropertyEnum.create("variant", MWoodType.class, new Predicate() { public boolean apply(MWoodType type) { return type.getMetadata() < 4; } @Override public boolean apply(Object p_apply_1_) { return this.apply((MWoodType) p_apply_1_); } }); private int flammability; public MBlockLog(int flame) { this.setDefaultState(this.blockState.getBaseState().withProperty(VARIANT, MWoodType.REDWOOD) .withProperty(LOG_AXIS, BlockLog.EnumAxis.Y)); this.setCreativeTab(Minestrappolation.tabMBuilding); this.flammability = flame; } @Override @SideOnly(Side.CLIENT) public void getSubBlocks(Item itemIn, CreativeTabs tab, List list) { MWoodType[] aenumtype = MWoodType.values(); int i = aenumtype.length; for (int j = 0; j < i; ++j) { MWoodType enumtype = aenumtype[j]; list.add(new ItemStack(itemIn, 1, enumtype.getMetadata())); } } @Override public IBlockState getStateFromMeta(int meta) { IBlockState iblockstate = this.getDefaultState().withProperty(VARIANT, MWoodType.byMetadata((meta & 3) % 4)); switch (meta & 12) { case 0: iblockstate = iblockstate.withProperty(LOG_AXIS, BlockLog.EnumAxis.Y); break; case 4: iblockstate = iblockstate.withProperty(LOG_AXIS, BlockLog.EnumAxis.X); break; case 8: iblockstate = iblockstate.withProperty(LOG_AXIS, BlockLog.EnumAxis.Z); break; default: iblockstate = iblockstate.withProperty(LOG_AXIS, BlockLog.EnumAxis.NONE); } return iblockstate; } @Override public int getMetaFromState(IBlockState state) { byte b0 = 0; int i = b0 | ((MWoodType) state.getValue(VARIANT)).getMetadata(); switch (state.getValue(LOG_AXIS)) { case X: i |= 4; break; case Y: i |= 8; break; case Z: i |= 12; default: break; } return i; } @Override protected BlockState createBlockState() { return new BlockState(this, VARIANT, LOG_AXIS); } @Override protected ItemStack createStackedBlock(IBlockState state) { return new ItemStack(Item.getItemFromBlock(this), 1, ((MWoodType) state.getValue(VARIANT)).getMetadata()); } /** * Get the damage value that this Block should drop */ @Override public int damageDropped(IBlockState state) { return ((MWoodType) state.getValue(VARIANT)).getMetadata(); } @Override public int getFlammability(IBlockAccess world, BlockPos pos, EnumFacing face) { return this.flammability; } public static void inventoryRender() { Item itemBlockBrickVariants = GameRegistry.findItem(MReference.MODID, "ministrapp_log"); ModelBakery.addVariantName(itemBlockBrickVariants, "ministrapp:redwood_log"); ModelBakery.addVariantName(itemBlockBrickVariants, "ministrapp:frozen_oak_log"); Item itemBlockVariants = GameRegistry.findItem(MReference.MODID, "ministrapp_log"); MWoodType[] aenumtype = MWoodType.values(); int i = aenumtype.length; for (int j = 0; j < i; ++j) { MWoodType enumtype = aenumtype[j]; ModelResourceLocation itemModelResourceLocation = new ModelResourceLocation(MReference.MODID + ":" + enumtype .getUnlocalizedName() + "_log", "inventory"); Minecraft.getMinecraft().getRenderItem().getItemModelMesher() .register(itemBlockVariants, enumtype.getMetadata(), itemModelResourceLocation); } } }