User:NeunEinser/custom biomes preview

This is the structure of custom biomes. This is already prepared in 20w21a, but it didn't fully make it into that snapshot. Here is an overview of what is already there and what you can expect from this extremely powerful feature, which will likely come in one of the next snapshots. This is extracted directly from the code, but is obviously subject to change until its final implementation.

JSON export
This is an export from 20w21a, containing all vanilla biomes and generator settings from that version: Export All biomes additionally have their name exported, which is simply the vanilla namespaced ID. This is so you can see which biome is which, but usually that would be defined as file name though, of course.

JSON Structure

 * The root tag.
 * Optional. The parent biome. When specified, this biome is a mutated variant of the parent, which can only appear inside of the parent biome.
 * : The type of precipitation in this biome. Must be one of,   or.
 * : The category of this biome. Must be one of,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,   or.
 * : The color code of fog (RGB hex code, but hex converted to dec)
 * : Climate parameters
 * A parameter
 * : Effects that can be applied to the biome.
 * : The color code of fog (RGB hex code, but hex converted to dec)
 * : The color code of water(RGB hex code, but hex converted to dec)
 * : The color code of fog while inside of water (RGB hex code, but hex converted to dec)
 * : Optional. Sound event ID for ambient sound. Default is no ambient sound.
 * : Optional. Mood sound configuration. Default is no mood sound
 * : The sound event ID.
 * : Optional. Additions sound configuration. Default is no sound.
 * : The sound event ID.
 * : Between 0 and 1. Likelyhood of the sound to be played in a tick. 1 (or anything greater than one) is 100%.
 * : Optional. Music configuration. Default is no biome-specific music.
 * : The sound event ID.
 * : Minimum delay between 2 tracks in ticks.
 * : Maximum delay between 2 tracks in ticks.
 * : Whether currently playing music should be stopped upon entering the biome.
 * : Optional. Specifies an ambience particle that's present in the biome.
 * : The probability of creating the particle.
 * : Options for the particle.
 * : The type id of the particle
 * particle specific options
 * : The name of the surface builder being used. Must be one of,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,   or
 * : Config of the surface builder. Currently, all surface builders use the same config.
 * : The block state used for the surface material.
 * : The block state used for the first few layers below the surface.
 * : The block state used for ocean/lake/river beds.
 * : List of structure starts of structures that can generate in this biome.
 * : Name of the structure (same as in /locate)
 * : Config for this structure. Configuration depends on the structure type.
 * : Spawns of entities that spawn naturally in this biome
 * spawn type: List of spawns for this type. Must be one of,  ,  ,  ,   or
 * A spawn.
 * : The entity id.
 * : Weight that this entity is chosen for this spawner type in a spawn attempt.
 * : Minimum count of spawns in one batch.
 * : Maximum count of spawns in one batch.
 * : Carvers used for carving caves or ravines.
 * caver_name: List of carvers of this type. Either  or
 * A carver
 * : The name of the used carver. Must be one of,  ,  ,   or
 * : The configuration for the carver. Currently all carvers have the same config.
 * : Optional. Between 0 and 1. Probability for this carver being active. Default is 0, or inactive.
 * : Features that can appear in this biome.
 * generation step: List of features for this step. Must be one of,  ,  ,  ,  ,  ,   or
 * A feature.
 * : The name of the used feature.
 * : The config for this feature. Options depend on the feature type specified in name.
 * : Minimum count of spawns in one batch.
 * : Maximum count of spawns in one batch.
 * : Carvers used for carving caves or ravines.
 * caver_name: List of carvers of this type. Either  or
 * A carver
 * : The name of the used carver. Must be one of,  ,  ,   or
 * : The configuration for the carver. Currently all carvers have the same config.
 * : Optional. Between 0 and 1. Probability for this carver being active. Default is 0, or inactive.
 * : Features that can appear in this biome.
 * generation step: List of features for this step. Must be one of,  ,  ,  ,  ,  ,   or
 * A feature.
 * : The name of the used feature.
 * : The config for this feature. Options depend on the feature type specified in name.

Structures

 * minecraft:desert_pyramid
 * minecraft:endcity
 * minecraft:igloo
 * minecraft:jungle_pyramid
 * minecraft:fortress
 * minecraft:nether_fossil
 * minecraft:monument
 * minecraft:pillager_outpost
 * minecraft:stronghold
 * minecraft:swamp_hut
 * minecraft:mansion
 * : (Empty)


 * minecraft:bastion_remnant
 * : List of jigsaw configs
 * : A jigsaw config
 * : Resource location for the pool of structure starts for this structure.
 * : The size of this structure


 * minecraft:buried_treasure
 * : The probability the buried treasure generates with,´.


 * minecraft:mineshaft
 * : One of  or
 * : One of  or
 * : One of  or


 * minecraft:ocean_ruin
 * :  or
 * :  or


 * minecraft:ruined_portal
 * :,  ,  ,  ,  ,   or
 * :,  ,  ,  ,  ,   or


 * minecraft:shipwreck


 * minecraft:village
 * : Resource location for the pool of structure starts for this structure.
 * : The size of this structure
 * : The size of this structure

