package net.glowstone.generator.populators.overworld; import net.glowstone.generator.decorators.overworld.MelonDecorator; import net.glowstone.generator.decorators.overworld.TreeDecorator.TreeDecoration; import net.glowstone.generator.objects.trees.BigOakTree; import net.glowstone.generator.objects.trees.CocoaTree; import net.glowstone.generator.objects.trees.JungleBush; import net.glowstone.generator.objects.trees.MegaJungleTree; import net.glowstone.util.BlockStateDelegate; import org.bukkit.Chunk; import org.bukkit.World; import org.bukkit.block.Biome; import org.bukkit.block.Block; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Random; public class JunglePopulator extends BiomePopulator { private static final Biome[] BIOMES = {Biome.JUNGLE, Biome.JUNGLE_HILLS, Biome.JUNGLE_MOUNTAINS}; private static final TreeDecoration[] TREES = {new TreeDecoration(BigOakTree.class, 10), new TreeDecoration(JungleBush.class, 50), new TreeDecoration(MegaJungleTree.class, 15), new TreeDecoration(CocoaTree.class, 30)}; private final MelonDecorator melonDecorator = new MelonDecorator(); public JunglePopulator() { super(); treeDecorator.setAmount(65); treeDecorator.setTrees(TREES); flowerDecorator.setAmount(4); tallGrassDecorator.setAmount(25); tallGrassDecorator.setFernDensity(0.25D); } @Override public Collection<Biome> getBiomes() { return Collections.unmodifiableList(Arrays.asList(BIOMES)); } @Override public void populateOnGround(World world, Random random, Chunk chunk) { int sourceX = (chunk.getX() << 4); int sourceZ = (chunk.getZ() << 4); for (int i = 0; i < 7; i++) { int x = sourceX + random.nextInt(16); int z = sourceZ + random.nextInt(16); int y = world.getHighestBlockYAt(x, z); final Block sourceBlock = world.getBlockAt(x, y, z); final BlockStateDelegate delegate = new BlockStateDelegate(); final JungleBush bush = new JungleBush(random, sourceBlock.getLocation(), delegate); if (bush.generate()) { delegate.updateBlockStates(); } } super.populateOnGround(world, random, chunk); melonDecorator.populate(world, random, chunk); } }