int mathZ = z - pos.getZ();
if (Math.abs(mathX) != subract2 || Math.abs(mathZ) != subract2 || random.nextInt(2) != 0 && subract != 0)
{
BlockPos blockpos = new BlockPos(x, y, z);
IBlockState state = world.getBlockState(blockpos);
<BUG>if (state.getBlock().isAir(state, world, blockpos) || state.getBlock().isLeaves(state, world, blockpos) || state.getBlock().canBeReplacedByLeaves(state, world, blockpos))
{
this.setBlockAndMetadata(world, blockpos, this.leaves);
}</BUG>
}

int mathZ = z - pos.getZ();
if (Math.abs(mathX) != subract2 || Math.abs(mathZ) != subract2 || random.nextInt(2) != 0 && subract != 0)
{
BlockPos blockpos = new BlockPos(x, y, z);
IBlockState state = world.getBlockState(blockpos);
if (state.getBlock() == null || state.getBlock().canBeReplacedByLeaves(state, world, blockpos))
{
world.setBlockState(blockpos, this.leaves, 2);
