Jump to content

Romptroll

Members
  • Posts

    8
  • Joined

  • Last visited

Everything posted by Romptroll

  1. v
  2. Thanks it now works!
  3. package romptroll.twot.objects.blocks; import java.util.List; import java.util.Random; import javax.annotation.Nonnull; import javax.annotation.Nullable; import com.google.common.base.Predicate; import romptroll.twot.TwoTMod; import romptroll.twot.init.BlockInit; import romptroll.twot.init.ItemInit; import romptroll.twot.objects.blocks.item.ItemBlockVariants; import romptroll.twot.util.handlers.EnumHandler; import romptroll.twot.util.interfaces.IHasModel; import romptroll.twot.util.interfaces.IMetaName; import net.minecraft.block.Block; import net.minecraft.block.BlockLeaves; import net.minecraft.block.BlockPlanks.EnumType; import net.minecraft.block.SoundType; 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.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.EnumFacing; import net.minecraft.util.NonNullList; 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 BlockLeaf extends BlockLeaves implements IMetaName, IHasModel { protected boolean leavesFancy; public static final PropertyEnum<EnumHandler.EnumType> VARIANT = PropertyEnum.<EnumHandler.EnumType>create("variant", EnumHandler.EnumType.class, new Predicate<EnumHandler.EnumType>() { public boolean apply(@Nullable EnumHandler.EnumType apply) { return apply.getMeta() < 2; } }); private String name; public BlockLeaf(String name) { setUnlocalizedName(name); setRegistryName(name); setSoundType(SoundType.PLANT); setDefaultState(this.blockState.getBaseState().withProperty(VARIANT, EnumHandler.EnumType.GREEN_OAK).withProperty(CHECK_DECAY, Boolean.valueOf(true)).withProperty(DECAYABLE, Boolean.valueOf(true))); setCreativeTab(TwoTMod.TWOTTAB); this.name = name; BlockInit.BLOCKS.add(this); ItemInit.ITEMS.add(new ItemBlockVariants(this).setRegistryName(this.getRegistryName())); } @Override public void updateTick(World worldIn, @Nonnull BlockPos pos, @Nonnull IBlockState state, Random rand) { super.updateTick(worldIn, pos, state, rand); } @Override public IBlockState getStateFromMeta(int meta) { return this.getDefaultState().withProperty(VARIANT, EnumHandler.EnumType.byMetadata(meta % 2)); } @Override public int getMetaFromState(IBlockState state) { int i = ((EnumHandler.EnumType)state.getValue(VARIANT)).getMeta(); if(!((Boolean)state.getValue(DECAYABLE)).booleanValue()) { i |= 2; } if(!((Boolean)state.getValue(CHECK_DECAY)).booleanValue()) { i |= 4; } return i; } @Override public void getSubBlocks(CreativeTabs itemIn, NonNullList<ItemStack> items) { for(EnumHandler.EnumType customblockplanks$enumtype : EnumHandler.EnumType.values()) { items.add(new ItemStack(this, 1, customblockplanks$enumtype.getMeta())); } } @Override protected ItemStack getSilkTouchDrop(IBlockState state) { return new ItemStack(Item.getItemFromBlock(this), 1, ((EnumHandler.EnumType)state.getValue(VARIANT)).getMeta()); } @Override public int damageDropped(IBlockState state) { return ((EnumHandler.EnumType)state.getValue(VARIANT)).getMeta(); } @Override public String getSpecialName(ItemStack stack) { return EnumHandler.EnumType.values()[stack.getItemDamage()].getName(); } @Override protected void dropApple(World worldIn, BlockPos pos, IBlockState state, int chance) {return;} @Override protected int getSaplingDropChance(IBlockState state) {return 30;} @Override public EnumType getWoodType(int meta) {return null;} @Override public List<ItemStack> onSheared(ItemStack item, IBlockAccess world, BlockPos pos, int fortune) { return NonNullList.withSize(1, new ItemStack(this, 1, world.getBlockState(pos).getValue(VARIANT).getMeta())); } @Override protected BlockStateContainer createBlockState() { return new BlockStateContainer(this, new IProperty[] {VARIANT,DECAYABLE,CHECK_DECAY}); } @SideOnly(Side.CLIENT) public void setGraphicsLevel(boolean fancy) { this.leavesFancy = fancy; } @Override public boolean isOpaqueCube(IBlockState state) { return Blocks.LEAVES.isOpaqueCube(state); } @Nonnull @SideOnly(Side.CLIENT) @Override public BlockRenderLayer getBlockLayer() { return Blocks.LEAVES.getBlockLayer(); } @Override public boolean shouldSideBeRendered(@Nonnull IBlockState blockState, @Nonnull IBlockAccess blockAccess, @Nonnull BlockPos pos, @Nonnull EnumFacing side) { this.leavesFancy = !Blocks.LEAVES.isOpaqueCube(blockState); return super.shouldSideBeRendered(blockState, blockAccess, pos, side); } public boolean causesSuffocation(IBlockState state) { return false; } @Override public void registerModels() { for(int i = 0; i < EnumHandler.EnumType.values().length; i++) { TwoTMod.proxy.registerVariantRenderer(Item.getItemFromBlock(this), i, "leaves_" + EnumHandler.EnumType.values()[i].getName(), "inventory"); } } @Override public boolean isLeaves(IBlockState state, IBlockAccess world, BlockPos pos) { return true; } }
  4. sry im new to the forums
  5. Help anybody?
  6. Yes i have looked at should shouldSideBeRendered()
  7. I have already done that but to no help?
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.