int md = world.getBlockMetadata(x, y, z) % 8;
world.setBlock(x, y, z, Blocks.air);
WorldGenerator obj = null;
if (md == 1)
obj = new RareTreeGen(true, 4, 2, 1, 1);
else if (md == 2)
obj = new RareTreeGen(true, 9, 8, 2, 2);
else if (md == 3)
obj = new RareTreeGen(true, 6, 4, 3, 3);
else if (md == 4)
obj = new WillowGen(true);
else
obj = new RareTreeGen(true, 4, 2, 0, 0);
if (!(obj.generate(world, random, x, y, z)))
world.setBlock(x, y, z, this, md + 8, 3);
}