Chunk Generators
A ChunkGenerator is
what a dimension’s level stem uses to generate chunks. It combines a BiomeSource,
which decides which biome occupies each region, along with a set of noise settings which decide how terrain is
shaped and which blocks fill to the world with.
Noise Settings
Section titled “Noise Settings”The generator needs noise settings, and there are two ways to supply them:
- By reference: pass a
ResourceKeypointing at an existing settings entry, such asminecraft:overworld,minecraft:the_nether, orminecraft:end. - Authored: pass a
NoiseGeneratorSettings, which bundles aNoiseRouter(see the Noise Routers page) together with the rest of the generator’s configuration.
Example Usage
Section titled “Example Usage”import dev.wyck.biome.CustomBiome;
import dev.wyck.keys.ResourceKey;
import dev.wyck.level.LevelCreator;
import dev.wyck.worldgen.biome.BiomeSource;
import dev.wyck.worldgen.noise.Noise;
import dev.wyck.worldgen.chunk.ChunkGenerator;
import dev.wyck.worldgen.chunk.NoiseBasedChunkGenerator;
import org.bukkit.World;
import org.bukkit.plugin.java.JavaPlugin;
public class ExamplePlugin extends JavaPlugin {
@Override
public void onEnable() {
CustomBiome biome = CustomBiome.builder()
.resourceKey(ResourceKey.of("test", "biome"))
.fogColor("#DB00FD")
.skyColor("#2F46FF")
.waterColor("#00FFD0")
.grassColor("#D1D13A")
.foliageColor("#FF6A00")
.register();
// Floating islands with a single fixed custom biome
ChunkGenerator generator = NoiseBasedChunkGenerator.of(
BiomeSource.fixed(biome),
Noise.floatingIslands()
);
World world = LevelCreator.builder()
.levelKey(ResourceKey.of("test", "example"))
.generator(generator)
.create(); // Done!
}
} Flat Generators
Section titled “Flat Generators”A flat generator stacks fixed layers of blocks instead of shaping terrain with noise. Its layers, biome, decorations,
and lakes are described by a FlatLevelGeneratorSettings.
The interface ships the vanilla presets: CLASSIC_FLAT, TUNNELERS_DREAM, WATER_WORLD, OVERWORLD,
SNOWY_KINGDOM, DESERT, and more… Or you can just author your own with the builder.
Build the generator with ChunkGenerator.flat().
import dev.wyck.keys.ResourceKey;
import dev.wyck.level.LevelCreator;
import dev.wyck.worldgen.biome.BiomeSource;
import dev.wyck.worldgen.chunk.ChunkGenerator;
import dev.wyck.worldgen.chunk.flat.FlatLevelGeneratorSettings;
import dev.wyck.biome.Biomes;
import org.bukkit.Material;
import org.bukkit.plugin.java.JavaPlugin;
public class ExamplePlugin extends JavaPlugin {
@Override
public void onEnable() {
// Author custom layers from the bottom up.
FlatLevelGeneratorSettings settings = FlatLevelGeneratorSettings.builder()
.layer(Material.BEDROCK, 1)
.layer(Material.STONE, 32)
.layer(Material.DIRT, 3)
.layer(Material.GRASS_BLOCK, 1)
.biome(Biomes.PLAINS)
.decoration(true) // run features (trees, grass, ores, ...)
.addLakes(true)
.build();
// ...or reuse a vanilla preset: FlatLevelGeneratorSettings.CLASSIC_FLAT
ChunkGenerator generator = ChunkGenerator.flat()
.settings(settings)
.build();
LevelCreator.builder()
.levelKey(ResourceKey.of("test", "superflat"))
.generator(generator)
.create();
}
}