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 as a part of placed features.

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.

The possible values for and associated config:


 * bamboo&mdash;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.

An example


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

An example


 * basalt_pillar
 * This feature has no config properties.


 * block_column
 * : The direction of the column. One of,  ,  ,  ,  , or.
 * : A block predicate.
 * : Determines where to cut off blocks when space is restricted. If, will start removing layers from the start of the column.
 * : The layers.
 * : Int provider specifying the height of the layer.
 * : The block to use for this layer.
 * : Int provider specifying the height of the layer.
 * : The block to use for this layer.
 * : The block to use for this layer.

An example


 * block_pile
 * : The block to use.

An example


 * blue_ice
 * This feature has no config properties.


 * bonus_chest
 * This feature has no config properties.


 * chorus_plant
 * This feature has no config properties.


 * coral_claw
 * This feature has no config properties.


 * coral_mushroom
 * This feature has no config properties.


 * coral_tree
 * This feature has no config properties.


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

An example


 * desert_well
 * This feature has no config properties.


 * disk&mdash;Only if there is water at the current block, places blocks in a circular formation using the and twice the  blocks deep.
 * : The block to use.
 * : Int provider between 0 and 8.
 * : Value between 0 and 4.
 * : The blocks to replace.
 * A block state.
 * : The blocks to replace.
 * A block state.

An example


 * dripstone_cluster
 * : Value between 1 and 512. For how many blocks the feature will search for the floor or ceiling.
 * : 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 1 and 64.
 * : Value between 1 and 64.
 * : Float provider between 0 and 2.
 * : Value between 0 and 1.
 * : Value between 1 and 64.
 * : Value between 1 and 64.
 * : Value between 1 and 64.

An example


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

An example


 * end_island
 * This feature has no config properties.


 * 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.
 * : (optional) The X coordinate.
 * : (optional) The Z coordinate.
 * : (optional) The radius of the spike.
 * : (optional) The height of the spike.
 * : (optional) Whether to generate a cage around the crystal.
 * : (optional) Whether to generate a cage around the crystal.

An example

<div class="treeview" id="fill_layer" style="margin-top: 1em;">
 * fill_layer&mdash;Fills all air blocks in a 16x1x16 layer of blocks. Used by the game in flat worlds.
 * : The block to fill with.
 * : Value between 0 and 4064. The layer to fill, starting at the bottom of the world.
 * : Value between 0 and 4064. The layer to fill, starting at the bottom of the world.

An example


 * flower
 * Identical to the random_patch feature.

<div class="treeview" id="forest_rock" style="margin-top: 1em;">
 * forest_rock
 * : The block to use.

An example


 * fossil&mdash;Can place a small structure.
 * : A fossil structure.
 * : An overlay structure.
 * : How many corners of the structure are allowed to be empty for it to generate. Prevents structures floating in the air.
 * : An overlay structure.
 * : How many corners of the structure are allowed to be empty for it to generate. Prevents structures floating in the air.
 * : How many corners of the structure are allowed to be empty for it to generate. Prevents structures floating in the air.
 * : How many corners of the structure are allowed to be empty for it to generate. Prevents structures floating in the air.
 * : How many corners of the structure are allowed to be empty for it to generate. Prevents structures floating in the air.
 * : How many corners of the structure are allowed to be empty for it to generate. Prevents structures floating in the air.

