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.
 * : Int provider between 0 and 8.
 * : 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.
 * : Int provider between 0 and 128.
 * : Int provider between 0 and 128.
 * : Value between 0 and 64.
 * : Value between 1 and 64.
 * : Int provider between 0 and 128.
 * : Float provider between 0 and 2.
 * : Float provider between 0 and 2.
 * : Value between 0 and 1.
 * : Value between 0 and 64.
 * : Value between 0 and 64.
 * : Float provider between 0 and 2.
 * : 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.
 * : Int provider between 0 and 8.
 * : 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.
 * : Int provider between 0 and 20.
 * : 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.
 * : Int provider between 0 and 12.
 * : The block to replace.
 * : Int provider between 0 and 12.
 * : Int provider between 0 and 12.

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

 * : Int provider between 0 and 256.
 * : Int provider between 0 and 256.

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  :
 * : Int provider between 0 and 24.
 * If  is  :
 * : Int provider between 0 and 24.
 * If  is  :
 * : Int provider between 0 and 24.
 * If  is  :
 * : Int provider between 1 and 512.
 * : Must be between 0 and 256.
 * : 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.
 * : Must be between 0 and 256.
 * : 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 all block positions in the current chunk that have been carved out by a carver. This does not include blocks carved out by noise caves.
 * : The carving step. Either  or.
 * : The carving step. Either  or.

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 an int provider.
 * : Int provider between 0 and 256.
 * : Int provider between 0 and 256.

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.
 * : Extra count.
 * : 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 an int provider.
 * : Int provider between 0 and 256.
 * : Int provider between 0 and 256.

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:end_gateway
Increases the Y coordinate by a random value between 3 and 9 (inclusive). Calculated by.

This decorator has no config properties.

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.
 * : The heightmap to use. One of,  ,  ,  ,  , or.
 * : The heightmap to use. One of,  ,  ,  ,  , or.

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.
 * : The heightmap to use. One of,  ,  ,  ,  , or.
 * : The heightmap to use. One of,  ,  ,  ,  , or.

minecraft:iceberg
This decorator has no config properties.

minecraft:lava_lake
If the current Y position is below 63, always returns the current position. Otherwise only with a chance of.
 * : This config value is required but unused.
 * : This config value is required but unused.

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 is determined by a height provider.
 * : A height provider used to set the new Y coordinate.
 * : A height provider used to set the new Y coordinate.

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:water_depth_threshold
Either returns the current block position or nothing (an empty list).
 * : A height provider used to set the new Y coordinate.
 * : A height provider used to set the new Y coordinate.