Custom dimension

Dimensions are JSON files located in data packs that define new dimensions for the game. These dimensions can be accessed with. Any dimensions are loaded once the world is opened, not on reload; so any change or addition to the file require the world to be restarted to apply, and not just running.

Usage
New dimensions are stored as JSON files within a data pack, at the path.

Dimension syntax

 * The root tag.
 * : The namespaced ID of the dimension type. Can be preset, , , , or a custom dimension type (configure via JSON files, see dimension type section).
 * : 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 is based upon this seed and not the world seed.
 * The noise settings used in the terrain generator. Can be set to a string to use a preset defined in the folder with a list of customized options. See Custom world generation for more information.
 * 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 is based upon this seed and not the dimension seed.
 * (List): A list of biome IDs to generate.
 * (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.
 * A preset of the set of biomes to be used, mutually exclusive with . The only value that's currently supported is minecraft:nether.
 * A list of biomes, including their likelihood.
 * A biome and its properties
 * The biome. May be repeated several times.
 * Represent optimal conditions for where the biome should be placed. These values do not affect the generation of terrain within biomes; they affect where the game chooses to place biomes. altitude, erosion, depth, weirdness, temperature, humidity and continentalness are each represented in a distinct contoured map generated by the seed. At any specific point, the biome having parameters most closely resembling the respective parameter on each noise map at that point is chosen. For example, if the point were to have values of -1 temperature, 0.2 humidity, 0.5 altitude and 0 weirdness then birch_forest_hills (-0.1t,0.2h,0.25a,0w) would be chosen over desert (0.5t,-0.5h,0a,0w).
 * Used to place similar biomes near each other. Range: (-2.0 to 2.0).
 * Used to place similar biomes near each other.
 * Used to place similar biomes near each other.
 * Defines how weird the biome is going to appear next to other biomes. Range: (-2.0 to 2.0).
 * Range: (0.0 to 1.0). Similar to the other parameters but offset is 0 everywhere, thus setting this parameter nearer to 0 gives the biome a greater edge over others, all else being equal.
 * Used to place similar biomes near each other. This is NOT the same as the temperature value listed on Biome, it does NOT affect rain/snow or the color of leaves and grass. Range: (-2.0 to 2.0).
 * Used to place similar biomes near each other. Range: (-2.0 to 2.0).
 * Used to place similar biomes near each other.
 * Similar to, but for the altitude parameter.
 * An amplitude.
 * Same as, but for the weirdness parameter.
 * An amplitude.
 * How the Perlin noise for the contineltalness parameter is generated in the world.
 * The octave the first amplitude in the list is associated with. Lower values make the whole amplitudes sequence affect lower frequencies (smoother). Incrementing it by 1 doubles the frequency of the base octave. At -9, the first octave's period is around 4000 blocks; at -8, it is around 2000 blocks and so on.
 * The amplitudes of consecutive octaves. Octaves further down the list have higher frequencies (double at each step). Higher octaves have intrisically lower amplitudes in Perlin noise. This list further modifies the amplitudes by making low/high frequency features more or less pronounced. The resultant Perlin noise value at a certain coordinate is not just a simple sum of the independent components.
 * An amplitude. Setting one to 0 effectively disables that frequency component.
 * Same as, but for the erosion parameter.
 * An amplitude.
 * Same as, but for the temperature parameter.
 * An amplitude.
 * Same as, but for the humidity parameter.
 * An amplitude.
 * 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. Range: (0 to 62).
 * An amplitude.
 * Same as, but for the humidity parameter.
 * An amplitude.
 * 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. Range: (0 to 62).
 * 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. Range: (0 to 62).


 * 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. Setting this to a number does not mean one structure is generated this often, only that the game attempts to generate one; biomes or terrain could lead to the structure not being generated. The maximum distance of structure placement attempts is 2*spacing - separation.
 * (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.

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. The first entry is the bottom layer, the last entry is the top layer..
 * The number of blocks in the layer.
 * The block the layer is made of.
 * the single biome of the world
 * (optional): Whether or not to generate lakes. If set to true, then water and lava lakes generate often even in biomes where lakes don't normally generate. Lava lakes generate surrounded by different types of stone and ores from the overworld.
 * (optional): Whether or not to generate biome-specific decorations like trees, grass, flowers, cacti, etc.
 * 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, it does not generate.
 * (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.
 * (integer): 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).

Dimension type
Dimension types are stored as JSON files within a data pack, at the path.

Syntax

 * The root