Skip to content

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.

The generator needs noise settings, and there are two ways to supply them:

  • By reference: pass a ResourceKey pointing at an existing settings entry, such as minecraft:overworld, minecraft:the_nether, or minecraft:end.
  • Authored: pass a NoiseGeneratorSettings, which bundles a NoiseRouter (see the Noise Routers page) together with the rest of the generator’s configuration.
ExamplePlugin.java Java
import dev.wyck.model.biome.CustomBiome;
import dev.wyck.keys.ResourceKey;
import dev.wyck.model.level.LevelCreator;
import dev.wyck.wrapper.level.BiomeSource;
import dev.wyck.wrapper.level.noise.Noise;
import dev.wyck.wrapper.level.noise.chunk.ChunkGenerator;
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 = ChunkGenerator.of(
          BiomeSource.fixed(biome),
          Noise.floatingIslands()
      );

      World world = LevelCreator.builder()
          .levelKey(ResourceKey.of("test", "example"))
          .generator(generator)
          .create(); // Done!
  }
}