| package net.glowstone.generator; |
| |
| import org.bukkit.Location; |
| import org.bukkit.Material; |
| import org.bukkit.World; |
| |
| import java.util.Random; |
| |
| /** |
| * A 'cake town' generator as a temporary Skylands. |
| */ |
| public class CakeTownGenerator extends GlowChunkGenerator { |
| |
| public CakeTownGenerator() { |
| super( |
| // In-ground |
| //new LakePopulator(), |
| //new CavePopulator() |
| ); |
| } |
| |
| @Override |
| public byte[] generate(World world, Random random, int chunkX, int chunkZ) { |
| final int base = WORLD_DEPTH / 4; |
| final int top = WORLD_DEPTH / 2 + base; |
| |
| Location center = new Location(world, 0, base, 0); |
| |
| byte[] buf = start(Material.AIR); |
| |
| for (int x = 0; x < 16; x++) { |
| for (int z = 0; z < 16; z++) { |
| for (int y = base; y <= top; y++) { |
| int realX = chunkX * 16 + x; |
| int realZ = chunkZ * 16 + z; |
| double dist = new Location(world, realX, y, realZ).distance(center); |
| if (dist < 100) { |
| if (y <= base + 1 && y >= base) { |
| set(buf, x, y, z, Material.BEDROCK); |
| } else if (y == top) { |
| set(buf, x, y, z, Material.GRASS); |
| } else { |
| set(buf, x, y, z, Material.STONE); |
| } |
| } else if (dist < 102) { |
| if (y <= base + 1 && y >= base) { |
| set(buf, x, y, z, Material.BEDROCK); |
| } else { |
| set(buf, x, y, z, Material.GRASS); |
| } |
| } |
| } |
| } |
| } |
| |
| return buf; |
| } |
| |
| @Override |
| public Location getFixedSpawnLocation(World world, Random random) { |
| int x = random.nextInt(WORLD_DEPTH) - WORLD_DEPTH / 2; |
| int z = random.nextInt(WORLD_DEPTH) - WORLD_DEPTH / 2; |
| return new Location(world, x, world.getHighestBlockYAt(x, z), z); |
| } |
| |
| } |