Custom world generation

Custom world generation allows data packs to change how the world generates. This is particularly useful in conjunction with custom worlds.

Noise settings
Noise settings are for generating the shape of the terrain, stored as JSON files within a data pack in the path, and are used with the generator in the  folder. Default settings include for normal Overworld generation,  for Amplified Overworld generation,  for regular Nether generation,  for Cave (Nether-like generation but with Overworld terrain features) generation,  for regular End generation, and  for Floating Islands (similar to The End outer islands) generation.

Default settings
These are the settings used by the 6 presets available for the  generator.

Structure defaults
These are the default values for all namespaced structures. Every preset uses the same values for all of these structures, with the exception of. *Placeholder values, have no effect

**Salt values aren't used for theses structures; changing them produces no effect

Biome
Biomes stored as JSON files within a data pack in the path.

Biome categories
Biome categories are used by several game mechanics:


 * Any biomes in the category  are considered part of the ocean temperature category; other temperature categories are controlled by the biome's temperature value. This means that biomes in the   category should typically be placed near each other.
 * Biomes in the categories  and   play the underwater music instead of their normal music when the player is underwater.
 * Zombie sieges and patrols do not spawn in biomes in the category.
 * Rabbits spawning in biomes in the category  always have the desert skin, unless they are in a biome with   set to.
 * Mobs in the  category spawn much less often in biomes in the category.
 * Ocean monuments do not spawn in any biome which isn't in the category  or.

Carvers
Carvers are used to add carved out regions of biomes, either replaced with air or liquid. They stored as JSON files within a data pack in the path.

Whether it is possible to configure the "ocean" layer of carvers (for example the lava that appears below y=10 in Overworld caves) is unknown.

Surface builders
Surface builders control how the surface of the terrain is shaped and what blocks it is generated with. They are stored as JSON files within a data pack in the path.

Features
Features are unique elements of the world like trees, flowers, ore, etc. They stored as JSON files within a data pack in the path.

JSON format
When another configured feature is required inside the settings, it can either be provided with a string tag as the namespaced id of another configured feature, or with a compound tag as a nested definition.

Data types
The JSON format makes use of these relatively complex data types many times, so to avoid filling the main JSON format tree with too much redundant information, they are provided here:

Feature types
These are all of the valid types which can be used for configured features:



Decorators
Decorators are used to modify the generation of features in various ways. They are applied from the outermost decorator to the innermost.

Decorator types
These are all of the valid types which can be used for configured decorators:



Structure features
Structure features are a special type of feature that generates a structure, stored as JSON files within a data pack in the path. The logic behind what qualifies as a structure feature versus a regular feature is unclear. Dungeons and Desert wells are typically considered structures, but are not structure features. Also, Nether Fossils are structure features while Fossils are not even though they are essentially the same feature.

Structure feature types
These are all of the valid types which can be used for structure features:



Jigsaw pools
Jigsaw pools or template pools are used to generate structures using jigsaw blocks, stored as JSON files within a data pack in the path.

Processor lists
Processor lists are lists of processors used to affect blocks in structures, stored as JSON files within a data pack in the path.