package net.glowstone.generator.populators.overworld; import net.glowstone.constants.GlowBiomeClimate; import org.bukkit.Chunk; import org.bukkit.Material; import org.bukkit.World; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.generator.BlockPopulator; import java.util.Random; public class SnowPopulator extends BlockPopulator { @Override public void populate(World world, Random random, Chunk source) { int sourceX = source.getX() << 4; int sourceZ = source.getZ() << 4; for (int x = sourceX; x < sourceX + 16; x++) { for (int z = sourceZ; z < sourceZ + 16; z++) { int y = world.getHighestBlockYAt(x, z) - 1; if (GlowBiomeClimate.isSnowy(world.getBiome(x, z), sourceX + x, y, sourceZ + z)) { final Block block = world.getBlockAt(x, y, z); final Block blockAbove = block.getRelative(BlockFace.UP); switch (block.getType()) { case WATER: case STATIONARY_WATER: case SNOW: case ICE: case PACKED_ICE: case YELLOW_FLOWER: case RED_ROSE: case LONG_GRASS: case DOUBLE_PLANT: case SUGAR_CANE: case LAVA: case STATIONARY_LAVA: break; case DIRT: block.setType(Material.GRASS); if (blockAbove.isEmpty()) { blockAbove.setType(Material.SNOW); } break; default: if (blockAbove.isEmpty()) { blockAbove.setType(Material.SNOW); } break; } } } } } }