package net.glowstone.generator.populators; import org.bukkit.Chunk; import org.bukkit.ChunkSnapshot; import org.bukkit.Material; import org.bukkit.World; import org.bukkit.block.Biome; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.generator.BlockPopulator; import java.util.Random; /** * BlockPopulator that coats tundra and {@link Biome#TAIGA * taiga} with snow. */ public class SnowPopulator extends BlockPopulator { @Override public void populate(World world, Random random, Chunk source) { int chunkX = source.getX() * 16; int chunkZ = source.getZ() * 16; ChunkSnapshot snapshot = source.getChunkSnapshot(); for (int x = 0; x < 16; x++) { for (int z = 0; z < 16; z++) { Biome biome = world.getBiome(x + chunkX, z + chunkZ); if (biome != Biome.TAIGA) { continue; } int y = snapshot.getHighestBlockYAt(x, z); if (source.getBlock(x, y, z).getType() == Material.AIR) { y--; } Block block = source.getBlock(x, y, z); switch (block.getType()) { case WATER: case STATIONARY_WATER: if (block.getData() == 0) { block.setType(Material.ICE); } break; case LAVA: case STATIONARY_LAVA: break; case DIRT: block.setType(Material.GRASS); block.getRelative(BlockFace.UP).setType(Material.SNOW); break; default: block.getRelative(BlockFace.UP).setType(Material.SNOW); break; } } } } }