Features

 * no_op - Generates nothing
 * basalt_pillar
 * blue_ice
 * bonus_chest - Generates a bonus chest
 * chorus_plant - Generates a chorus plant
 * coral_claw
 * coral_mushroom
 * coral_tree
 * desert_well
 * fossil
 * freeze_top_layer
 * glowstone_blob
 * ice_spike
 * kelp
 * monster_room
 * twisting_vines
 * vines
 * void_start_platform
 * weeping_vines
 * : (empty)


 * bamboo
 * : Optional. Probability of placing bamboo.
 * : Optional. Probability of placing bamboo.


 * basalt_columns


 * block_pile
 * : A block state provider
 * : A block state provider


 * decorated - Generates a feature within the decoration area, based on the decorator
 * decorated_flower
 * : The feature that is being generated.
 * : The decorator.
 * : The type of the used decorator.
 * : The config. Based on the type of used decorator.
 * : The config. Based on the type of used decorator.


 * delta_feature
 * : A block state
 * : A block state
 * : A block state


 * disk
 * : A block state
 * : A block state
 * : A block state
 * : A block state
 * : A block state
 * : A block state


 * emerald_ore
 * : A block state
 * : A block state
 * : A block state


 * end_gateway
 * : x, y and z coordinates
 * : x, y and z coordinates
 * : x, y and z coordinates


 * end_spike - An end pillar
 * : Optional. Whether the crystal is invulnerable upon generating. Default is false
 * : Optional. x, y and z values of the beam target. Default is no target.
 * A spike
 * : Optional. The relative center coordinate on the x axis. Default is 0.
 * : Optional. The relative center coordinate on the z axis. Default is 0.
 * : Optional. The radius of the cylinder. Default is 0.
 * : Optional. The height of the spike. Default is 0.
 * : Optional. When true, an iron cage is placed around the spike. Default is false.
 * : Optional. The height of the spike. Default is 0.
 * : Optional. When true, an iron cage is placed around the spike. Default is false.


 * fill_layer - A layer that is completely filled with a block. Vanilla uses this for the flatland generator.
 * : The height of the layer.
 * : The block state this layer is made of.
 * : The block state this layer is made of.


 * flower
 * random_patch
 * - Places a single block
 * - Places both states of a double plant correctly
 * - Places multiple blocks ontop of each other. Vanilla uses this for placing cati exclusively.
 * : Minimum size of the pillar
 * : Random component for the size. A random number with this value as upper bound gets calculated, and then another random number with the first random number as upper bound. This makes a lower extra_size the more likely.
 * - Places a single block
 * - Places both states of a double plant correctly
 * - Places multiple blocks ontop of each other. Vanilla uses this for placing cati exclusively.
 * : Minimum size of the pillar
 * : Random component for the size. A random number with this value as upper bound gets calculated, and then another random number with the first random number as upper bound. This makes a lower extra_size the more likely.
 * - Places a single block
 * - Places both states of a double plant correctly
 * - Places multiple blocks ontop of each other. Vanilla uses this for placing cati exclusively.
 * : Minimum size of the pillar
 * : Random component for the size. A random number with this value as upper bound gets calculated, and then another random number with the first random number as upper bound. This makes a lower extra_size the more likely.


 * forest_rock
 * : A block state
 * : Optional. Default is 0.
 * : Optional. Default is 0.


 * huge_brown_mushroom
 * huge_red_mushroom
 * : A block state provider used for the cap.
 * : Optional. The radius of the cap. Default is 2.
 * : Optional. The radius of the cap. Default is 2.


 * huge_fungus
 * : A block state on which this fungus can grow.
 * : The block state used for stem blocks
 * : The block state used for the hat.
 * : The block state used for decor (vanilla uses this for shroomlights)
 * : Optional. Whether this acts as if it was planted. Default is false. If true, it tries to find a suitable position in case the current position is invalid.
 * : Optional. Whether this acts as if it was planted. Default is false. If true, it tries to find a suitable position in case the current position is invalid.


 * iceberg
 * lake
 * : The block state used for this decorator.
 * : The block state used for this decorator.


 * ice_patch
 * : The radius for the patch.
 * : The radius for the patch.


 * nether_forest_vegetation
 * : The block state provider providing blocks for the vegetation.
 * : The block state provider providing blocks for the vegetation.


 * no_surface_ore - Generates ores that cannot appear on the surfaces. Vanilla uses this for ancient debris.
 * ore - Normal ore generator.
 * : Blocks that can be replaced.  for stone, granite, diorite and andesite;   for netherrack or   for netherrack, basalt and blackstone.
 * : The block state placed by this generator
 * : Optional. The size of each ore patch. Default is 0.
 * : Optional. The size of each ore patch. Default is 0.


 * random_boolean_selector - Selects one of 2 features randomly
 * : The feature to generate in case the randomly boolean was true.
 * : The feature to generate in case the randomly boolean was false.
 * : The feature to generate in case the randomly boolean was false.


 * random_random_selector - Generates a random amount from these features
 * : Optional. This selector generates a random number between -3 and 2. This number is added to that random number. The result is the actual amount of random features to generate. Default is 0.
 * : A list of features of which one is chosen randomly per attempt.
 * A feature
 * A feature


 * random_selector - Selects a feature at random
 * : A list of of features with a probability.
 * : A feature
 * : The chance this feature is selected.
 * : A feature
 * : The feature that is used as default, in case none of the above features are used.
 * : The feature that is used as default, in case none of the above features are used.


 * netherrack_replace_blobs - Generates an ellepsoid.
 * : The block state that can be replaced by blocks of this blop.
 * : The block state that this blop is made of.
 * : vector of length 3 for the minimum reach
 * : vector of length 3 for the maximum reach
 * : vector of length 3 for the maximum reach


 * seagrass


 * sea_pickle


 * simple_block - Places a block at an appropiate location.
 * : The block state to place
 * : List of block states above which this block can be placed.
 * A block state
 * : List of block states which this block can replace.
 * A block state
 * : List of block states underneath of which this block can be placed.
 * A block state
 * A block state


 * simple_random_selector - Chooses one of the features at random.
 * : A list of features of which one is chosen randomly.
 * A feature
 * A feature


 * spring_feature - Liquid source. Used for single source blocks that appear in caves and create flowing liquids.
 * : A fluid state.
 * : Optional. Whether this source requires a valid block underneath of it. Default is true.
 * : Optional. The amount of valid block this source must be surrounded with. Default is 4.
 * : Optional. The amount of empty block this source must be surrounded with. Default is 1.
 * : List of valid block ids.
 * : A block id
 * : A block id


 * tree - Generates a tree
 * : The max depth this tree can be placed underneath of water.
 * : Whether this tree ignores vines when growing
 * : Type of heightmap to be used for determining y coordinate. Must be,  ,  ,  ,   or
 * : A block state provider
 * : A block state provider
 * : A foliage placer
 * : The type of the used placer.
 * - A blop of leaves. Regular vanilla oak trees use this placer.
 * - A placer that places leaves for regular spruce trees.
 * - A placer for pine trees. No idea how it's different from spruce.
 * - A placer for acacia trees.
 * - A placer for jungle bushes.
 * - A placer for big oak trees (essentially multiple blops, with the same seed as the trunk placer would place branches).
 * - A placer for big jungle trees.
 * - A placer for big spruce trees.
 * - A placer for dark oak trees.
 * : The radius for the leaves.
 * : Random component for the radius. A value between 0 and this value gets added to the radius.
 * : Vertical offset in which leaves are placed
 * : Random component for the offset. A value between 0 and this value gets added to the offset.
 * : Only for,  ,  ,   and  . The height of the blop / crone.
 * : Only for . Same as height.
 * Only for  and  . Random component for height/crown_height.
 * : Only for.
 * : Only for.
 * : A trunk placer
 * : The type of the used placer.
 * - A regular placer that just places the provided block state straight up.
 * - A forking trunk. Used by acacia trees in vanilla.
 * - A trunk placer for giant tries. Vanilla uses this for giant spruce and pine (?) trees.
 * - A trunk placer used for giant jungle trees. Unlike the regular giant_trunk_placer, this one has branches.
 * - A trunk placer that places logs like in a dark oak tree.
 * - A trunk placer used by big regular oak trees (NOT dark oak).
 * : The base height for the trunk
 * : First random component for the base height.
 * : Second random component for the base height.
 * : The minimum size this tree must have
 * : The type. Must be  or
 * : Optional. Default is no minimum.
 * : Optional. Default is 1.
 * : Optional. Only for  Default is 1.
 * : Optional. Default is 0.
 * : Optional. Only for  Default is 1.
 * : Optional. Default is 1.
 * : A list of decorators to be applied to the tree.
 * : A decorator
 * : The type of the decorator
 * - A decorator that randomly places vines on the trunk.
 * - A decorator that randomly places vines on the leaves.
 * - A decorator that randomly places cacao beans on the trunk.
 * - A decorator that randomly places cacao beehives on the trunk.
 * - A decorator that replaces blocks below the tree (Used to place podzol at giant spruce trees in vanilla).
 * : Only for  and  . Probability for placing the block.
 * : Only for . A block state provider
 * : Only for . A block state provider

Block State Provider

 * root
 * : The type
 * Additional tags depending on the provider.


 * simple_state_provider - Always returns the same state
 * : The block state.


 * weighted_state_provider - Returns a random state, based on a weight.
 * : Entries of which one is chosen randomly
 * An entry
 * : The weight of this entry
 * : The block state.


 * plain_flower_provider - Hardcoded with no extra values


 * forest_flower_provider - Hardcoded with no extra values


 * rotated_block_provider - Returns a randomly rotated block. Only works for pillar-like blocks that have the  block state.
 * : The block state.

Block State

 * root
 * : The block-ID
 * : Only for blocks that have block state properties. Key-value pairs of property name and value.