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
Generates a single bamboo column with a height between 5 and 16 blocks. Requires a block below that is inside the block tag.
 * : The probability for a podzol disk to generate below the bamboo. The disk has a radius of 1 to 4 blocks.
 * : The probability for a podzol disk to generate below the bamboo. The disk has a radius of 1 to 4 blocks.

An example

minecraft:basalt_columns

 * : Int provider with between 0 and 3.
 * : Int provider with between 1 and 10.
 * : Int provider with between 1 and 10.
 * : Int provider with between 1 and 10.

An example

minecraft:basalt_pillar
This feature has no config properties.

minecraft:block_pile

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

An example

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.

An example

minecraft:delta_feature

 * : The block to use on the inside of the delta.
 * : The block to use for the rim of the delta.
 * : Int provider between 0 and 16.
 * : Int provider between 0 and 16.
 * : Int provider between 0 and 16.
 * : Int provider between 0 and 16.
 * : Int provider between 0 and 16.
 * : Int provider between 0 and 16.

An example

minecraft:desert_well
This feature has no config properties.

minecraft:disk
Only if there is water at the current block, places blocks in a circular formation using the and   blocks deep.
 * : 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.

An example

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.
 * : Float provider between 0 and 1.
 * : Float provider between 0 and 1.
 * : Value between 0 and 1.
 * : Value between 0 and 64.
 * : Value between 0 and 64.
 * : Float provider between 0 and 1.
 * : Value between 0 and 1.
 * : Value between 0 and 64.
 * : Value between 0 and 64.
 * : Value between 0 and 64.
 * : Value between 0 and 64.

An example

minecraft:emerald_ore

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

An example

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.

An example

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.

An example

minecraft:fill_layer
Fills all air blocks in 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.

An example

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.

An example

minecraft:forest_rock

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

An example

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.

An example

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.

An example

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.

An example

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.

An example

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.

An example

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.

An example

minecraft:ice_spike
This feature has no config properties.

minecraft:iceberg

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

An example

minecraft:kelp
This feature has no config properties.

minecraft:lake

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

An example

minecraft:large_dripstone

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

An example

minecraft:monster_room
This feature has no config properties.

minecraft:nether_forest_vegetation

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

An example

minecraft:netherrack_replace_blobs

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

An example

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:ore

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

An example

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

An example

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.

An example

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.

An example

minecraft:scattered_ore

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

An example

minecraft:sea_pickle

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

An example

minecraft:seagrass

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

An example

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.

An example

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.

An example

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.

An example

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.

An example

minecraft:tree

 * : (optional) The maximum depth of water this tree can generate in. Defaults to 0.
 * : (optional) Defaults to false. Allows the tree to generate even if there are vines blocking it.
 * : One of,  ,  ,  ,  , or.
 * : Defines the width of the tree at different heights, for the minimum size of the feature.
 * : One of  or
 * : (optional) Value between 0 and 80. If the possible height at this location is lower than what the trunk placer requires, but greater or equal to this value, the tree will generate anyway.
 * If  is  :
 * : (optional) Value between 0 and 81. Defaults to 1. At heights lower than this value, the feature size will return the value of, otherwise.
 * : (optional) Value between 0 and 16. Defaults to 0. Minimum width of the tree at heights under.
 * : (optional) Value between 0 and 16. Defaults to 1. Minimum width of the tree at heights greater than or equals.
 * If  is  :
 * : (optional) Must be between 0 and 80. Defaults to 1. At heights lower than this value, the feature size will return the value of, otherwise   or.
 * : (optional) Must be between 0 and 80. Defaults to 1. At heights between this and, the feature size will return the value of  . If it is greater or equals, it will use.
 * : (optional) Must be between 0 and 16. Defaults to 0. Minimum width of the tree at the lowest layer.
 * : (optional) Must be between 0 and 16. Defaults to 1. Minimum width of the tree at the middle layer.
 * : (optional) Must be between 0 and 16. Defaults to 1. Minimum width of the tree at the upper layer.
 * : The block to use for the trunk.
 * : The block to use for the leaves.
 * : One of,  ,  ,  ,  , or.
 * : Must be between 0 and 32.
 * : Must be between 0 and 24.
 * : Must be between 0 and 24.
 * : 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.
 * : 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.
 * : The block to replace the ground with.

An example

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.