package net.glowstone.generator.populators.nether;
import net.glowstone.generator.objects.OreType;
import net.glowstone.generator.objects.OreVein;
import org.bukkit.Chunk;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.generator.BlockPopulator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Random;
/**
* Populates the world with ores.
*/
public class OrePopulator extends BlockPopulator {
private final Map<OreType, Integer> ores = new LinkedHashMap<>();
public OrePopulator() {
ores.put(new OreType(Material.QUARTZ_ORE, 10, 118, 13, Material.NETHERRACK), 16);
}
@Override
public void populate(World world, Random random, Chunk chunk) {
final int cx = (chunk.getX() << 4);
final int cz = (chunk.getZ() << 4);
for (Entry<OreType, Integer> entry : ores.entrySet()) {
final OreType oreType = entry.getKey();
for (int n = 0; n < entry.getValue(); n++) {
int sourceX = cx + random.nextInt(16);
int sourceZ = cz + random.nextInt(16);
int sourceY = oreType.getMinY() == oreType.getMaxY() ?
random.nextInt(oreType.getMinY()) + random.nextInt(oreType.getMinY()) :
random.nextInt(oreType.getMaxY() - oreType.getMinY()) + oreType.getMinY();
new OreVein(oreType).generate(world, random, sourceX, sourceY, sourceZ);
}
}
}
}