Placed feature

Placed features are a combination of a Configured feature and a list of placement modifiers. They are used in world generation to configure the placement of a feature. This includes position, rarity, count, filters, and more. They are stored as JSON files within a data pack in the path.

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


 * The root tag.
 * : The configured feature.
 * : A list of placement modifiers. They are applied in order. A modifier takes in a block position and returns a list of block positions. This allows them to filter, transform and generate block positions.
 * : The placement modifier type.
 * Other parameters of this placement modifier, described below. Note that unlike configured features, these are not wrapped in a  object.
 * Other parameters of this placement modifier, described below. Note that unlike configured features, these are not wrapped in a  object.

The possible values for placement modifier and associated config:


 * biome&mdash;Either returns the current position or nothing. Only passes if the biome at the current position includes this placed feature. Important: This modifier cannot be used in placed features that are referenced from other configured features!


 * block_predicate_filter&mdash;Either returns the current position or nothing.
 * : The block predicate to test.


 * carving_mask&mdash;Returns a list of all 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.


 * count&mdash;Returns multiple copies of the current block position. The count is determined by an int provider.
 * : Int provider between 0 and 256.


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


 * environment_scan&mdash;Scans blocks either up or down, until the target condition is met. Returns the block position for which the target condition matches. If no target can be found within the maximum number of steps, returns nothing.
 * : One of  or
 * : Value between 1 and 32.
 * : The block predicate that is searched for.
 * : (optional) If specified, each step must match this block position in order to continue the scan.
 * : (optional) If specified, each step must match this block position in order to continue the scan.


 * height_range&mdash;Sets the Y coordinate to a value determined by a height provider.
 * : A height provider used to set the new Y coordinate.


 * heightmap&mdash;Sets the Y coordinate to a heightmap of choice.
 * : The heightmap to use. One of,  ,  ,  ,  , or.


 * in_square&mdash;For both X and Z, it adds a random value between  and   (exclusive). This is a shortcut for a random_offset modifier with y_spread set to 0 and xz_spread as a uniform int from 0 to 15.


 * noise_based_count&mdash;Returns multiple copies of the current block position. The count is based on a noise value at the current block position. It can gradually change based on the noise value. The count is calculated by.
 * : Scales the noise input horizontally. Higher values make for wider and more spaced out peaks.
 * : (optional) Offset of the "positive" area, where features are generated. Can affect the count if above 0. Defaults to 0.
 * : Count multiplier, provided any features are generated.


 * noise_threshold_count&mdash;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. First checks . If that is true, uses , otherwise.
 * : The threshold within the noise of when to use  or.
 * : The count when the noise is below.
 * : The count when the noise is above.


 * random_offset&mdash;Applies an offset to the current position. Note that the even though X and Z share the same int provider, they are individually sampled, so a different offset can be applied to X and Z.
 * : Int provider between -16 and 16.
 * : Int provider between -16 and 16.
 * : Int provider between -16 and 16.


 * rarity_filter&mdash;Either returns the current position or nothing. The chance is calculated by.
 * : The chance for the feature to generate. Calculated by . Must be at least 1.


 * surface_relative_threshold_filter&mdash;Either returns the current position or nothing. Checks if the surface is inside a range.
 * : The heightmap to use. One of,  ,  ,  ,  , or.
 * : The minimum allowed height.
 * : The maximum allowed height.


 * surface_water_depth_filter&mdash;Either returns the current position or nothing.
 * : The maximum allowed depth of the water.