Custom

From Minecraft Wiki
Jump to: navigation, search
Iron Pickaxe JE2 BE2.png
This page is a work in progress.
Please help in the creation of this article by expanding or improving this page.
The talk page may contain suggestions.
Information icon.svg
This feature is exclusive to Java Edition.

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[edit]

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 /execute in <dimension name> run tp @s ~ ~ ~, which will teleport the player to the specified dimension (see § JSON format).

JSON format[edit]

This section is a stub, meaning that it lacks some important information. You can help by expanding it with further information relating to the topic.
Reason: Needs explanation on each component of the JSON file. Useful sources: [1], [2]

Custom generation files take the following format:

  • The root tag.
    •  bonus_chest (Boolean): Whether the world has a bonus chest or not (equivalent to the "Bonus chest" option).
    •  generate_features (Boolean): Whether structures should be generated or not (equivalent to the "Generate structures" option).
    •  seed (integer): The numerical seed of the world.
    •  legacy_custom_options (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.
    •  dimensions: 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.
        •  generator: Generation settings used for that dimension.
          •  type (string): The ID of the generator. minecraft: followed by flat, noise or debug.
          • Other compounds (see below)'
        •  type: 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.
          •  name: The resource location used for the dimension type. Required only when importing world settings.
          •  ultrawarm: Whether the dimensions behaves like the nether (water evaporates and sponges dry) or not. Also causes lava to spread thinner.
          •  natural: When false, compasses will spin randomly. When true, nether portals can spawn zombified piglins.
          •  shrunk: Determines whether the dimension is treated as eight meters per block like in the Nether.[needs testing]
          •  has_skylight: Whether the dimension has skylight access or not.
          •  has_ceiling: Whether the dimension has a bedrock ceiling or not. When true, causes lava to spread faster.
          •  ambient_light: How much light the dimension has, default is 0.5 in the demo file (for upper and lower bounds as well as precise effect[needs testing]).
          •  fixed_time (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,[needs testing] false is interpreted as 0, giving constant sunrise. To ensure a normal time cycle, leave the attribute undefined (i.e, do not include it).
          •  piglin_safe: Whether piglins will shake and transform to zombified piglins
          •  bed_works: Whether players can use a bed to sleep.
          •  respawn_anchor_works: Whether players can charge and use respawn anchors.
          •  has_raids: Whether players with the Bad Omen effect can cause a raid.
          •  logical_height: The maximum height to which chorus fruits and nether portals can bring players within this dimension. This excludes portals that were already built above the limit as they still connect normally.[needs testing]
          •  infiniburn: A resource location defining what block tag to use for infiniburn.[needs testing]

Generator types[edit]

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

When the generator ID type is minecraft:noise:

  •  generator: Generation settings used for the dimension.
    •  type (string): The ID of the generator (in this case, minecraft:noise).
    •  seed: 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.[needs testing]
    •  settings: 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 settings object can be set to to load default settings include minecraft:overworld for normal Overworld generation, minecraft:amplified for Amplified Overworld generation, minecraft:nether for regular Nether generation, minecraft:caves for Nether-like generation but with Overworld terrain features, minecraft:end to generate the main End island, and minecraft:floating_islands for End floating islands generation.
      •  bedrock_roof_position: The distance from the world height for the top coordinate of the bedrock roof, if out of bounds (0-255) the roof does not appear. 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. [needs testing]
      •  bedrock_floor_position: 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. [needs testing]
      •  sea_level: The sea level in this dimension between 0 and 255
      •  disable_mob_generation: Can be true or false. [needs testing]
      •  structures: Structure settings
        •  stronghold: Settings for how strongholds should be spawned. The stronghold values under the structures tag appear to be placeholders so that every namespaced structure has a value; these values are the ones that actually control stronghold spawning.
        •  structures: List of structures to use in this dimension
          •  <namespaced id>: The key for this field should be the namespaced ID of a structure, a list is available at Java Edition data value § Structures. 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. All structures must be listed for stable generation of non flat world types.
            •  spacing (number): Average distance between two structure placement attempts of this type in chunks[note 1].
            •  separation (number): Minimum distance between two structures of this type in chunks; must be less than spacing.
            •  salt (integer):[needs testing] A number that assists in randomization; see salt (cryptography).
      •  noise: Parameters for world generation.
        •  top_slide: Settings for the curve at the top of the world.
          •  target (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.
          •  size (integer): Defines the size of the affected area from the top of the world. size is calculated using the formula size = <height in blocks> * 0.25 / size_vertical.
          •  offset (integer): Moves the affected area from the top of the world. offset uses the same formula as size so offset = <height in blocks> * 0.25 / size_vertical. For top_slide, positive values move the area down and negative values bring it up.
        •  bottom_slide: Settings for the curve at the bottom of the world.
          •  target (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.
          •  size (integer): Defines the size of the affected area from the bottom of the world. Uses the same formula as in top_slide.
          •  offset (integer): Moves the affected area from the bottom of the world. Uses the same formula as in top_slide. For bottom_slide, positive values move the area up and negative values bring it down.
        •  sampling: [needs testing]
          •  xz_scale (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.
          •  xz_factor (double): Smoothes the noise on the horizontal axis.
          •  y_scale (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.
          •  y_factor (double): Smoothes the noise on the vertical axis.
        •  size_vertical (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+.[needs testing]
        •  size_horizontal (integer): Changes the X/Z scale of the landmass, but not the biomes.[needs testing]
        •  height (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.[needs testing]
        •  density_factor (double):[needs testing]
        •  density_offset (double; values between -1 and 1): Affects the average land level (not sea level).[needs testing]
        •  random_density_offset (boolean; optional):[needs testing]
        •  simplex_surface_noise (boolean):[needs testing]
        •  island_noise_override (boolean; optional): Causes the world to generate like The End with a big island in the center and smaller ones around.
        •  amplified (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).
      •  default_block: The block that appears below the top blocks of the world; see Java Edition data values § Blocks
        •  Name: ID of the block
        •  Properties: Block states
          •  state (string): A block state key and its value.
      •  default_fluid: The block used for seas and lakes; see Java Edition data values § Fluids.
        •  Name (string): ID of the block
        •  Properties: Block states
          •  state (string): A block state key and its value.
    •  biome_source: Settings dictating which biomes and biome shapes.
      •  seed (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.[needs testing]
      •  type (string): The type of biome generation. Arguments lie in the biome_source compound. Some possible values for type include minecraft:vanilla_layered, minecraft:fixed, minecraft:checkerboard, minecraft:multi_noise, and minecraft:the_end.[more information needed]
        • vanilla_layered: Default and large biome generation used in the overworld.
          •  large_biomes (Boolean): Whether the biomes are large. True for biomes generation in the "Large Biomes" world type.
          •  legacy_biome_init_layer (Boolean): Whether the world was default_1_1.[needs testing]
        • multi_noise: 3D biome generation used in the nether.[needs testing]
          •  preset (string): A preset of the set of biomes to be used, mutually exclusive with  biomes[needs testing] the only valid that's currently supported is minecraft:nether.
          •  biomes: A list of biomes, including their likelihood.
            • : A biome and its properties
              •  biome (string): The biome.
              •  parameters: 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 will choose to place biomes.
                •  altitude (float): Used to place similar biomes near each other.[needs testing]
                •  weirdness (float): Used to place similar biomes near each other.[needs testing]
                •  offset (float):[needs testing]
                •  temperature (float): 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.
                •  humidity (float): Used to place similar biomes near each other.[needs testing]
        • the_end: Biome generation used in the end with biome minecraft:the_end in the center and other end biomes around.[needs testing]
        • fixed: a single biome.
          •  biome: The single biome to generate.
        • checkerboard: A biome generation in which biomes are square (or close to square) and repeat along the diagonals.
          •  biomes: A list of biomes that repeat along the diagonals (can be more than 3).
          •  scale: Determines the size of the squares on an exponential scale.

When the generator ID type is minecraft:flat (used for Superflat world generation):

  •  generator: Generation settings used for the dimension.
    •  type (string): The ID of the generator (in this case, minecraft:flat).
    •  settings: Superflat settings.
      •  layers: Layer settings.
        • : A superflat layer. This list is interpreted from top to bottom.
          •  height: The number of blocks in the layer.
          •  block: The block the layer is made of.
      •  biome: the single biome of the world
      •  lakes (optional): Whether or not to generate lakes. If set to true, then water and lava lakes will generate extremely often even in biomes where lakes don't normally generate. Lava lakes generate surrounded by different types of stone and ores from the overworld.
      •  features (optional): Whether or not to generate biome-specific decorations like trees, grass, flowers, cacti, etc.
      •  structures: Structure settings
        •  stronghold: Settings for how strongholds should be spawned. The stronghold values under the structures tag appear to be placeholders so that every namespaced structure has a value; these values are the ones that actually control stronghold spawning.
        •  structures: List of structures to use in this dimension
          •  <namespaced id>: The key for this field should be the namespaced ID of a structure, a list is available at Java Edition data value § Structures. If structures are not listed, it will not be generated, unlike with non-flat worlds.
            •  spacing (number): Average distance between two structure placement attempts of this type in chunks[note 2].
            •  separation (number): Minimum distance between two structures of this type in chunks; must be less than spacing.
            •  salt (integer):[needs testing] A number that assists in randomization; see salt (cryptography).

When the generator ID type is minecraft:debug (used for Debug world generation):

  •  generator: Generation settings used for the dimension.
    •  type (string): The ID of the generator (in this case, minecraft:debug).


Defaults[edit]

Noise generator preset defaults[edit]

These are the settings used by the 6 presets available for the minecraft:noise generator.

Property minecraft:overworld minecraft:amplified minecraft:nether minecraft:caves minecraft:end minecraft:floating_islands
bedrock_roof_position -10 0 -10
bedrock_floor_position 0 0 -10
sea_level 63 32 0
disable_mob_generation false false true false
default_block minecraft:stone minecraft:netherrack minecraft:stone minecraft:end_stone minecraft:stone
default_fluid minecraft:water minecraft:lava minecraft:water minecraft:air minecraft:water
structures stronghold distance 32 Tag not included Tag not included
count 1
spread 3
structures See below
noise top_slide target -10 120 -3000
size 3 3 64
offset 0 0 -46
bottom_slide target -30 320 -30
size 0 4 7
offset 0 -1 1
sampling xz_scale 0.9999999814507745 1 2
xz_factor 80 80 80
y_scale 0.9999999814507745 3 1
y_factor 160 60 160
size_vertical 2 2 1
size_horizontal 1 1 2
height 256 128 128
density_factor 1 0 0
density_offset -0.46875 0.019921875 0
random_density_offset true false false
simplex_surface_noise true false true
island_noise_override false false true false
amplified false true false false

Structure defaults[edit]

These are the default values for all namespaced structures. Every preset uses the same values for all of these structures, with the exception of minecraft:ruined_portal.

Structure Spacing Separation Salt
village 32 8 10387312
desert_pyramid 32 8 14357617
igloo 32 8 14357618
jungle_pyramid 32 8 14357619
swamp_hut 32 8 14357620
pillager_outpost 32 8 165745296
stronghold* 1 0 0
monument 32 5 10387313
endcity 20 11 10387313
mansion 80 20 10387319
buried_treasure** 1 0 0
mineshaft** 1 0 0
ruined_portal nether and caves 25 10 34222645
All other presets 40 15 34222645
shipwreck 24 4 165745295
ocean_ruin 20 8 14357621
bastion_remnant 27 4 30084232
fortress 27 4 30084232
nether_fossil 2 1 14357921

*Placeholder values, have no effect

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

Biome parameter defaults[edit]

These are the default values used for each biome in the multi_noise biome_source. Interestingly, although only the values for nether biomes are accessible through a preset, several overworld biomes have default values as well.

Biome Temperature Humidity Altitude Weirdness Offset
badlands -0.25 -0.5 0.5 0.2 1
badlands_plateau -0.25 -0.5 0.65 0.2 1
bamboo_jungle 0.5 0.5 0 0.2 1
bamboo_jungle_hills 0.5 0.5 0.25 0.2 1
basalt_deltas -0.5 0 0 0 0.175
beach 0 0 -0.1 0 0.9935
birch_forest -0.1 0.2 0 0 1
birch_forest_hills -0.1 0.2 0.25 0 1
crimson_forest 0.4 0 0 0 0
desert 0.5 -0.5 0 0 1
jungle 0.5 0.5 0 0 1
nether_wastes 0 0 0 0 0
ocean 0 0 -0.5 0 1
plains 0 0 0 0 1
snowy_tundra -0.5 -0.5 0 0 1
soul_sand_valley 0 -0.5 0 0 0
warm_ocean 0 0 -0.25 0 1
warped_forest 0 0.5 0 0 0.375

Type defaults[edit]

These are the settings used by the 3 dimensions present in Vanilla.

Property Overworld The Nether The End
ultrawarm false true false
natural true false false
shrunk false true false
piglin_safe false true false
respawn_anchor_works false true false
bed_works true false false
has_raids true false true
has_skylight true false false
has_ceiling false true false
fixed_time N/A 18000 6000
ambient_light 0.0 0.1 0.0
logical_height 256 128 256
infiniburn minecraft:infiniburn_overworld minecraft:infiniburn_nether minecraft:infiniburn_end

Examples[edit]

This section is a stub, meaning that it lacks some important information. You can help by expanding it with further information relating to the topic.
Reason: Add more examples. Also add the actual info for what the default generator uses.

Default settings[edit]

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

Expanded default settings[edit]

This file contains the same settings used to produce a default world, but with all of the presets expanded to their default values. Note that there is a bug which makes it impossible to create the Ender Dragon fight without using the dimension type preset minecraft:the_end, as the flag that creates the fight is hardcoded and not accessible through JSON. However, it is otherwise identical to the default world.

Custom superflat dimension[edit]

An overview of a world made with the adjacent settings.

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 spacing is set to 3 (default: 32) and separation is set to 1 (default: 8). The words starts by default at time 1000.

History[edit]

Java Edition
1.1620w21aAdded custom worlds.
Custom worlds are JSON-driven.
Custom dimensions can be added and vanilla dimensions can be modified.
There is currently no in-game menu to modify worlds; custom worlds can only be generated by importing a JSON file.
pre1The "temparature" biome parameter is now spelled "temperature".
Dimensions and dimension settings can be created through data packs.

Issues[edit]

Issues relating to "Custom" are maintained on the bug tracker. Report issues there.

External links[edit]


  1. 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.
  2. 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.