Posted May 5, 201411 yr The problem (as seen in the image below) is that on grow my custom tree the bottom block, where previously was the sapling, has a chance (i think), of appear rotated. https://dl.dropboxusercontent.com/u/184200482/img/tree_grow_bug.png[/img] BlockSapling.java package com.sackcastellon.treeoflife.block; import java.util.Random; import com.sackcastellon.treeoflife.TreeOfLife; import com.sackcastellon.treeoflife.world.gen.WorldGenTree; import net.minecraft.block.Block; import net.minecraft.block.BlockBush; import net.minecraft.block.IGrowable; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.init.Blocks; import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class BlockSapling extends BlockBush implements IGrowable { public static final String[] field_149882_a = new String[] {"life"}; private static final IIcon[] IconArray = new IIcon[field_149882_a.length]; public BlockSapling() { float f = 0.4F; this.setBlockName("tol_sapling"); this.setBlockBounds(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, f * 2.0F, 0.5F + f); this.setCreativeTab(TreeOfLife.tabTol); } /** * Ticks the block if it's been scheduled */ @Override public void updateTick(World world, int x, int y, int z, Random rand) { if (!world.isRemote) { super.updateTick(world, x, y, z, rand); if (world.getBlockLightValue(x, y + 1, z) >= 9 && rand.nextInt(7) == 0) { this.markOrGrowMarked(world, x, y, z, rand); } } } /** * Gets the block's texture. Args: side, meta */ @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int metadata) { metadata &= 7; return IconArray[MathHelper.clamp_int(metadata, 0, 5)]; } public void markOrGrowMarked(World world, int x, int y, int z, Random rand) { int l = world.getBlockMetadata(x, y, z); if ((l & == 0) { world.setBlockMetadataWithNotify(x, y, z, l | 8, 4); } else { this.growTree(world, x, y, z, rand); } } public void growTree(World world, int x, int y, int z, Random rand) { if (!net.minecraftforge.event.terraingen.TerrainGen.saplingGrowTree(world, rand, x, y, z)) return; int l = world.getBlockMetadata(x, y, z) & 7; Object object = new WorldGenTree(true); int i1 = 0; int j1 = 0; boolean flag = false; Block block = Blocks.air; if (flag) { world.setBlock(x + i1, y, z + j1, block, 0, 4); world.setBlock(x + i1 + 1, y, z + j1, block, 0, 4); world.setBlock(x + i1, y, z + j1 + 1, block, 0, 4); world.setBlock(x + i1 + 1, y, z + j1 + 1, block, 0, 4); } else { world.setBlock(x, y, z, block, 0, 4); } if (!((WorldGenerator)object).generate(world, rand, x + i1, y, z + j1)) { if (flag) { world.setBlock(x + i1, y, z + j1, this, l, 4); world.setBlock(x + i1 + 1, y, z + j1, this, l, 4); world.setBlock(x + i1, y, z + j1 + 1, this, l, 4); world.setBlock(x + i1 + 1, y, z + j1 + 1, this, l, 4); } else { world.setBlock(x, y, z, this, l, 4); } } } public boolean isSameSapling(World p_149880_1_, int p_149880_2_, int p_149880_3_, int p_149880_4_, int p_149880_5_) { return p_149880_1_.getBlock(p_149880_2_, p_149880_3_, p_149880_4_) == this && (p_149880_1_.getBlockMetadata(p_149880_2_, p_149880_3_, p_149880_4_) & 7) == p_149880_5_; } /** * Determines the damage on the item the block drops. Used in cloth and wood. */ @Override public int damageDropped(int metadata) { return MathHelper.clamp_int(metadata & 7, 0, 5); } @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { IconArray[0] = iconRegister.registerIcon("treeoflife:sapling"); } @Override public boolean func_149851_a(World world, int x, int y, int z, boolean flag) { return true; } @Override public boolean func_149852_a(World world, Random rand, int x, int y, int z) { return (double)world.rand.nextFloat() < 0.45D; } @Override public void func_149853_b(World world, Random rand, int x, int y, int z) { this.markOrGrowMarked(world, x, y, z, rand); } } WorldGenTree.java package com.sackcastellon.treeoflife.world.gen; import java.util.Random; import com.sackcastellon.treeoflife.api.Blocks; import net.minecraft.block.Block; import net.minecraft.block.BlockSapling; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenAbstractTree; import net.minecraftforge.common.util.ForgeDirection; public class WorldGenTree extends WorldGenAbstractTree { public WorldGenTree(boolean par1) { super(par1); } @Override public boolean generate(World world, Random rand, int x, int y, int z) { for (int i = 0; i < 3; ++i) { this.setBlockAndNotifyAdequately(world, x, y + i, z, Blocks.ToLLog, 0); } return true; } } Thanks for helping
May 6, 201411 yr The only problem I can think of is that you notify nearby blocks. The logs probably rotate accordingly.
May 6, 201411 yr Author The only problem I can think of is that you notify nearby blocks. The logs probably rotate accordingly. What do you mean? And how can i fix it?
May 7, 201411 yr When I did my copy/paste mod, I had some blocks where they cared how they were placed and it changed the orientation such as droppers/hoppers. I had to come back 1 tick later and set their meta data or they wouldn't obey the orientation I desired. I just looked at the blockwood class and I do not see any evidence of that issue here. It has to be how you are placing the block. Is there any difference when the tree grows from worldgen versus you grow the block with the bonemeal in your hand? Long time Bukkit & Forge Programmer Happy to try and help
May 7, 201411 yr Author When I did my copy/paste mod, I had some blocks where they cared how they were placed and it changed the orientation such as droppers/hoppers. I had to come back 1 tick later and set their meta data or they wouldn't obey the orientation I desired. I just looked at the blockwood class and I do not see any evidence of that issue here. It has to be how you are placing the block. Is there any difference when the tree grows from worldgen versus you grow the block with the bonemeal in your hand? Yes, the trees from worldgen has no rotated logs (at least the ones i saw) and the treen grew by bonemeal, have a chance of generate with the bottom log rotated.
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.