Biome definition

From Minecraft Wiki
(Redirected from Biomes/JSON format)
Jump to navigation Jump to search
For biome customization in resource packs in Bedrock Edition, see Resource pack § Biomes.

Biomes are stored as JSON files within a data pack in the path data/<namespace>/worldgen/biome in Java Edition or in a behavior pack in the folder <behavior pack>/biomes in Bedrock Edition.

JSON format

[edit | edit source]

Java Edition

[edit | edit source]
  • [NBT Compound / JSON Object]: The root object.
    • [Boolean] has_precipitation: Determines whether or not the biome has precipitation.
    • [Float] temperature: Controls gameplay features like grass and foliage color, and a height adjusted temperature (which controls whether raining or snowing occurs if [Boolean] has_precipitation is true, and generation details of some features).
    • [String] temperature_modifier: (optional, defaults to none) Either none or frozen. Modifies temperature before calculating the height adjusted temperature. If frozen, makes some places' temperature high enough to rain (0.2).
    • [Float] downfall: Controls grass and foliage color.
    • [NBT Compound / JSON Object] effects: Ambient effects in this biome.
      • [Int] water_color: (Required, but the normal value is 4159204) Decimal value converted from Hex color to use for water blocks and cauldrons.
      • [Int] foliage_color: (optional) Decimal value converted from Hex color to use for tree leaves and vines. If not present, the value depends on downfall and the temperature.
      • [Int] dry_foliage_color: (optional) Decimal value converted from Hex color to use for leaf litter.
      • [Int] grass_color: (optional) Decimal value converted from Hex color to use for grass blocks, short grass, tall grass, ferns, tall ferns, and sugar cane. If not present, the value depends on downfall and temperature.
      • [String] grass_color_modifier: (optional, defaults to none) Can be none, dark_forest or swamp.
    • [NBT Compound / JSON Object] attributes: (optional) Map of environment attributes that apply when in this biome.
    • [String][NBT Compound / JSON Object][NBT List / JSON Array] carvers: Any number of carver(s) (a [String] tag with #, or an [NBT List / JSON Array] array containing [String] IDs) (Required, but can be empty)
    • [NBT List / JSON Array] features: List of generation steps (Can be empty). Usually there are 11 steps, but any amount is possible.
      • [String][NBT Compound / JSON Object][NBT List / JSON Array] each entry of the list: Any number of placed feature(s) (a [String] tag with #, or an [NBT List / JSON Array] array containing either [String] IDs or new [NBT Compound / JSON Object] definitions in the same data type) — Features to place during that generation step. The same placed features in the same step in two biomes cannot be in different orders. In each step, all feature IDs need to be ordered consistently across biomes. For example, in the UNDERGROUND_ORES step of minecraft:plains, ore_dirt is before ore_gravel. In other biomes' UNDERGROUND_ORES step, if both ore_dirt and ore_gravel as present, ore_gravel cannot be before ore_dirt.
      These generation steps are also referred to by name for structure generation. They are, in order:
      • RAW_GENERATION: Used by small end island features in vanilla.
      • LAKES: Used by lava lakes in vanilla.
      • LOCAL_MODIFICATIONS: Used for amethyst geodes and icebergs in vanilla.
      • UNDERGROUND_STRUCTURES: Used for dungeons and overworld fossils in vanilla.
      • SURFACE_STRUCTURES: Used for desert wells and blue ice patches in vanilla.
      • STRONGHOLDS: Not used for features in vanilla.
      • UNDERGROUND_ORES: Used for overworld ore blobs, overworld dirt/gravel/stone variant blobs, and sand/gravel/clay disks in vanilla.
      • UNDERGROUND_DECORATION: Used for infested block blobs, nether gravel and blackstone blobs, and all nether ore blobs in vanilla.
      • FLUID_SPRINGS: Used for water and lava springs in vanilla.
      • VEGETAL_DECORATION: Used for trees, bamboo, cacti, kelp, and other ground and ocean vegetation in vanilla.
      • TOP_LAYER_MODIFICATION: Used for surface freezing in vanilla.
    • [Float] creature_spawn_probability: (optional) Higher value results in more creatures spawned in world generation. Must be between 0.0 and 0.9999999 (both inclusive).
    • [NBT Compound / JSON Object] spawners: (Required, but can be empty. If this object doesn't contain a certain category, mobs in this category do not spawn.) Entity spawning settings.
      • [NBT List / JSON Array] <mob category>: (Can be empty. If empty, mobs in this category do not spawn.) The key must be one of monster, creature, ambient, water_creature, underground_water_creature, water_ambient, misc, or axolotls. A list of spawner data objects, one for each mob which should spawn in this biome.
        • [NBT Compound / JSON Object]: The spawner data for a single mob.
          • [String] type: The namespaced entity id of the mob.
          • [Int] weight: How often this mob should spawn, higher values produce more spawns.
          • [Int] minCount: The minimum count of mobs to spawn in a pack. Must be greater than 0.
          • [Int] maxCount: The maximum count of mobs to spawn in a pack. Must be greater than 0. And must be not less than [Int] minCount.
    • [NBT Compound / JSON Object] spawn_costs: (Required, but can be empty. Only mobs listed here use the spawn cost mechanism) See Mob spawning § Spawn costs for details.
      • [NBT Compound / JSON Object] <entity id>: The namespaced entity id of the mob.
        • [Double] energy_budget: New mob's maximum potential.
        • [Double] charge: New mob's charge.
An interactive widget is being loaded. If this does not work for you, please reload the page or check if JavaScript is working or enabled.

Bedrock Edition

[edit | edit source]
This section is a work in progress.
 
Please help expand and improve it. The talk page may contain suggestions.
  • [NBT Compound / JSON Object]: The root object.
    • [String] format_version: The format version of the file. This is a string representing a Bedrock Edition version. It is recommended to use the latest version. For 26.0 and later, add a leading 1. For example: "1.26.0" for 26.0. Preview versions should use the version that it is a preview for (Example: Preview 26.0.27 would be "1.26.0").
    • [NBT Compound / JSON Object] minecraft:biome: The biome definition.
      • [NBT Compound / JSON Object] description
      • [NBT Compound / JSON Object] components: Components used to define the biome's generation.
        • [NBT Compound / JSON Object] minecraft:climate: Defines the climate properties of the biome.
          • [Float] downfall: How much precipitation affects colors and block changes. If set to 0, rain will not fall.
          • [NBT List / JSON Array] snow_accumulation: Minimum and maximum snow level. 0.125 is one snow layer.
          • [Float] temperature: ​[more information needed]
        • [NBT Compound / JSON Object] minecraft:creature_spawn_probability
          • [Float] probability: Chance of creatures spawning when the chunk is generated. Must be ≤0.75.
        • [NBT Compound / JSON Object] minecraft:humidity
          • [Boolean] is_humid: Whether or not the biome is humid.
        • [NBT Compound / JSON Object] minecraft:map_tints
          • [NBT List / JSON Array][String] foliage: The color foliage will be tinted by on a map in this biome for example #6a7039.
          • [NBT Compound / JSON Object] grass: The color grass will be tinted by on a map in this biome.
            • [String] type: It could be noise or tint.
            • [String] tint: Available only if the type is tint, it is used to define the fixed color of the grass on the map, for example #aea42a.
        • [NBT Compound / JSON Object] minecraft:mountain_parameters: Parameters used to drive mountain terrain generation in the overworld.
          • [Boolean] east_slopes: Whether to have east-facing slopes.
          • [Boolean] west_slopes: Whether to have west-facing slopes.
          • [Boolean] north_slopes: Whether to have north-facing slopes.
          • [Boolean] south_slopes: Whether to have south-facing slopes.
          • [NBT Compound / JSON Object] material: Block to use as steep material.
            • [String] name: Identifier of the block.
            • [NBT Compound / JSON Object] states: Block states for the block.
          • [NBT Compound / JSON Object] top_slide: Controls the density tapering that happens at the top of the world to prevent terrain from reaching too high.
            • [Boolean] enabled
          • [NBT Compound / JSON Object] steep_material_adjustment: Defines surface material for steep slopes.
            • [Boolean] east_slopes: Whether to have east-facing slopes.
            • [Boolean] west_slopes: Whether to have west-facing slopes.
            • [Boolean] north_slopes: Whether to have north-facing slopes.
            • [Boolean] south_slopes: Whether to have south-facing slopes.
            • [NBT Compound / JSON Object] material: Block to use as steep material.
              • [String] name: Identifier of the block.
              • [NBT Compound / JSON Object] states: Block states for the block.
        • [NBT Compound / JSON Object] minecraft:overworld_height: Currently only affects map items. Specifies the noise parameters used to drive terrain height.
          • [NBT List / JSON Array] noise_params: 2 values, first is depth, and the second is scale.
          • [String] noise_type: Uses a built-in preset instead of specifying values. Available presets are:
        • [NBT Compound / JSON Object] minecraft:replace_biomes: Allows this biome to replace parts of one or more vanilla biomes.
          • [NBT List / JSON Array] replacements: The list of replacements
            • [NBT Compound / JSON Object]: An replacement
              • [Float] amount: Chance that the replacement is attempted. Must be >0.0 and ≤1.0.
              • [String] dimension: The dimension in which this replacement can occur. Can be either minecraft:overworld, or minecraft:nether.
              • [Float] noise_frequency_scale: Scale to alter the frequency of replacements. Lower values make bigger areas that are less common, and higher values make smaller areas that are more common. Must be >0.0 and ≤100.0.
              • [NBT List / JSON Array] targets: The biomes that can be replaced.
                • [String]: A biome ID without the namespace.
        • [NBT Compound / JSON Object] minecraft:surface_builder
          • [NBT Compound / JSON Object] builder: Controls the blocks used for terrain generation.
            • [String] type: The type of surface builder. Can be minecraft:capped, minecraft:frozen_ocean, minecraft:mesa, minecraft:overworld, minecraft:swamp, or minecraft:the_end.
              If type is minecraft:capped:
            • [NBT Compound / JSON Object][String] beach_material: Material used near sea level.
              • [String] name: Identifier of the block.
              • [NBT Compound / JSON Object] states: Block states for the block.
            • [NBT Compound / JSON Object][String] ceiling_materials: Material used for the surface ceiling.
              • [String] name: Identifier of the block.
              • [NBT Compound / JSON Object] states: Block states for the block.
            • [NBT Compound / JSON Object][String] floor_materials: Material used for the surface floor.
              • [String] name: Identifier of the block.
              • [NBT Compound / JSON Object] states: Block states for the block.
            • [NBT Compound / JSON Object][String] foundation_material: Material used to replace solid blocks that are not surface blocks.
              • [String] name: Identifier of the block.
              • [NBT Compound / JSON Object] states: Block states for the block.
            • [NBT Compound / JSON Object][String] sea_material: Material used to replace air below sea level.
              • [String] name: Identifier of the block.
              • [NBT Compound / JSON Object] states: Block states for the block.
              If type is minecraft:frozen_ocean or minecraft:overworld:
            • [NBT Compound / JSON Object][String] foundation_material: Material used to replace solid blocks that are not surface blocks.
              • [String] name: Identifier of the block.
              • [NBT Compound / JSON Object] states: Block states for the block.
            • [NBT Compound / JSON Object][String] mid_material: Material used a layer below the surface of the biome.
              • [String] name: Identifier of the block.
              • [NBT Compound / JSON Object] states: Block states for the block.
            • [Int] sea_floor_depth: How deep below sea level the sea floor should be. Must be ≤127.
            • [NBT Compound / JSON Object][String] sea_floor_material: Material used as a floor for bodies of water.
              • [String] name: Identifier of the block.
              • [NBT Compound / JSON Object] states: Block states for the block.
            • [NBT Compound / JSON Object][String] sea_material: Material used to replace air below sea level.
              • [String] name: Identifier of the block.
              • [NBT Compound / JSON Object] states: Block states for the block.
            • [NBT Compound / JSON Object][String] top_material: Material used for the surface of the biome.
              • [String] name: Identifier of the block.
              • [NBT Compound / JSON Object] states: Block states for the block.
              If type is minecraft:mesa:
            • [Boolean] bryce_pillars: Whether the mesa generates with pillars.
            • [NBT Compound / JSON Object][String] clay_material: Base clay material.
              • [String] name: Identifier of the block.
              • [NBT Compound / JSON Object] states: Block states for the block.
            • [NBT Compound / JSON Object][String] foundation_material: Material used to replace solid blocks that are not surface blocks.
              • [String] name: Identifier of the block.
              • [NBT Compound / JSON Object] states: Block states for the block.
            • [NBT Compound / JSON Object][String] hard_clay_material: Hardened clay material.
              • [String] name: Identifier of the block.
              • [NBT Compound / JSON Object] states: Block states for the block.
            • [Boolean] has_forest: Adds coarse dirt and grass at high altitudes.
            • [NBT Compound / JSON Object][String] mid_material: Material used a layer below the surface of the biome.
              • [String] name: Identifier of the block.
              • [NBT Compound / JSON Object] states: Block states for the block.
            • [Int] sea_floor_depth: How deep below sea level the sea floor should be. Must be ≤127.
            • [NBT Compound / JSON Object][String] sea_floor_material: Material used as a floor for bodies of water.
              • [String] name: Identifier of the block.
              • [NBT Compound / JSON Object] states: Block states for the block.
            • [NBT Compound / JSON Object][String] sea_material: Material used to replace air below sea level.
              • [String] name: Identifier of the block.
              • [NBT Compound / JSON Object] states: Block states for the block.
            • [NBT Compound / JSON Object][String] top_material: Material used for the surface of the biome.
              • [String] name: Identifier of the block.
              • [NBT Compound / JSON Object] states: Block states for the block.
              If type is minecraft:swamp:
            • [NBT Compound / JSON Object][String] foundation_material: Material used to replace solid blocks that are not surface blocks.
              • [String] name: Identifier of the block.
              • [NBT Compound / JSON Object] states: Block states for the block.
            • [Int] max_puddle_depth_below_sea_level: The depth at which surface blocks can be replaced with water for puddles. Must be ≤127.
            • [NBT Compound / JSON Object][String] mid_material: Material used a layer below the surface of the biome.
              • [String] name: Identifier of the block.
              • [NBT Compound / JSON Object] states: Block states for the block.
            • [Int] sea_floor_depth: How deep below sea level the sea floor should be. Must be ≤127.
            • [NBT Compound / JSON Object][String] sea_floor_material: Material used as a floor for bodies of water.
              • [String] name: Identifier of the block.
              • [NBT Compound / JSON Object] states: Block states for the block.
            • [NBT Compound / JSON Object][String] sea_material: Material used to replace air below sea level.
              • [String] name: Identifier of the block.
              • [NBT Compound / JSON Object] states: Block states for the block.
            • [NBT Compound / JSON Object][String] top_material: Material used for the surface of the biome.
              • [String] name: Identifier of the block.
              • [NBT Compound / JSON Object] states: Block states for the block.
        • [NBT Compound / JSON Object] minecraft:surface_material_adjustments: Specify fine changes to blocks used in terrain generation.
          • [NBT List / JSON Array] adjustments
            • [NBT Compound / JSON Object]: An adjustment
              • [String][Boolean][Float] height_range: ​[more information needed]
              • [Float] noise_frequency_scale: The scale to apply to the position when accessing the noise value.
              • [NBT List / JSON Array] noise_range: A range of noise values for which this adjustment should be applied.
              • [NBT Compound / JSON Object] materials: Materials to use when this adjustment is active.
                • [NBT Compound / JSON Object][String] foundation_material: Material used to replace solid blocks that are not surface blocks.
                  • [String] name: Identifier of the block.
                  • [NBT Compound / JSON Object] states: Block states for the block.
                • [NBT Compound / JSON Object][String] mid_material: Material used a layer below the surface of the biome.
                  • [String] name: Identifier of the block.
                  • [NBT Compound / JSON Object] states: Block states for the block.
                • [NBT Compound / JSON Object][String] sea_floor_material: Material used as a floor for bodies of water.
                  • [String] name: Identifier of the block.
                  • [NBT Compound / JSON Object] states: Block states for the block.
                • [NBT Compound / JSON Object][String] sea_material: Material used to replace air below sea level.
                  • [String] name: Identifier of the block.
                  • [NBT Compound / JSON Object] states: Block states for the block.
                • [NBT Compound / JSON Object][String] top_material: Material used for the surface of the biome.
                  • [String] name: Identifier of the block.
                  • [NBT Compound / JSON Object] states: Block states for the block.
        • [NBT Compound / JSON Object] minecraft:tags
          • [NBT List / JSON Array] tags: Tags for the biome.
        • [NBT Compound / JSON Object] minecraft:village_type
          • [String] type: The type of village for this biome. Valid values are default, desert, ice, savanna, and taiga.

History

[edit | edit source]

Java Edition

[edit | edit source]
Java Edition
1.16.220w28aAdded experimental support for biomes in data packs.
20w30aAdded the grass_color, foliage_color, water_color, and water_fog_color effects properties.
pre2Added the player_spawn_friendly property.
1.1922w11aRemoved the category field. Functionality has been moved to biome tags.
1.19.3Pre-release 3Now when specifying a sound event, a fixed audible range can be also specified within an object.
1.19.423w03aRenamed the precipitation field to has_precipitation. And now it is a boolean, and when it is true, whether it rains or snows are determined only by temperature. Before, it can be one of "none", "rain" and "snow".[1]
Pre-release 1Now [Int] minCount and [Int] maxCount in [NBT Compound / JSON Object] spawners must be a positive integer. And [Int] maxCount must be not less than [Int] minCount.
1.21.224w33aCarver types have been removed. The carvers field now lists carvers directly instead of having to specify the type.
1.21.424w44aAdded [Float] music_volume field to [NBT Compound / JSON Object] effects.
Changed the [NBT List / JSON Array] music field to be a weighted list of music objects.
1.21.525w08aAdded [Int] dry_foliage_color field to [NBT Compound / JSON Object] effects.
1.21.1125w42aAdded [NBT Compound / JSON Object] attributes field.
Removed [Int] fog_color‌, [Int] sky_color‌, [Int] water_fog_color, [NBT Compound / JSON Object] particle, [String][NBT Compound / JSON Object] ambient_sound, [NBT Compound / JSON Object] mood_sound, [NBT Compound / JSON Object] additions_sounds, [NBT List / JSON Array] music, and [Float] music_volume fields in [NBT Compound / JSON Object] effects.
25w44aThe [String][NBT List / JSON Array][Int] water_color, [String][NBT List / JSON Array][Int] foliage_color, [String][NBT List / JSON Array][Int] dry_foliage_color, and [String][NBT List / JSON Array][Int] grass_color fields now accept a hex-string or array of red, green, blue floats in addition to the packed integer value.

Bedrock Edition

[edit | edit source]
Bedrock Edition
?Custom biomes were added
1.18Custom biomes have become obsolete and impossible to create due to the world generation change.
1.20.60Preview 1.20.60.24Biome tags are now specified under an array within the minecraft:tags component rather than as loose JSON objects.
1.21.70Preview 1.21.70.23Removed unused experimental json field peaks_factor from minecraft:mountain_parameters in the behavior pack biome file.
1.21.80
Experiment
Custom biomes
Preview 1.21.80.27Added minecraft:replace_biomes component to allow for custom biomes to replace portions of vanilla biomes. To use, add to custom biome files in behavior packs.
1.21.100
Experiment
Custom biomes
Preview 1.21.100.20Custom biome names are no longer implied by their filenames. Biome names are explicitly specified via the identifier property under the description sub-object of their JSON definition.
Biome identifiers must now be namespaced (ex: minecraft:plains). Biomes with a format version lower than 1.21.90 will have their identifier automatically prefixed minecraft: when loaded if no namespace is already specified.
Preview 1.21.100.22Added a new server side biome component surface_builder that will combine the components surface_parameters, frozen_ocean_surface, mesa_surface, swamp_surface, capped_surface, and the_end_surface into one component. Each biome can only use one builder type. The component can be used for world generation settings such as foundation material and sea floor depth.
Added minecraft:humidity component with is_humid this forces a biome to either always be humid or never humid. Humidity effects the spread chance, and spread rate of fire in the biome.
Added minecraft:partially_frozen This component will impact the temperature in a frozen biome, causing some areas to not be frozen. Ex: patchy ice, patchy snow.
1.21.111
Experiment
Custom biomes
Preview 1.21.110.20Added max_puddle_depth_below_sea_level to the surface_builder biome component for the swamp builder type. The component will set the search depth for how far below sea level to search for a surface to add a puddle.
Removed support for loading custom biomes for base game versions 1.21.100 and below.
1.21.111Preview 1.21.110.25Custom biomes were released from experimental.
26.0Preview 26.0.25Added minecraft:village_type biome component that determines the type of the village in the biome. This also allows for the generation of villages in the biome; not using this component means the village will never be generated in the biome.
Enabled the Biome Replacement feature in the Nether, however, currently it doesn't work as well as it should.
[edit | edit source]

References

[edit | edit source]
[edit | edit source]