Custom

Custom is a world type that allow users to change the generation of the Overworld, Nether, and End dimensions as well as the ability to create custom dimensions. It is edited using a JSON file that is imported on the world creation screen.

Access
Custom world generation works using JSON files, which need to be imported before world creation.

In the world creation menu, go to more options and select the "Import World" option. Then, select a world generation JSON file. A screen will pop up, warning users that custom worlds are experimental. Click "Yes" to continue.

The only way to access added dimensions is through commands, such as, which will teleport the player to the specified dimension (see ).

JSON format
Custom generation files take the following format:


 * The root tag.
 * (Boolean): Whether the world has a bonus chest or not (equivalent to the "Bonus chest" option).
 * (Boolean): Whether structures should be generated or not (equivalent to the "Generate structures" option).
 * (integer): The numerical seed of the world.
 * (string): The custom world preset that was used to generate the world when it was an old customized world. Only exists for old customized worlds.
 * A list of the dimensions in this world where the key is the namespace ID of the dimension.
 * A dimension. The dimensions minecraft:overworld, minecraft:the_nether and minecraft:the_end are required for a well functioning world. Any other namespaced ID is allowed for custom dimensions.
 * This can be a list of options for the dimensions or the namespaced ID of one of the default dimensions as a string, the dimensions will the use the settings of the specified dimension. Note: if the same namespace ID of a default dimension is used in multiple dimensions, the game will crash upon generation.
 * (Boolean): Can be true or false. Whether the dimensions behaves like the nether (water evaporates and sponges dry) or not. Also causes lava to spread thinner.
 * (Boolean): Can be true or false. When false, compasses will spin randomly. When true, nether portals can spawn zombified piglins.
 * (Boolean): Can be true or false. Determines whether the dimension is treated as eight meters per block like in the Nether.
 * (Boolean): Can be true or false. Whether the dimension has skylight access or not.
 * (Boolean): Can be true or false. Whether the dimension has a bedrock ceiling or not. When true, causes lava to spread faster.
 * (float): How much light the dimension has, default is 0.5 in the demo file (for upper and lower bounds as well as precise effect).
 * (Boolean or integer; optional): Can be false or any integer from 0 to 24000. If this is set to a number, the time of the day will always be the specified value. However, in at least some worlds, false is interpreted as 0, giving constant sunrise. To ensure a normal time cycle, leave the attribute undefined (i.e, do not include it).
 * (string; optional): Can be FuzzyOffsetConstantColumnBiomeZoomer (used in the Overworld) or FuzzyOffsetBiomeZoomer (used in the nether and the end).
 * (Boolean; optional): Can be true or false. Whether the dimension has an ender dragon boss.
 * : Generation settings used for that dimension.
 * (string): The ID of the generator. minecraft: followed by flat, noise or debug.
 * Other compounds (see below)

Generator types
The format of the compound is dependent on the value of its generator ID, or.

When the generator ID type is minecraft:noise:
 * Generation settings used for the dimension.
 * (string): The ID of the generator (in this case, minecraft:noise).
 * The seed used to generate the dimension. In most cases, this is exactly the same as the world seed, but can be different and the dimension generated will be based upon this seed and not the world seed.
 * 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 bounds (0-255) the roof will not appear. e.g. setting this to 32 will put the top of the roof at y=224. If the bedrock roof is low enough, natural terrain will still generate above it.
 * The y coordinate of the bedrock floor, similar to bedrock_roof_position – setting both floor and roof to 255 will generate 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
 * 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 will spawn at an extremely increased rate in the biomes they naturally spawn in. All structures must be listed for stable generation of non flat world types.
 * (number): Maximum distance between two structures 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 will round off the top of the hills in the affected area, positive values will create a roof. The higher the value is, the larger the effect will be.
 * (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 will remove the floor and round off the bottom of the islands, positive values will make a floor. The higher the value is, the larger the effect will be.
 * (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.
 * (double): Smoothes the noise on the horizontal axis.
 * (double): Scales the Y axis of the noise. Higher values will result in more intricate vertical shapes.
 * (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.
 * Settings dictating which biomes and biome shapes.
 * (integer): The seed used for biome generation. In most cases, this is exactly the same as the dimension seed (and by extension the world seed), but can be different and the biome generation for this dimension will be based upon this seed and not the dimension seed.
 * (string): The type of biome generation. Arguments lie in the biome_source compound. Some possible values for include.
 * vanilla_layered: Default and large biome generation used in the overworld.
 * (Boolean): Whether the biomes are large. True for biomes generation in the "Large Biomes" world type.
 * (Boolean): Whether the world was default_1_1.
 * multi_noise: 3D biome generation used in the nether.
 * (string): A preset of the set of biomes to be used, mutually exclusive with the only valid that's currently supported is minecraft:nether.
 * A list of biomes, including their likelihood.
 * A biome and its properties
 * (string): The biome.
 * Properties of the biome.
 * (float):
 * (float):
 * (float):
 * (float): Affects rain/snow and the color of leaves and grass; see.
 * (float):
 * the_end: Biome generation used in the end with biome minecraft:the_end in the center and other end biomes around.
 * fixed: a single biome.
 * The single biome to generate.
 * checkerboard: A biome generation in which biomes are square (or close to square) and repeat along the diagonals.
 * A list of biomes that repeat along the diagonals (can be more than 3).
 * Determines the size of the squares on an exponential scale.
 * Determines the size of the squares on an exponential scale.

When the generator ID type is minecraft:flat (used for Superflat world generation):
 * Generation settings used for the dimension.
 * (string): The ID of the generator (in this case, minecraft:flat).
 * Superflat settings.
 * Layer settings.
 * A superflat layer. This list is interpreted from top to bottom.
 * The number of blocks in the layer.
 * The block the layer is made of.
 * the single biome of the world
 * Structure settings
 * A structure generated with presets before 20w21a. The compound contains the parameters set in the preset. Does not change anything about structure generation, but is set because of the old preset.
 * 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 . [note: contrary to that of non-flat worlds, if a structure is not listed, it will not generate at all]
 *  spacing : unsure of purpose. when tested on end cities, anything 10 or lower generated 0 structures. (number)
 *  separation : Spacing between structures, unit? (probably chunks), min, max or average? (number)
 *  salt : A number that assists in randomization; see.

When the generator ID type is minecraft:debug (used for Debug world generation):
 * Generation settings used for the dimension.
 * (string): The ID of the generator (in this case, minecraft:debug).

Default settings
The following is the settings for an exported default Minecraft world.

Custom superflat dimension
This dimension is a Superflat world with a layer of grass on four layers of coarse dirt on top of five layers of basalt. The entire world is full of village houses as is set to 3 (default: 32) and  is set to 1 (default: 8). The words starts by default at time 1000.