Custom feature

Features are unique elements of the world like trees, flowers, ore, etc. Configured features are stored as JSON files within a data pack in the path. They are used in world generation.

JSON format
When another configured feature is required inside the settings, it can either be provided with a string tag as the namespaced id of another configured feature, or with a compound tag as a nested definition.


 * The root tag.
 * : The feature type. Valid options are listed below.
 * Configuration properties of this feature type, specified below.
 * Configuration properties of this feature type, specified below.

minecraft:bamboo

 * : Decimal probability between 0 and 1.
 * : Decimal probability between 0 and 1.

minecraft:basalt_columns

 * : Uniform int with  0,   2, and   1.
 * : Uniform int with  1,   5, and   5.
 * : Uniform int with  1,   5, and   5.
 * : Uniform int with  1,   5, and   5.

minecraft:basalt_pillar
This feature has no config properties.

minecraft:block_pile

 * : The block to use.
 * : The block to use.

minecraft:blue_ice
This feature has no config properties.

minecraft:bonus_chest
This feature has no config properties.

minecraft:chorus_plant
This feature has no config properties.

minecraft:coral_claw
This feature has no config properties.

minecraft:coral_mushroom
This feature has no config properties.

minecraft:coral_tree
This feature has no config properties.

minecraft:decorated

 * : The configured decorator to use.
 * : The feature to decorate. Can either be a string referencing another feature or a compound as nested definition.
 * : The feature to decorate. Can either be a string referencing another feature or a compound as nested definition.

minecraft:delta_feature

 * : The block to use on the inside of the delta.
 * : The block to use for the rim of the delta.
 * : Uniform int with  0,   8, and   8.
 * : Uniform int with  0,   8, and   8.
 * : Uniform int with  0,   8, and   8.
 * : Uniform int with  0,   8, and   8.
 * : Uniform int with  0,   8, and   8.
 * : Uniform int with  0,   8, and   8.

minecraft:desert_well
This feature has no config properties.

minecraft:disk

 * : The block to use.
 * : Uniform int with  0,   4, and   4.
 * : Value between 0 and 4.
 * : The blocks to replace.
 * A block state.
 * : Value between 0 and 4.
 * : The blocks to replace.
 * A block state.

minecraft:dripstone_cluster

 * : Value between 1 and 512.
 * : Uniform int with  1,   64, and   64.
 * : Uniform int with  1,   64, and   64.
 * : Value between 0 and 64.
 * : Value between 1 and 64.
 * : Uniform int with  0,   64, and   64.
 * : Uniform float with  0,   1, and   1.
 * : Uniform float with  0,   1, and   1.
 * : Value between 0 and 1.
 * : Value between 0 and 1.
 * : Value between 0 and 1.
 * : Value between 0 and 64.
 * : Value between 0 and 64.
 * : Value between 0 and 1.
 * : Value between 0 and 1.
 * : Value between 0 and 1.
 * : Value between 0 and 64.
 * : Value between 0 and 64.
 * : Value between 0 and 64.

minecraft:emerald_ore

 * : The block to use.
 * : The block to replace.
 * : The block to replace.
 * : The block to replace.

minecraft:end_gateway

 * : Whether the gateway should teleport entities in the exact exit position.
 * : The block position where the gateway should exit.
 * X coordinate.
 * Y coordinate.
 * Z coordinate.
 * Z coordinate.

minecraft:end_island
This feature has no config properties.

minecraft:end_spike

 * : (optional) Defaults to false.
 * : (optional) Block position of the beam target.
 * : The X coordinate.
 * : The Y coordinate.
 * : The Z coordinate.
 * A spike configuration.
 * : The X coordinate.
 * : The Z coordinate.
 * : The radius of the spike.
 * : The height of the spike.
 * : Whether to generate a cage around the crystal.
 * : The height of the spike.
 * : Whether to generate a cage around the crystal.

minecraft:fill_layer
Fills a 16x1x16 layer of blocks
 * : The block to fill with.
 * : Value between the dimension's Min Y and Max Y. The layer to fill.
 * : Value between the dimension's Min Y and Max Y. The layer to fill.
 * : Value between the dimension's Min Y and Max Y. The layer to fill.