<div class="treeview" id="freeze_top_layer" style="margin-top: 1em;">
 * freeze_top_layer&mdash;Places snow and replaces water with ice in snowy biomes. This feature should be added to all biomes.
 * This feature has no config properties.


 * 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.
 * : A block tag listing which blocks not to replace.
 * : A block tag listing invalid blocks. The feature placement fails entirely when an invalid block is found.
 * : (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. The chance that the inner layer will use the alternate block provider.
 * : (optional) Defaults to true. Whether the inner placements are only allowed on the alternate inner blocks.
 * : (optional) Int provider between 1 and 20. Defaults to a uniform int between 4 and 5.
 * : (optional) Int provider between 1 and 20. Defaults to a uniform int between 3 and 4.
 * : (optional) Int provider between 1 and 10. Defaults to a uniform int between 1 and 2.
 * : (optional) Defaults to -16.
 * : (optional) Defaults to 16.
 * : (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. The chance that the inner layer will use the alternate block provider.
 * : (optional) Defaults to true. Whether the inner placements are only allowed on the alternate inner blocks.
 * : (optional) Int provider between 1 and 20. Defaults to a uniform int between 4 and 5.
 * : (optional) Int provider between 1 and 20. Defaults to a uniform int between 3 and 4.
 * : (optional) Int provider between 1 and 10. Defaults to a uniform int between 1 and 2.
 * : (optional) Defaults to -16.
 * : (optional) Defaults to 16.
 * : (optional) Defaults to -16.
 * : (optional) Defaults to 16.
 * : (optional) Defaults to 16.

An example

<div class="treeview" id="glow_lichen" style="margin-top: 1em;">
 * 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 ID.
 * A block ID.

An example

<div class="treeview" id="glowstone_blob" style="margin-top: 1em;">
 * glowstone_blob
 * This feature has no config properties.

<div class="treeview" id="huge_brown_mushroom" style="margin-top: 1em;">
 * 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.
 * : (optional) The size of the cap. Defaults to 2.
 * : (optional) The size of the cap. Defaults to 2.

An example

<div class="treeview" id="huge_fungus" style="margin-top: 1em;">
 * 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 place on top of.
 * : (optional) Defaults to false.
 * : (optional) Defaults to false.
 * : (optional) Defaults to false.

An example

<div class="treeview" id="huge_red_mushroom" style="margin-top: 1em;">
 * huge_red_mushroom
 * Identical to the huge_brown_mushroom feature.

<div class="treeview" id="ice_patch" style="margin-top: 1em;">
 * ice_patch
 * Identical to the disk feature

<div class="treeview" id="ice_spike" style="margin-top: 1em;">
 * ice_spike
 * This feature has no config properties.


 * iceberg
 * : The block to use.

An example


 * kelp
 * This feature has no config properties.


 * lake
 * : The block to use for the fluid of the lake.
 * : The block to use for the barrier of the lake.
 * : The block to use for the barrier of the lake.

An example

<div class="treeview" id="large_dripstone" style="margin-top: 1em;">
 * 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 and 2.
 * : Value between 0 and 100.
 * : Value between 0 and 5.
 * : Value between 0 and 100.
 * : Value between 0 and 5.

An example

<div class="treeview" id="monster_room" style="margin-top: 1em;">
 * monster_room
 * This feature has no config properties.

<div class="treeview" id="nether_forest_vegetation" style="margin-top: 1em;">
 * nether_forest_vegetation
 * : The block to use.
 * : Must be at least 1.
 * : Must be at least 1.
 * : Must be at least 1.

An example

<div class="treeview" id="netherrack_replace_blobs" style="margin-top: 1em;">
 * netherrack_replace_blobs&mdash;Replaces all target blocks in a certain radius with another block. If it doesn't find the target block at its position, it will move down before generating until it finds one.
 * : The block to use.
 * : The block to replace.
 * : Int provider between 0 and 12.
 * : Int provider between 0 and 12.
 * : Int provider between 0 and 12.

An example

<div class="treeview" id="no_bonemeal_flower" style="margin-top: 1em;">
 * no_bonemeal_flower
 * The config properties are identical to the random_patch feature.

<div class="treeview" id="no_op" style="margin-top: 1em;">
 * no_op&mdash;Does nothing. Useful for overwriting existing configured features.
 * This feature has no config properties.''


 * ore
 * : Value between 0 and 64. Does not directly correspond with the amount of blocks placed.
 * : Value between 0 and 1. The chance for an ore block to be discarded when it is exposed to air. Setting this to 1 makes the ore completely hidden.
 * : A list of targets.
 * A target
 * : Rule test. The blocks to replace.
 * : The block to use.
 * : The block to use.

An example

<div class="treeview" id="pointed_dripstone" style="margin-top: 1em;">
 * pointed_dripstone
 * : (optional) Value between 0 and 1. Defaults to 0.2.
 * : (optional) Value between 0 and 1. Defaults to 0.7.
 * : (optional) Value between 0 and 1. Defaults to 0.5.
 * : (optional) Value between 0 and 1. Defaults to 0.5.

An example

<div class="treeview" id="random_boolean_selector" style="margin-top: 1em;">
 * random_boolean_selector&mdash;Randomly chooses one of two features with each having an equal chance.
 * : The placed feature 1.
 * : The placed feature 2.

An example

<div class="treeview" id="random_patch" style="margin-top: 1em;">
 * random_patch
 * : (optional) Defaults to 128.
 * : (optional) Defaults to 7.
 * : (optional) Defaults to 3.
 * : The placed feature to use.

An example

<div class="treeview" id="random_selector" style="margin-top: 1em;">
 * random_selector&mdash;Randomly chooses a feature from a list with chances.
 * A feature and its corresponding chance.
 * : The placed feature to use.
 * : The chance of this feature being chosen.
 * : The placed feature to use if none of the above features are chosen.
 * : The placed feature to use if none of the above features are chosen.

An example

<div class="treeview" id="replace_single_block" style="margin-top: 1em;">
 * replace_single_block&mdash;Replaces a single block using a list of targets and states.
 * : A list of targets.
 * A target
 * : Rule test. The blocks to replace.
 * : The block to use.
 * : The block to use.

An example

<div class="treeview" id="root_system" style="margin-top: 1em;">
 * root_system&mdash;Generates a root column with a feature on top.
 * : A value between 1 and 64.
 * : A value between 1 and 64.
 * : A value between 1 and 256.
 * : A value between 1 and 4096.
 * : A value between 1 and 64.
 * : A value between 1 and 16.
 * : A value between 1 and 256.
 * : A value between 1 and 64.
 * : A block tag specifying which blocks can be replaced by the root column.
 * : The block to use for the root column.
 * : The block to use hanging below the root column.
 * : The block predicate used to check if the tree position is valid.
 * : The placed feature to place on top of the root system.
 * : The block predicate used to check if the tree position is valid.
 * : The placed feature to place on top of the root system.

An example

<div class="treeview" id="scattered_ore" style="margin-top: 1em;">
 * scattered_ore
 * The config properties are identical to the ore feature.

<div class="treeview" id="sea_pickle" style="margin-top: 1em;">
 * sea_pickle
 * : Int provider between 0 and 256.

An example


 * seagrass
 * : Value between 0 and 1.

An example

<div class="treeview" id="simple_block" style="margin-top: 1em;">
 * simple_block
 * : The block to use.

An example

<div class="treeview" id="simple_random_selector" style="margin-top: 1em;">
 * simple_random_selector&mdash;Randomly chooses a feature from a list with each having an equal chance.
 * : A list of features to choose from. Either all strings or all compounds.
 * : The feature to place.

An example

<div class="treeview" id="spring_feature" style="margin-top: 1em;">
 * 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.

An example


 * tree
 * (optional) Defaults to false. Allows the tree to generate even if there are vines blocking it.
 * : (optional) Defaults to false. If true, will place the dirt provider even when the block below the tree is not a grass block or mycelium.
 * : 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 place below the trunk. Only places if  is true, or if there is a grass block or mycelium below the trunk.
 * : The block to use for the trunk.
 * : The block to use for the foliage.
 * : One of,  ,  ,  ,  , or.
 * : Must be between 0 and 32.
 * : Must be between 0 and 24.
 * : Must be between 0 and 24.
 * If  is  :
 * : Int provider between 1 and 64.
 * : (optional) Value needs to be at least 1. Defaults to 1.
 * One of,  ,  ,  ,  ,  ,  ,  , or.
 * If  is ,  ,  , or  :
 * Affects the foliage height and size in block height. Value between 0 and 16.
 * (Presumably) a random offset from the trunk block on which this piece of foliage is centered.
 * 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.
 * Value 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.
 * If  is  :
 * Int provider between 1 and 512.
 * Value 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

<div class="treeview" id="twisting_vines" style="margin-top: 1em;">
 * twisting_vines
 * Must be at least 1.
 * Must be at least 1.
 * Must be at least 1.

An example

<div class="treeview" id="underwater_magma" style="margin-top: 1em;">
 * underwater_magma
 * Value between 0 and 512.
 * Value between 0 and 64.
 * Value between 0 and 1.

An example

<div class="treeview" id="vegetation_patch" style="margin-top: 1em;">
 * vegetation_patch
 * The surface to place on. One of, or
 * : Int provider between 1 and 128.
 * Value between 1 and 256.
 * Value between 0 and 1.
 * Value between 0 and 1.
 * Value between 0 and 1. The chance that a vegetation feature will be placed, is evaluated for each block.
 * Int provider. The radius of the patch.
 * A block tag specifying what blocks this feature can replace.
 * The block to use for the ground of the patch.
 * The placed feature to place on top of the patch.
 * The block to use for the ground of the patch.
 * The placed feature to place on top of the patch.
 * The placed feature to place on top of the patch.


 * vines
 * This feature has no config properties.''

<div class="treeview" id="void_start_platform" style="margin-top: 1em;">
 * void_start_platform
 * This feature has no config properties.''

<div class="treeview" id="waterlogged_vegetation_patch" style="margin-top: 1em;">
 * waterlogged_vegetation_patch&mdash;A vegetation patch but it will try to waterlog the blocks placed.
 * The config properties are identical to the vegetation_patch feature.

<div class="treeview" id="weeping_vines" style="margin-top: 1em;">
 * weeping_vines
 * This feature has no config properties.''