Custom world generation

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

JSON format

 * The noise settings for generating the shape of the terrain. Can be set to a string to use a preset or a compound with a list of customized options. The string values the object can be set to to load default settings include  for normal Overworld generation,  for Amplified Overworld generation,  for regular Nether generation,  for Nether-like generation but with Overworld terrain features,  to generate the main End island, and  for End floating islands generation.
 * The distance from the world height for the top coordinate of the bedrock roof, if out of world bounds (0-255) the roof does not appear, example: "-1". e.g. setting this to 32 puts the top of the roof at y=224. If the bedrock roof is low enough, natural terrain still generates above it.
 * The y coordinate of the bedrock floor, similar to bedrock_roof_position – setting both floor and roof to 255 generates a single layer of flat bedrock for each of them.
 * The sea level in this dimension between 0 and 255
 * Can be true or false.
 * Structure settings
 * Settings for how strongholds should be spawned. The stronghold values under the  tag appear to be placeholders so that every namespaced structure has a value; these values are the ones that actually control stronghold spawning.
 * Controls how far apart the strongholds are.
 * How many strongholds to generate.
 * List of structures to use in this dimension
 * The key for this field should be the namespaced ID of a structure, a list is available at . If structures are not listed, the default structures from the dimension specified in biome_source > type spawn at an extremely increased rate in the biomes they naturally spawn in.
 * (number): Average distance between two structure placement attempts of this type in chunks.
 * (number): Minimum distance between two structures of this type in chunks; must be less than.
 * (integer): A number that assists in randomization; see.
 * Parameters for world generation.
 * Settings for the curve at the top of the world.
 * (integer): The value of the curve. Negative values round off the top of the hills in the affected area, positive values create a roof. Higher values produce larger effects.
 * (integer): Defines the size of the affected area from the top of the world.  is calculated using the formula.
 * (integer): Moves the affected area from the top of the world.  uses the same formula as   so  . For , positive values move the area down and negative values bring it up.
 * Settings for the curve at the bottom of the world.
 * (integer): The value of the curve. Negative values remove the floor and round off the bottom of the islands, positive values make a floor. Higher values produce larger effects.
 * (integer): Defines the size of the affected area from the bottom of the world. Uses the same formula as in.
 * (integer): Moves the affected area from the bottom of the world. Uses the same formula as in . For , positive values move the area up and negative values bring it down.
 * (double): Scales the X and Z axis of the noise. Higher values results in more intricate horizontal shapes. Works similarly to coordinate scale from old customized worlds.
 * (double): Smoothes the noise on the horizontal axis.
 * (double): Scales the Y axis of the noise. Higher values result in more intricate vertical shapes. Works similarly to height scale from old customized worlds.
 * (double): Smoothes the noise on the vertical axis.
 * (integer): Changes the Y scale of the landmass. Values between 1 and 15 gradually increase the hill height, above 20 are all above the normal sea level of 63, and higher than 32 give normal land levels of 100+.
 * (integer): Changes the X/Z scale of the landmass, but not the biomes.
 * (integer): Changes the max height of generated terrain by squashing the world. For example, with height=128, the ground is set to Y=32. this does not affect sea level.
 * (double):
 * (double; values between -1 and 1): Affects the average land level (not sea level).
 * (boolean; optional):
 * (boolean):
 * (boolean; optional): Causes the world to generate like The End with a big island in the center and smaller ones around.
 * (boolean; optional): Toggles between amplified and normal terrain generation. Can be used alongside large biomes in `vanilla_layered` types, and in any dimension (Nether, End, and custom).
 * The block that appears below the top blocks of the world; see
 * ID of the block
 * Block states
 * (string): A block state key and its value.
 * The block used for seas and lakes; see.
 * (string): ID of the block
 * Block states
 * (string): A block state key and its value.
 * Block states
 * (string): A block state key and its value.

Default settings
These are the names of the default settings which can be used for noise settings:



Biome categories
Biome categories are used by several game mechanics:


 * Any biomes in the category  will be 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   will play the underwater music instead of their normal music when the player is underwater.
 * Zombie sieges and patrols will not spawn in biomes in the category.
 * Rabbits spawning in biomes in the category  will 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 will 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.

Surface builders
Surface builders control how the surface of the terrain is shaped and what blocks it is generated with.

Features
Features are unique elements of the world like trees, flowers, ore, etc.

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 names
These are all of the valid names which can be used for configured features:



Decorators
Decorators are used to modify the generation of features in various ways.

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



Structure features
Structure features are a special type of feature that generates a structure. 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 names
These are all of the valid names which can be used for structure features:



Jigsaw pools
Jigsaw pools or template pools are used to generate structures using jigsaw blocks