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.


 * 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.

Features

 * no_op - Generates nothing
 * : (empty)


 * bamboo


 * basalt_columns


 * basalt_pillar


 * block_pile


 * blue_ice


 * bonus_chest


 * chorus_plant


 * coral_claw


 * coral_mushroom


 * coral_tree


 * decorated


 * decorated_flower


 * delta_feature


 * desert_well


 * disk


 * emerald_ore


 * end_gateway


 * end_island


 * end_spike


 * fill_layer


 * flower


 * forest_rock


 * fossil


 * freeze_top_layer


 * glowstone_blob


 * huge_brown_mushroom


 * huge_fungus


 * huge_red_mushroom


 * iceberg


 * ice_patch


 * ice_spike


 * kelp


 * lake


 * monster_room


 * nether_forest_vegetation


 * no_surface_ore


 * ore


 * random_boolean_selector


 * random_patch


 * random_random_selector


 * random_selector


 * netherrack_replace_blobs


 * seagrass


 * sea_pickle


 * simple_block


 * simple_random_selector


 * spring_feature


 * 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


 * twisting_vines


 * vines


 * void_start_platform


 * weeping_vines

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.