November 24, 20177 yr Look at the vanilla leaves classes. You may even want to just extend BlockLeavesBase. Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
November 24, 20177 yr Author 9 minutes ago, Draco18s said: Look at the vanilla leaves classes. You may even want to just extend BlockLeavesBase. I have already done that but to no help?
November 24, 20177 yr Have you looked at shouldSideBeRendered()? Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
November 25, 20177 yr Author 12 hours ago, Draco18s said: Have you looked at shouldSideBeRendered()? Yes i have looked at should shouldSideBeRendered()
November 26, 20177 yr Author 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; } }
November 26, 20177 yr Try to return "shouldSideBeRendered()" true or test if it does return true. Also, setGraphicsLevel() changes leavesFancy, and I think that Minecraft normally renders the leaves transparent if it is true Edited November 26, 20177 yr by ArmamentHaki
November 26, 20177 yr Author 2 hours ago, ArmamentHaki said: Try to return "shouldSideBeRendered()" true or test if it does return true. Also, setGraphicsLevel() changes leavesFancy, and I think that Minecraft normally renders the leaves transparent if it is true Thanks it now works!
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.