minecraft:flower

 * : (optional) Defaults to false.
 * : (optional) Defaults to true.
 * : (optional) Defaults to false.
 * : (optional) Defaults to 7.
 * : (optional) Defaults to 3.
 * : (optional) Defaults to 7.
 * : (optional) Defaults to 128.
 * : The block to use.
 * : Block placer.
 * : The Block placer type. One of,  , or.
 * If  is  :
 * : List of allowed block states to replace.
 * A block state.
 * : List of disallowed block states to replace.
 * A block state.
 * : List of allowed block states to replace.
 * A block state.
 * : List of disallowed block states to replace.
 * A block state.
 * A block state.

minecraft:forest_rock

 * : The block to use.
 * : The block to use.

minecraft:fossil
This feature has no config properties.

minecraft:freeze_top_layer
This feature has no config properties.

minecraft:geode

 * : The block used for the filling.
 * : The block used for the inner layer.
 * : The block used for the alternate inner layer.
 * : The block used for the middle layer.
 * : The block used for the outer layer.
 * A block state.
 * : (optional) Value between 0.01 and 50. Defaults to 1.7.
 * : (optional) Value between 0.01 and 50. Defaults to 2.2.
 * : (optional) Value between 0.01 and 50. Defaults to 3.2.
 * : (optional) Value between 0.01 and 50. Defaults to 4.2.
 * : (optional) Value between 0 and 1. Defaults to 1.
 * : (optional) Value between 0 and 5. Defaults to 2.
 * : (optional) Value between 0 and 10. Defaults to 2.
 * : (optional) Value between 0 and 1. Defaults to 0.05.
 * : (optional) Value between 0 and 1. Defaults to 0.35.
 * : (optional) Value between 0 and 1. Defaults to 0.35.
 * : (optional) Defaults to true.
 * : (optional) Value between 1 and 10. Defaults to 4.
 * : (optional) Value between 1 and 20. Defaults to 6.
 * : (optional) Value between 1 and 10. Defaults to 3.
 * : (optional) Value between 1 and 20. Defaults to 5.
 * : (optional) Value between 1 and 10. Defaults to 1.
 * : (optional) Value between 1 and 10. Defaults to 3.
 * : (optional) Defaults to -16.
 * : (optional) Defaults to 16.
 * : (optional) Value between 0 and 1. Defaults to 0.35.
 * : (optional) Value between 0 and 1. Defaults to 0.35.
 * : (optional) Defaults to true.
 * : (optional) Value between 1 and 10. Defaults to 4.
 * : (optional) Value between 1 and 20. Defaults to 6.
 * : (optional) Value between 1 and 10. Defaults to 3.
 * : (optional) Value between 1 and 20. Defaults to 5.
 * : (optional) Value between 1 and 10. Defaults to 1.
 * : (optional) Value between 1 and 10. Defaults to 3.
 * : (optional) Defaults to -16.
 * : (optional) Defaults to 16.

minecraft:glow_lichen

 * : (optional) Value between 1 and 64. Defaults to 10.
 * : (optional) Value between 0 and 1. Defaults to 0.5.
 * : (optional) Defaults to false.
 * : (optional) Defaults to false.
 * : (optional) Defaults to false.
 * A block state.
 * A block state.
 * A block state.

minecraft:glowstone_blob
This feature has no config properties.

minecraft:huge_brown_mushroom

 * : The block to use for the cap.
 * : The block to use for the stem.
 * : (optional) The size of the cap. Defaults to 2.
 * : The block to use for the stem.
 * : (optional) The size of the cap. Defaults to 2.
 * : (optional) The size of the cap. Defaults to 2.

minecraft:huge_fungus

 * : The block to use for the hat.
 * : The block to use as decoration.
 * : The block to use for the stem.
 * : The block to place on top of.
 * : (optional) Defaults to false.
 * : The block to use for the stem.
 * : The block to place on top of.
 * : (optional) Defaults to false.
 * : (optional) Defaults to false.
 * : (optional) Defaults to false.

minecraft:huge_red_mushroom

 * : The block to use for the cap.
 * : The block to use for the stem.
 * : (optional) The size of the cap. Defaults to 2.
 * : The block to use for the stem.
 * : (optional) The size of the cap. Defaults to 2.
 * : (optional) The size of the cap. Defaults to 2.

minecraft:ice_patch

 * : The block to use.
 * : Uniform int with  0,   4, and   4.
 * : Value between 0 and 4.
 * : The blocks to replace.
 * A block state.
 * : Value between 0 and 4.
 * : The blocks to replace.
 * A block state.

minecraft:ice_spike
This feature has no config properties.

