package net.glowstone.generator.populators;
import net.glowstone.generator.populators.overworld.*;
import org.bukkit.Chunk;
import org.bukkit.World;
import org.bukkit.block.Biome;
import org.bukkit.generator.BlockPopulator;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
public class OverworldPopulator extends BlockPopulator {
private final Map<Biome, BiomePopulator> biomePopulators = new HashMap<>();
public OverworldPopulator() {
registerBiomePopulator(new BiomePopulator()); // defaults applied to all biomes
registerBiomePopulator(new PlainsPopulator());
registerBiomePopulator(new SunflowerPlainsPopulator());
registerBiomePopulator(new ForestPopulator());
registerBiomePopulator(new BirchForestPopulator());
registerBiomePopulator(new BirchForestMountainsPopulator());
registerBiomePopulator(new RoofedForestPopulator());
registerBiomePopulator(new FlowerForestPopulator());
registerBiomePopulator(new DesertPopulator());
registerBiomePopulator(new DesertMountainsPopulator());
registerBiomePopulator(new JunglePopulator());
registerBiomePopulator(new JungleEdgePopulator());
registerBiomePopulator(new SwamplandPopulator());
registerBiomePopulator(new TaigaPopulator());
registerBiomePopulator(new MegaTaigaPopulator());
registerBiomePopulator(new MegaSpruceTaigaPopulator());
registerBiomePopulator(new IcePlainsPopulator());
registerBiomePopulator(new IcePlainsSpikesPopulator());
registerBiomePopulator(new SavannaPopulator());
registerBiomePopulator(new SavannaMountainsPopulator());
registerBiomePopulator(new ExtremeHillsPopulator());
registerBiomePopulator(new ExtremeHillsPlusPopulator());
registerBiomePopulator(new MesaPopulator());
registerBiomePopulator(new MesaForestPopulator());
registerBiomePopulator(new MushroomIslandPopulator());
}
@Override
public void populate(World world, Random random, Chunk chunk) {
final Biome biome = world.getBiome((chunk.getX() << 4) + 8, (chunk.getZ() << 4) + 8);
if (biomePopulators.containsKey(biome)) {
biomePopulators.get(biome).populate(world, random, chunk);
}
}
private void registerBiomePopulator(BiomePopulator populator) {
for (Biome biome : populator.getBiomes()) {
biomePopulators.put(biome, populator);
}
}
}