Custom world generation

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

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.

JSON format

 * : Root object.

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

Carvers
Carvers are used to add carved out regions of biomes, either replaced with air or liquid. They are 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 small decorations that can at most write to a 3x3 chunk area centered on the placement chunk. They're locally placed per chunk and cannot be searched for using commands. Examples are trees, flowers, ore, etc.

Structures
Structures are large decorations that can write to a much larger area than the 3x3 chunks of a feature. They're placed globally and spaced out in a randomized grid (or in concentric rings for strongholds), and can be scanned for and found using. Structures can affect terrain generation.