minecraft:iceberg

 * : The block to use.
 * : The block to use.

minecraft:kelp
This feature has no config properties.

minecraft:lake

 * : The block to use.
 * : The block to use.

minecraft:large_dripstone

 * : (optional) Value between 1 and 512. Defaults to 30.
 * : Uniform int with  1,   30, and   30.
 * : Uniform float with  0,   10, and   10.
 * : Value between 0 and 1.
 * : Uniform float with  0.1,   5, and   5.
 * : Uniform float with  0.1,   5, and   5.
 * : Uniform float with  0,   1, and   1.
 * : Value between 0 and 100.
 * : Value between 0 and 5.
 * : Uniform float with  0.1,   5, and   5.
 * : Uniform float with  0,   1, and   1.
 * : Value between 0 and 100.
 * : Value between 0 and 5.
 * : Value between 0 and 100.
 * : Value between 0 and 5.

minecraft:monster_room
This feature has no config properties.

minecraft:nether_forest_vegetation

 * : The block to use.
 * : The block to use.

minecraft:netherrack_replace_blobs

 * : The block to use.
 * : The block to replace.
 * : Uniform int.
 * : The block to replace.
 * : Uniform int.
 * : Uniform int.

minecraft:no_bonemeal_flower
This feature has no config properties.

minecraft:no_op
Does nothing. Useful for overwriting existing configured features. This feature has no config properties.

minecraft:no_surface_ore

 * : The block to use.
 * : Rule test. The blocks to replace.
 * : Value between 0 and 64. Does not directly correspond with the amount of blocks placed.
 * : Rule test. The blocks to replace.
 * : Value between 0 and 64. Does not directly correspond with the amount of blocks placed.

minecraft:ore

 * : The block to use.
 * : Rule test. The blocks to replace.
 * : Value between 0 and 64. Does not directly correspond with the amount of blocks placed.
 * : Rule test. The blocks to replace.
 * : Value between 0 and 64. Does not directly correspond with the amount of blocks placed.

minecraft:random_boolean_selector
Randomly chooses one of two features.
 * : Feature 1.
 * : Feature 2.
 * : Feature 2.

minecraft:random_patch

 * : (optional) Defaults to false.
 * : (optional) Defaults to true.
 * : (optional) Defaults to false.
 * : (optional) Defaults to 7.
 * : (optional) Defaults to 3.
 * : (optional) Defaults to 7.
 * : (optional) Defaults to 128.
 * : The block to use.
 * : The block placer.
 * : The Block placer type. One of,  , or.
 * If  is  :
 * : List of allowed block states to replace.
 * A block state.
 * : List of disallowed block states to replace.
 * A block state.
 * : List of allowed block states to replace.
 * A block state.
 * : List of disallowed block states to replace.
 * A block state.
 * A block state.

minecraft:random_selector
Randomly chooses a feature from a list with chances.
 * A feature and its corresponding chance.
 * : The feature to place.
 * : The chance of this feature being chosen.
 * : The configured feature to use if none of the above features are chosen.
 * : The chance of this feature being chosen.
 * : The configured feature to use if none of the above features are chosen.

minecraft:sea_pickle

 * : Uniform int with  -10,   128, and   128.
 * : Uniform int with  -10,   128, and   128.

minecraft:seagrass

 * : Value between 0 and 1.
 * : Value between 0 and 1.

minecraft:simple_block

 * : The block to use.
 * : A list of valid block states below the current block.
 * A block state.
 * : A list of valid block states in the current block.
 * A block state.
 * : A list of valid block states above the current block.
 * A block state.
 * A block state.
 * : A list of valid block states above the current block.
 * A block state.
 * A block state.

minecraft:simple_random_selector
Randomly chooses a feature from a list.
 * : A list of features to choose from. Either all strings or all compounds.
 * : The feature to place.
 * : The feature to place.

minecraft:small_dripstone

 * : Value between 0 and 100.
 * : Value between 0 and 20.
 * : Value between 0 and 20.
 * : (optional) Value between 0 and 1. Defaults to 0.2.
 * : (optional) Value between 0 and 1. Defaults to 0.2.

minecraft:spring_feature

 * : Fluid state. The fluid to use.
 * : (optional) Defaults to 4.
 * : (optional) Defaults to 1.
 * : (optional) Whether the spring feature requires a block below the fluid. Defaults to true.
 * : A list of valid blocks to place the spring feature in.
 * The namespaced id of the block.
 * The namespaced id of the block.

