World Builder Configuration
Configure terrain generation presets — flat, procedural surface, cave, and sky island worlds.
A world builder preset is the terrain-generation recipe a world is built from. There are four builder types, each with its own preset file format: FlatWorld (a flat test world), Default (full procedural surface generation), Cave (an underground-only dimension), and SkyIsland (floating islands in a void). A mod can ship any number of named presets per type — the base game ships one preset per type, all named genesis (or super-flat-world for FlatWorld).
This is paired with a World Type Configuration, which controls physics (gravity, day length) separately from terrain.
File Location
Presets are not referenced from your mod’s manifest — they’re loaded by type and name directly from fixed folders:
mods/<YourMod>/world-builders/default/<preset-name>.yaml
mods/<YourMod>/world-builders/flat-world/<preset-name>.yaml
mods/<YourMod>/world-builders/cave/<preset-name>.yaml
mods/<YourMod>/world-builders/sky-island/<preset-name>.yaml
Each file is a single object at the document root (no wrapping list) — its exact shape depends on the builder type, covered in its own section below.
Selecting a Preset
A world’s builder type and preset are chosen when the world is created and stored in that world’s save data as default-world-preset-type (FlatWorld/Default/Cave/SkyIsland) and default-world-preset (the file name, without .yaml). The in-game “Create World” menu only lets a player choose the type; which preset file loads for a given type is currently fixed to genesis (super-flat-world for FlatWorld) rather than mod-selectable through the UI — a mod adding its own preset makes it available for a save file to reference, but a player can’t yet pick it from the new-world screen.
Default World Builder
Full procedural surface generation — the standard overworld. Biomes, terrain layers, caves, ore/structure placement, and static object spawning are all driven by the biomes defined in Biome Terrain Generation; this file only selects which defined biomes are in play and configures world-wide generation systems (caves, fluid bodies, underground features, sky islands).
Full Field Reference
biomes: # Required. At least one must resolve or the whole preset fails to load
- 'plains'
- 'forest'
default-biome: 'plains' # Optional. Used where no other biome matches
cave-generation: true # Optional. Default: true
generate-caves-above-ground: false # Optional. Default: false
cave-layers: # Optional. Which block layers caves carve into
- 1
cave-generator: # Optional. See Cave Generator below
noise-scale: 0.01
smooth-steps: 4
expansion-steps: 1
final-polish: true
min-region-size: 20
fluid-bodies: # Optional. Fluid body placement in caves — see Fluid Bodies
- block: 'water'
min-altitude: -3000
max-altitude: -100
noise-scale: 0.008
noise-threshold: 0.7
aoe-zone-bodies: # Optional. Persistent AoE zone volumes as terrain — see AoE Zone Bodies
- zone: 'updraft'
min-altitude: 40
max-altitude: 220
spacing: 96
spawn-chance: 0.5
global-underground-features: # Optional. Feature names (see Underground Feature Configuration)
- 'glow_cave'
sky-island-features: # Optional. Feature names (see Sky Island Feature Configuration)
- meadow_islands
| Field | Required | Default | Description |
|---|---|---|---|
biomes | Yes | — | Names of already-registered biomes this preset can use. A name that doesn’t resolve is skipped with a warning, not a hard failure — but if none resolve, the whole preset fails to load. |
default-biome | No | (engine fallback) | Biome used where no other biome’s placement rules match. |
cave-generation | No | true | Whether caves are carved at all. |
generate-caves-above-ground | No | false | If false, caves are only carved below the local surface altitude. |
cave-layers | No | (none) | Which block layers (0 = background, 1 = foreground/collision, 2+ = overlay) caves are carved into. |
cave-generator | No | (defaults, see below) | Cave shape algorithm and tuning. |
fluid-bodies | No | (none) | List of fluid body configs (water, lava, etc.) placed in carved cave floors — see Fluid Bodies. An empty or omitted list places none. |
aoe-zone-bodies | No | (none) | List of persistent AoE zone volumes placed as terrain (updraft columns, currents) — see AoE Zone Bodies. An empty or omitted list places none. Default builder only. |
global-underground-features | No | (none) | Names of underground features (scanned from this mod’s underground-features/ folder) that apply everywhere, not just where a biome opts in. |
sky-island-features | No | (none) | Names of sky island features (scanned from this mod’s sky-island-features/ folder) to overlay as floating islands above this preset’s terrain. |
world-floor-y | No | -1000 | World-Y mapped to normalized depth 1.0 (the world floor) for depth-banded ore (see ore config). Depth 0.0 is each column’s own surface altitude, so a surface world needs only this floor. Ores that don’t set min/max-depth-factor ignore it. |
difficulty-gradient | No | (none) | Spawn-anchored difficulty gradient. A map with safe-biome (a biome forced within safe-radius blocks of world origin x=0, for a guaranteed-safe start) and safe-radius (blocks; 0 disables). Beyond the radius, normal biome selection resumes. See Difficulty Gradient. |
Every name field on this page follows the standard rule: a bare name resolves to your own mod, and you only write a OtherMod: prefix for cross-mod references. See Naming & namespacing.
Changed. This used to be inconsistent:
biomes,default-biomeand the flat preset’s own biome key were looked up verbatim, so a bare name never matched anything and every preset had to spell outMod:name;sky-island-featureswas hardcoded to fall back toCreation:, so a third-party mod could not reference its own features without a prefix. Both now namespace to the preset’s own mod. Presets that already write explicit prefixes are unaffected — an explicit prefix is still used as-is.
Cave Generator
A preset’s caves are carved by a cellular automaton seeded from simplex noise. cave-generator says
which algorithm and tunes it:
cave-generator:
type: cellular_automata # Required. The only type a preset's caves accept
noise-scale: 0.01
smooth-steps: 4
| Field | Default | Description |
|---|---|---|
type | (required) | cellular_automata — see the note below on why it’s written out. |
noise-scale | 1.0 | Noise sampling scale — lower values produce larger, smoother caverns; higher values produce noisier, tighter caves. |
smooth-steps | 4 | Number of initial cellular-automata smoothing iterations. |
expansion-steps | 1 | Number of erosion iterations that widen passages. |
final-polish | true | Whether to apply one extra smoothing pass at the end. |
min-region-size | 20 | Cave clusters smaller than this (in blocks) are filled back in as solid. |
noise-threshold | 0.45 | Noise cutoff for the initial wall/open split. |
Renamed, and now carries a
type. This block wascave-grid-options, and an underground feature had a block by the same name that drove a different algorithm — a plain per-block noise threshold with no automaton — while accepting this same key set. Sosmooth-stepsand friends looked valid there and did nothing. Both blocks are nowcave-generatorwith an explicittype, and each type accepts only the keys its algorithm reads:cellular_automatahere,simplex_thresholdon a feature.
region-size-chunksis gone. It was accepted and documented here as sizing a cached grid, and was read by no code at all. It is now rejected as an unknown key.
Fluid Bodies
Each entry seeds a fluid body (e.g. underground lakes, lava pools) into carved cave floors using its
own noise field. A cell qualifies when it is open air with a solid block directly below it (a floor),
sits inside the entry’s [min-altitude, max-altitude] world-Y band, and clears its noise threshold;
the seeded fluid then spreads via flood-fill to fill the cavity after the chunk loads.
Entries are tried in declaration order and the first whose band and noise both match a cell wins, so list deeper/rarer fluids first to build a depth gradient (e.g. lava in a deep band, water in a shallower one).
The same fluid-bodies block is accepted by both the Default and Cave world
builders. In the Cave builder there is no surface, so a cell’s depth is simply its world-Y.
| Field | Required | Default | Description |
|---|---|---|---|
block | Yes | — | The fluid block to place (must already be registered). An entry with an unresolvable block is skipped. |
min-altitude | No | (no lower bound) | Fluid only forms at or above this world-Y. |
max-altitude | No | -100 | Fluid only forms at or below this world-Y. |
noise-scale | No | 0.008 | Noise sampling scale controlling placement. |
noise-threshold | No | 0.7 | Noise cutoff above which fluid forms. |
Renamed from
pools. This block, and itspool-generationon/off switch, were previously namedpools/pool-generation. The switch is gone — an empty or omittedfluid-bodieslist places nothing — and amin-altitudebound was added. Old presets usingpools:/pool-generation:now fail to load on the unknown key; rename the block tofluid-bodies:.
Note: older copies of the shipped
genesis.yamlalso setcave-room-generation,cave-room-generation-x-scale/-y-scale,cave-room-chance,cave-tunnel-generation,cave-tunnel-generation-x-scale/-y-scale, andcave-tunnel-chance. These were leftover from a since-replaced cave generation approach and are not read by any code — they have been removed from the shipped preset. Don’t add them to a new preset; usecave-generatorinstead.
AoE Zone Bodies
Each entry places a persistent AoE zone volume into the world as terrain — an
updraft column, a traversal current, a rest pocket. Placement is a sparse, seed-deterministic grid: along
every spacing-block column, a per-column roll against spawn-chance decides whether a zone is placed,
and its Y is chosen deterministically within [min-altitude, max-altitude]. Because placement is a pure
function of the world seed, the same world always generates the same zones — nothing is written to the
save, and a reloaded world reproduces them exactly.
The named zone must be an AoE zone marked persistent: true (see
Persistent zones); a non-persistent zone would expire the instant
it generated, so it is rejected with a warning. This is currently a Default world builder feature only
(the Cave, Sky Island, and Flat builders place none).
| Field | Required | Default | Description |
|---|---|---|---|
zone | Yes | — | Name of a registered persistent AoE zone to place. A non-persistent or unresolvable zone is skipped with a warning. |
min-altitude | No | (no lower bound) | Placed zones anchor at or above this world-Y. |
max-altitude | No | -100 | Placed zones anchor at or below this world-Y. |
spacing | No | 128 | Blocks between candidate anchor columns. Larger = sparser. |
spawn-chance | No | 0.5 | Probability in [0, 1] that a given candidate column actually places a zone. |
The zone’s own shape and force (from its aoe-zone-config entry) define what the placed volume does
and how big it is — e.g. a tall rectangle with an upward force for a column of rising air. min/max
altitude and spacing/spawn-chance only control where and how often it appears.
Flat World Builder
A minimal flat world, mainly useful for testing. No structures, ores, or static object spawning (trees, etc.) occur — generate-static-objects always returns nothing.
Full Field Reference
default-biome: 'plains' # Required
surface-altitude: 5 # Optional, but omitting it logs a warning (spawn point may be wrong)
altitude-bands: # Required
- min-altitude: 5
max-altitude: 5
block: 'grass'
- min-altitude: 3
max-altitude: 4
block: 'dirt'
- min-altitude: 1
max-altitude: 2
block: 'stone'
background-block: 'stone' # Optional
background-bands: # Optional
- min-altitude: 1
max-altitude: 4
block: 'stone_wall'
standalone-background-bands: # Optional
- min-altitude: 8
max-altitude: 10
block: 'stone_wall'
fluid-bands: # Optional
- min-altitude: -3
max-altitude: -1
block: 'water'
layer: 1
| Field | Required | Default | Description |
|---|---|---|---|
default-biome | Yes | — | The single biome applied to the entire world. Named to match every other preset’s biome-selection key; a flat world has only this one, so it is always the biome used. Missing or unresolvable aborts the whole preset. |
surface-altitude | No | (warns if absent) | The world’s single surface height, used to compute the default player spawn. Qualified rather than a bare altitude so it reads as a position like every other *-altitude in the schema. |
altitude-bands | Yes | — | List of {min-altitude, max-altitude, block} ranges mapping world-Y to a foreground (layer 1) block. See Layer Entries. |
background-block | No | (none) | Fallback block placed on layer 0 (background) everywhere a foreground block exists. |
background-bands | No | (none) | Per-Y-range background blocks, same shape as altitude-bands. Takes priority over background-block for any range it covers. |
standalone-background-bands | No | (none) | Same shape as background-bands, but places unconditionally regardless of whether a foreground block exists — useful for walls behind air gaps. |
fluid-bands | No | (none) | List of {min-altitude, max-altitude, block, layer} ranges. layer defaults to 1. Places fluid only where the position is otherwise unoccupied, and triggers flood fill. |
Layer Entries
Every layer list (altitude-bands, background-bands, standalone-background-bands, fluid-bands) uses the same {min-altitude, max-altitude, block} shape:
max-altitudemust be greater than or equal tomin-altitude(both are world-Y bounds, inclusive).- World-Y
0is always skipped (the zero-crossing boundary) — a range that spans it logs a warning but otherwise proceeds normally around the gap. - A single malformed entry (missing
min-altitude/max-altitude/block) stops processing the rest of that list, so double-check each entry if blocks seem to be missing from one of these layer sets.
Cave World Builder
An underground-only dimension: there is no surface and no above-ground air. Every block starts solid and caves are carved out; the biome itself supplies both the “rock” (fill block) and cave wall/floor/ceiling blocks. Carved caverns can be flooded with fluid bodies (water, lava, etc.) — see Fluid Bodies.
Full Field Reference
biomes: # Required
- 'cave_shallow'
- 'cave_sand'
- 'cave_red_sand'
- 'cave_gravel'
- 'cave_dirt'
- 'cave_deep'
default-biome: 'cave_shallow' # Optional
world-ceiling-y: 0 # Optional — depth 0.0 reference (top of the caves)
world-floor-y: -3000 # Optional — depth 1.0 reference (world floor)
cave-generator: # Optional, same fields as the default builder
noise-scale: 0.007
smooth-steps: 5
expansion-steps: 2
final-polish: true
min-region-size: 25
fluid-bodies: # Optional — floods carved cave floors, see Fluid Bodies
- block: 'water'
min-altitude: -3000
max-altitude: -200
noise-scale: 0.008
noise-threshold: 0.7
global-underground-features: # Optional — the shipped genesis preset omits this
- 'glow_cave'
| Field | Required | Default | Description |
|---|---|---|---|
biomes | Yes | — | Names of already-registered cave biomes. Same per-entry tolerance as the default builder — one bad entry is skipped, but the whole preset fails if none resolve. |
default-biome | No | (engine fallback) | Biome used for cave positions no other biome selection matches. |
world-ceiling-y | No | 0 | World-Y mapped to normalized depth 0.0 (top of the explorable caves). |
world-floor-y | No | -1000 | World-Y mapped to normalized depth 1.0 (the world floor). Cave biome selection gates on this depth axis — a biome’s min/max-depth-factor band only qualifies within its depth range — as does depth-banded ore. Set both to the world’s real vertical extent (the shipped genesis preset uses 0 / -3000); keep world-ceiling-y above world-floor-y. |
difficulty-gradient | No | (none) | Same as the default builder’s field — safe-biome + safe-radius force a safe biome within safe-radius of origin x=0. See Difficulty Gradient. |
fluid-bodies | No | (none) | Same as the default builder’s field — see Fluid Bodies. Floods carved cave floors within each entry’s world-Y band. |
global-underground-features | No | (none) | Same as the default builder’s field — underground features that apply everywhere. |
Cave biome selection uses two domain-warped noise axes (depth and lateral position) rather than the surface builder’s altitude/temperature/precipitation model — this is handled entirely by the engine and isn’t configurable from the preset file.
Lighting note: a cave dimension has no sky, so the only light comes from glowing blocks. The shipped
genesispreset sets noglobal-underground-features, so the only illumination is whatever the biomes bring themselves — currently justCAVE_DEEP, whose fill block isglow_rock. The upper/mid biomes (CAVE_SHALLOW,CAVE_SAND, etc.) have no light source and are dark until the player brings one. If you want lit pockets throughout (as the overworld gets), addglow_cavetoglobal-underground-features.
Sky Island World Builder
A floating-islands dimension: the entire world defaults to empty air, and landmasses only appear where a sky island feature is active.
Full Field Reference
sky-island-features:
- meadow_islands
default-biome: meadow_island
| Field | Required | Default | Description |
|---|---|---|---|
sky-island-features | No | (none) | Names of sky island features, scanned from this mod’s sky-island-features/ folder, that drive all island placement in this dimension. |
default-biome | No | (none — see warning) | Biome used for void (non-island) positions. |
A sky-island-features name without a colon is namespaced to your own mod, like every other reference — so write your own feature names bare (meadow_islands, not YourMod:meadow_islands). Use an explicit Mod:name prefix only to reference another mod’s feature. (This changed: the lookup was once hardcoded to fall back to Creation:, which forced even a mod’s own features to carry a prefix here.)
Spawn note: the first feature in
sky-island-featuresdetermines where the player spawns — the engine looks for a landing spot in the middle of that feature’smin-altitude/max-altitudeband. In the shipped preset, listingmeadow_islands(altitude 80–160) first is what spawns the player on the meadow islands rather than the higherstone_islands(altitude 200–280). If you want players to start in a different band, list that feature first.
Warning:
default-biomemust name a biome actually registered in the biome manager. An empty/placeholder biome produces biome ID0, which the client doesn’t have mapped, showing as “no biome” in-game.
Complete Examples
Based on the real shipped presets.
Default (world-builders/default/genesis.yaml):
biomes:
- 'tropical_ocean'
- 'plains'
- 'mesa'
- 'forest'
- 'cherry_forest'
- 'desert'
- 'snow_tundra'
default-biome: 'cherry_forest'
cave-generation: true
generate-caves-above-ground: false
cave-layers:
- 1
cave-generator:
type: cellular_automata
noise-scale: 0.01
smooth-steps: 4
expansion-steps: 1
final-polish: true
min-region-size: 20
fluid-bodies:
- block: 'water'
max-altitude: -100
noise-scale: 0.008
noise-threshold: 0.7
global-underground-features:
- 'glow_cave'
sky-island-features:
- meadow_islands
- stone_islands
Flat (world-builders/flat-world/super-flat-world.yaml):
default-biome: 'plains'
surface-altitude: 5
altitude-bands:
- min-altitude: 5
max-altitude: 5
block: 'grass'
- min-altitude: 3
max-altitude: 4
block: 'dirt'
- min-altitude: 1
max-altitude: 2
block: 'stone'
Cave (world-builders/cave/genesis.yaml):
biomes:
- 'cave_shallow'
- 'cave_sand'
- 'cave_red_sand'
- 'cave_gravel'
- 'cave_dirt'
- 'cave_deep'
default-biome: 'cave_shallow'
cave-generator:
type: cellular_automata
noise-scale: 0.007
smooth-steps: 5
expansion-steps: 2
final-polish: true
min-region-size: 25
fluid-bodies:
- block: 'water'
min-altitude: -3000
max-altitude: -200
noise-scale: 0.008
noise-threshold: 0.7
Sky Island (world-builders/sky-island/genesis.yaml):
sky-island-features:
- meadow_islands
default-biome: meadow_island
Difficulty Gradient
A spawn-anchored difficulty gradient makes a world start safe and get more dangerous as the player travels outward and digs down. It has two halves that work together, anchored at world origin x=0 (the spawn scan starts at x≈1, so x=0 is effectively the spawn point):
1. Safe start — on the world-builder preset. The difficulty-gradient block forces a safe biome
near the origin:
difficulty-gradient:
safe-biome: heartlands # forced within safe-radius of x=0
safe-radius: 500 # blocks; 0 (or no block) disables
Within safe-radius blocks of x=0, get_biome_at returns safe-biome regardless of the normal
climate (surface) or depth/lateral (cave) selection, so the player always spawns somewhere benign.
Beyond the radius, normal selection resumes. Works on both the Default and Cave builders.
2. Escalation — per mob, in mob config. Two spawn-rules fields gate a mob by
where it may spawn relative to the gradient:
min-distance-from-spawn— the mob only spawns at least this many blocks from x=0 (danger rises as you move outward).min-depth-factor— the mob only spawns where the normalized within-world depth (0.0at the top,1.0atworld-floor-y) is at least this (danger rises as you dig).
Give your early mobs no gate (they spawn everywhere, including the safe start) and your dangerous mobs
a min-distance-from-spawn and/or min-depth-factor, and threat climbs with distance and depth while
the spawn region stays survivable.
Last updated