minecraft:tree

 * : (optional) The maximum depth of water this tree can generate in. Defaults to 0.
 * : (optional) Defaults to false.
 * : One of,  ,  ,  ,  , or.
 * : One of  or
 * : (optional) Value between 0 and 80.
 * If  is  :
 * : (optional) Value between 0 and 81. Defaults to 1.
 * : (optional) Value between 0 and 16. Defaults to 0.
 * : (optional) Value between 0 and 16. Defaults to 1.
 * If  is  :
 * : (optional) Must be between 0 and 80. Defaults to 1.
 * : (optional) Must be between 0 and 80. Defaults to 1.
 * : (optional) Must be between 0 and 16. Defaults to 0.
 * : (optional) Must be between 0 and 16. Defaults to 1.
 * : (optional) Must be between 0 and 16. Defaults to 1.
 * : The block to use for the trunk.
 * : The block to use for the leaves.
 * : One of,  ,  ,  ,  , or.
 * : One of,  ,  ,  ,  ,  ,  ,  , or.
 * If  is ,  ,  , or  :
 * : Affects the foliage height and size in block height. Value between 0 and 16.
 * If  is  :
 * : Uniform int with  0,   16, and   8.
 * If  is  :
 * : Uniform int with  0,   16, and   8.
 * If  is  :
 * : Uniform int with  0,   16, and   8.
 * : Decorations to add to the tree apart from the trunk and leaves.
 * A decorator.
 * : The type of decoration to add. One of,  ,  ,  , or.
 * If  is   or  :
 * : Value between 0 and 1.
 * If  is  :
 * : The block to replace the ground with.
 * : Uniform int with  0,   16, and   8.
 * If  is  :
 * : Uniform int with  0,   16, and   8.
 * : Decorations to add to the tree apart from the trunk and leaves.
 * A decorator.
 * : The type of decoration to add. One of,  ,  ,  , or.
 * If  is   or  :
 * : Value between 0 and 1.
 * If  is  :
 * : The block to replace the ground with.
 * If  is  :
 * : The block to replace the ground with.

minecraft:twisting_vines
This feature has no config properties.

minecraft:vines
This feature has no config properties.

minecraft:void_start_platform
This feature has no config properties.

minecraft:weeping_vines
This feature has no config properties.

List of decorators
Decorators are used to modify the generation of features in various ways. They are applied from the outermost decorator to the innermost. A decorator takes in a block position and returns a list of block positions. This allows them to filter, transform and generate block positions.

minecraft:carving_mask
Returns a list of block positions that have been carved out by a carver.
 * : The carving step. Either  or.
 * : The probability that a carved block will be included. Value between 0 and 1.
 * : The probability that a carved block will be included. Value between 0 and 1.

minecraft:chance
Either returns the current block position or nothing (an empty list). The chance is calculated by.
 * : The chance for the feature to generate. Calculated by.
 * : The chance for the feature to generate. Calculated by.

minecraft:count
Returns multiple copies of the current block position. The count is determined by a uniform int.
 * : Uniform int with  -10,   128, and   128.
 * : Uniform int with  -10,   128, and   128.

minecraft:count_extra
Returns multiple copies of the current block position. The count is determined by a base count and a chance to add an extra count. Calculated by.
 * : Base count. Must be positive.
 * : Extra count. Must be positive.
 * : Chance to add  to the total count.
 * : Chance to add  to the total count.

minecraft:count_multilayer
Returns multiple block positions, placed on different vertical layers and spread in the X and Z direction with a range of 16. The count is per layer and determined by a uniform int.
 * : Uniform int with  -10,   128, and   128.
 * : Uniform int with  -10,   128, and   128.

minecraft:count_noise
Returns multiple copies of the current block position. The count is either below_noise or above_noise, based on a noise value at the current block position. This noise is the same for each biome or dimension, only dependent on the X and Z coordinates. The count is calculated by.
 * : The threshold within the noise of when to use  or.
 * : The count when the noise is below.
 * : The count when the noise is above.
 * : The count when the noise is above.

minecraft:count_noise_biased
Returns multiple copies of the current block position. Similar to count_noise, the count is based on a noise value at the current block position, but instead of being only two possible values it can gradually change based on the noise value. The count is calculated by.
 * : The count at the peak noise.
 * : Scales the noise input.
 * : (optional) The threshold of the "positive" area, where features are generated. Defaults to 0.
 * : (optional) The threshold of the "positive" area, where features are generated. Defaults to 0.

minecraft:dark_oak_tree
This decorator has no config properties.

minecraft:decorated
Chains two decorators. First it runs the  decorator, then it loops over the resulting block positions and runs the   decorator. The result is a combined list of the results of each  decorator.
 * : The outer configured decorator.
 * : The inner configured decorator.
 * : The inner configured decorator.

minecraft:depth_average
Returns a block position with the Y coordinate modified. The new Y coordinate is calculated by.
 * : The baseline
 * : The spread
 * : The spread

minecraft:emerald_ore
Returns 3 to 8 block positions that are spread in the X and Z direction with a range of 16. Additionally the Y coordinate is spread between 4 and 31 (inclusive). The first part of this can be seen as a count followed by a square decorator.

This decorator has no config properties.

minecraft:end_gateway
This decorator has no config properties.

minecraft:end_island
This decorator has no config properties.

minecraft:fire
Returns multiple block positions that are spread in the X and Z direction with a range of 16. Additionally the Y coordinate is spread between 4 and 123 (inclusive). The count of block positions is calculated by. This is the same as the glowstone decorator, but with resulting count increased by 1.
 * : Uniform int with  -10,   128, and   128.
 * : Uniform int with  -10,   128, and   128.

minecraft:glowstone
Returns multiple block positions that are spread in the X and Z direction with a range of 16. Additionally the Y coordinate is spread between 4 and 123 (inclusive). The count of block positions is calculated by. This is the same as the fire decorator, but with resulting ccount decreased by 1.
 * : Uniform int with  -10,   128, and   128.
 * : Uniform int with  -10,   128, and   128.

minecraft:heightmap
Returns a block position with the Y coordinate modified. The new Y coordinate is set to the  heightmap. If the resulting height is at the bottom of the world, nothing (an empty list) is returned.

This decorator has no config properties.

minecraft:heightmap_spread_double
Returns a block position with the Y coordinate modified. The new Y coordinate is set to a random value between the bottom of the world and double the  heightmap. Calculated by  heightmap. If the resulting height is at the bottom of the world, nothing (an empty list) is returned.

This decorator has no config properties.

minecraft:heightmap_world_surface
Returns a block position with the Y coordinate modified. The new Y coordinate is set to the  heightmap. If the resulting height is at the bottom of the world, nothing (an empty list) is returned.

This decorator has no config properties.

minecraft:iceberg
This decorator has no config properties.

minecraft:lava_lake
Has a  chance to attempt. Otherwise it returns nothing (an empty list). It spreads the X and Z coordinates with an range of 16. The Y coordinate is calculated by  where   is the height of the generator. If this Y coordinate is above or at the sea level, it needs an additional  chance to succeed.
 * : The chance for the lake to generate.
 * : The chance for the lake to generate.

minecraft:magma
Returns a block position with the Y coordinate modified. The new Y coordinate is set to a random value between  and   (exclusive).

This decorator has no config properties.

minecraft:nope
Does nothing. It returns the same block position that it received.

This decorator has no config properties.

minecraft:range
Returns a block position with the Y coordinate modified. The new Y coordinate set to a random value between  and   (exclusive). Calculated by.

minecraft:range_biased
Returns a block position with the Y coordinate modified. The new Y coordinate set to a biased towards  random value between   and   (exclusive). Calculated by.

minecraft:range_very_biased
Returns a block position with the Y coordinate modified. The new Y coordinate set to a very biased towards  random value between   and   (exclusive). Calculated by.

minecraft:spread_32_above
Returns a block position with the Y coordinate modified. The new Y coordinate set to a random value between  and   (exclusive). Calculated by.

This decorator has no config properties.

minecraft:square
Returns a block position with the X and Z coordinates modified. For both X and Z, it adds a random value between  and   (exclusive).

This decorator has no config properties.

minecraft:top_solid_heightmap
Returns a block position with the Y coordinate modified. The new Y coordinate is set to the  heightmap. If the resulting height is at the bottom of the world, nothing (an empty list) is returned.

This decorator has no config properties.

minecraft:water_lake
Has a  chance to attempt. Otherwise it returns nothing (an empty list). It spreads the X and Z coordinates with an range of 16. The Y coordinate is calculated by  where   is the height of the generator.
 * : The chance for the lake to generate.
 * : The chance for the lake to generate.