Features are small decorations that can at most write to a 3×3 chunk area centered on the placement chunk. They're locally placed per-chunk and cannot be searched for using commands. Examples are trees, flowers, ore, etc.
Feature Type[]
A feature type (sometimes called feature) determines how and what to generate.
List of feature types[]
The IDs of all feature types are listed below:
no_op—Does nothing. Useful for overwriting existing configured features.bamboobasalt_columnsbasalt_pillarblock_columnblock_pileblue_icebonus_chestchorus_plantcoral_clawcoral_mushroomcoral_treedelta_featuredesert_welldisk—Only if there is water at the current block, places blocks in a circular formation using the specified radius and deepness.dripstone_clusterend_gatewayend_islandend_spikefill_layer—Fills all air blocks in a 16×1×16 layer of blocks. Used by the game in flat worlds.flowerforest_rockfossil—Can place a small structure.freeze_top_layer—Places snow and replaces water with ice in snowy biomes.geodeglowstone_blobhuge_brown_mushroomhuge_fungushuge_red_mushroomicebergice_spikekelplakelarge_dripstonemonster_roommultiface_growthnether_forest_vegetationnetherrack_replace_blobs—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.no_bonemeal_flowerorepointed_dripstonerandom_boolean_selector—Randomly chooses one of two features with each having an equal chance.random_selector—Randomly chooses a feature from a list with chances.random_patchreplace_single_block—Replaces a single block using a list of targets and states.root_system—Generates a root column with a feature on top.scattered_oresculk_patchseagrasssea_picklesimple_blocksimple_random_selector—Randomly chooses a feature from a list with each having an equal chance.spring_featuretreetwisting_vinesunderwater_magmavegetation_patchvinesvoid_start_platformwaterlogged_vegetation_patch—A vegetation patch but it will try to waterlog the blocks placed.weeping_vines
Configured Feature[]
A feature type determines how to generate a feature, but the specific details need to be configured additionally. After configured, it is called a configured feature, or simply called a feature.
Configured features are stored as JSON files within a data pack in the path data/<namespace>/worldgen/configured_feature.
JSON Format[]
- : Root object.
- type: The ID of feature type.
- config: Configuration of this configured feature. The avialable properties vary depending on the type. Types that are not listed below have no config, but must still have an empty
configobject.
bamboo:- probability: The probability for a podzol disk to generate below the bamboo. The disk has a radius of 1 to 4 blocks. Value between 0.0 and 1.0 (inclusive).
basalt_columns:- reach: The max radius of a column in this column cluster. Value between 0 and 3 (inclusive).
- Int provider
- height: The max height is
height + 1. Value between 1 and 10 (inclusive).- Int provider
- reach: The max radius of a column in this column cluster. Value between 0 and 3 (inclusive).
block_column:- direction: The direction of the column. One of
up,down,north,east,south, orwest. - allowed_placement: A block predicate. The predicate must be passed to generate this feature.
- Block predicate
- prioritize_tip: Determines where to cut off blocks when space is restricted. If
true, will start removing layers from the start of the column. - layers: (Required, but can be empty) The layers of this column.
- : A layer.
- height: Specifying the height of the layer. Must be a non-negative int.
- Int provider
- provider: The block to use for this layer.
- Block state provider
- height: Specifying the height of the layer. Must be a non-negative int.
- : A layer.
- direction: The direction of the column. One of
block_pile:- state_provider: The block to use.
- Block state provider
- state_provider: The block to use.
delta_feature:- contents: The block to use on the inside of the delta.
- Block state
- rim: The block to use for the rim of the delta.
- Block state
- size: The size of the inside of the delta. Value between 0 and 16 (inclusive).
- Int provider
- rim_size: The size of the rim of the delta. Value between 0 and 16 (inclusive).
- Int provider
- contents: The block to use on the inside of the delta.
disk:- state_provider: The block to use.
- fallback:The block to use when all the rules' predicates are not passed.
- Block state provider
- rules: (Reqired, but can be empty) Rules of the block to use.
- : One rule.
- if_true: The predicate of this rule.
- Block predicate
- then: The block to use when the predicate is passed.
- Block state provider
- if_true: The predicate of this rule.
- : One rule.
- fallback:The block to use when all the rules' predicates are not passed.
- radius: The radius of this disk. Value between 0 and 8 (inclusive).
- Int provider
- half_height: Half of the height of this disk. Value between 0 and 4 (inclusive).
- target: This predicate must be passed to generate this feature.
- Block predicate
- state_provider: The block to use.
dripstone_cluster:- floor_to_ceiling_search_range: For how many blocks the feature will search for the floor or ceiling. Value between 1 and 512 (inclusive).
- height: The height of the cluster. Value between 1 and 128 (inclusive).
- Int provider
- radius: The radius of the cluster. Value between 1 and 128 (inclusive).
- Int provider
- max_stalagmite_stalactite_height_diff: The maximum height difference between stalagmites and stalactites. Value between 0 and 64 (inclusive).
- height_deviation: The height deviation. Value between 1 and 64 (inclusive).
- dripstone_block_layer_thickness: The dripstone block layer's thickness. Value between 0 and 128 (inclusive).
- Int provider
- density: Value between 0.0 and 2.0 (inclusive).
- Float provider
- wetness: Value between 0.0 and 2.0 (inclusive).
- Float provider
- chance_of_dripstone_column_at_max_distance_from_center: Value between 0.0 and 1.0 (inclusive).
- max_distance_from_edge_affecting_chance_of_dripstone_column: Value between 1 and 64 (inclusive).
- max_distance_from_center_affecting_height_bias: Value between 1 and 64 (inclusive).
end_gateway:- exact: Whether the gateway should teleport entities in the exact exit position.
- exit: (optional) The block position where the gateway should exit.
- : X coordinate.
- : Y coordinate.
- : Z coordinate.
end_spike:- crystal_invulnerable: (optional, defaults to false) Whether the end crystals on it are invulnerable.
- crystal_beam_target: (optional) Block position of the beam target.
- : The X coordinate.
- : The Y coordinate.
- : The Z coordinate.
- spikes: (Required, but can be empty. If empty, uses the default random spikes) Configurations of each spike.
- : A spike.
- centerX: (optional, defaults to 0) The X coordinate.
- centerZ: (optional, defaults to 0) The Z coordinate.
- radius: (optional, defaults to 0) The radius of the spike.
- height: (optional, defaults to 0) The height of the spike.
- guarded: (optional, defaults to false) Whether to generate an iron bar cage around the crystal.
- : A spike.
fill_layer:- state: The block to fill with.
- Block state
- height: The layer to fill, starting at the bottom of the world. Value between 0 and 4064 (inclusive).
- state: The block to fill with.
flower, no_bonemeal_flower, orrandom_patch:- tries: (optional, defaults to 128) The number of attempts to generate. Must be a positive integer.
- xz_spread: (optional, defaults to 7) The horizontal spread range. Must be a non-negative integer.
- y_spread: (optional, defaults to 3) the vertical spread range. Must be a non-negative integer.
- feature: Can be a placed feature ID, or a placed feature object. The placed feature that the this patch generates.
forest_rock:- state: The block to use.
- Block state
- state: The block to use.
fossil:- fossil_structures: (Cannot be empty) A list of fossil structure templates to choose from.
- : An ID of fossil structure template.
- overlay_structures: (Cannot be empty) A list of overlay structure templates to choose from.
- : An ID of overlay structure template.
- fossil_processors: Can be the ID of a processor list, or a list of processors, or a object of processor list. A processor for fossil structure templates.
- overlay_processors: Can be the ID of a processor list, or a list of processors, or a object of processor list. A processor for overlay structure templates.
- max_empty_corners_allowed: How many corners of the structure are allowed to be empty for it to generate. Prevents structures floating in the air.
- fossil_structures: (Cannot be empty) A list of fossil structure templates to choose from.
geode:- blocks: The blocks to use.
- filling_provider: The block used for filling.
- Block state provider
- inner_layer_provider: The block of the inner layer.
- Block state provider
- alternate_inner_layer_provider: The alternate block of the inner layer.
- Block state provider
- middle_layer_provider: The block of the middle layer.
- Block state provider
- outer_layer_provider: The block of the outer layer.
- Block state provider
- inner_placements: (Cannot be empty) The blocks to place in the geode.
- A block state.
- Block state
- A block state.
- cannot_replace: A block tag with
#listing which blocks not to replace. - invalid_blocks: A block tag with
#listing invalid blocks. Due to MC-264886, any value is treated as#minecraft:geode_invalid_blocks. Additionally, air is an invalid block.
- filling_provider: The block used for filling.
- layers: The max radius of each layer. Higher value results in higher max radius of each layer.
- filling: (optional, defaults to 1.7) Value between 0.01 and 50 (inclusive).
- inner_layer: (optional, defaults to 2.2) Value between 0.01 and 50 (inclusive).
- middle_layer: (optional, defaults to 3.2) Value between 0.01 and 50 (inclusive).
- outer_layer: (optional, defaults to 4.2) Value between 0.01 and 50 (inclusive).
- crack: The configuration of the crack on the geode.
- generate_crack_chance: (optional, defaults to 1.0) The probability for generating crack. Value between 0.0 and 1.0 (inclusive).
- base_crack_size: (optional, efaults to 2) Value between 0.0 and 5.0 (inclusive).
- crack_point_offset: (optional,defaults to 2) Value between 0 and 10 (inclusive).
- noise_multiplier: (optional, defaults to 0.05) Value between 0.0 and 1.0 (inclusive).
- use_potential_placements_chance: (optional, defaults to 0.35) The probability for placing the inner placement on a block of inner layer. Value between 0 and 1 (inclusive).
- use_alternate_layer0_chance: (optional, defaults to 0.0) The probability of the alternate blocks on inner layer. Value between 0 and 1 (inclusive).
- placements_require_layer0_alternate: (optional, defaults to true) Whether the inner placements are only allowed on the alternate inner blocks.
- outer_wall_distance: (optional, defaults to a uniform int between 4 and 5) The offset on each coordinate of the center from the feature start. Value between 1 and 20 (inclusive).
- Int provider
- distribution_points: (optional, defaults to a uniform int between 3 and 4) Value between 1 and 20 (inclusive).
- Int provider
- invalid_blocks_threshold: Check
distribution_pointstimes near the center of the geode, and if the number of invalid blocks found exceeds this number, the feature will not be generated. - point_offset: (optional, defaults to a uniform int between 1 and 2) Value between 1 and 10.
- Int provider
- min_gen_offset: (optional, defaults to -16) The minimum Chebyshev distance between the block and the center.
- max_gen_offset: (optional, defaults to 16) The maximum Chebyshev distance between the block and the center.
- blocks: The blocks to use.
huge_brown_mushroom or huge_red_mushroom:- cap_provider: The block to use for the cap.
- Block state provider
- stem_provider: The block to use for the stem.
- Block state provider
- foliage_radius: (optional,defaults to 2) The size of the cap.
- cap_provider: The block to use for the cap.
huge_fungus:- hat_state: The block to use for the hat.
- Block state
- decor_state: The block to use as decoration.
- Block state
- stem_state: The block to use for the stem.
- Block state
- valid_base_block: The block to place this feature on.
- Block state
- planted: (optional, defaults to false) Whether this huge fungus is planted. If false, it can't exceed the world ceiling, can replace blocks whose material is PLANT, and doesn't drop items when replace other blocks.
- replaceable_blocks: A block predicate. The predicate must be passed to be replaced with this feature.
- Block predicate
- hat_state: The block to use for the hat.
iceberg:- state: The block to use.
- Block state
- state: The block to use.
lake:- fluid: The block to use for the fluid of the lake.
- Block state provider
- barrier: The block to use for the barrier of the lake.
- Block state provider
- fluid: The block to use for the fluid of the lake.
large_dripstone:- floor_to_ceiling_search_range: (optional, defaults to 30) The search range form start point to cave floor or ceiling (rather than from floor to ceiling). Value between 1 and 512 (inclusive).
- column_radius: Used to provider a min and max value for radius. Note that this int provider doesn't provider a single int, but provider the min and max value of the specified distribution. Value between 1 and 60 (inclusive). See the graph for details.
- Int provider
- height_scale: Higher value leads to higher height. Value between 0.0 and 20.0 (inclusive).
- Float provider
- max_column_radius_to_cave_height_ratio: The ratio of the max radius to the height of the cave. Value between 0.0 and 1.0 (inclusive).
- stalactite_bluntness: Trancate the tip of stalactite. Higher value leads to lower height. Value between 0.1 and 10.0 (inclusive).
- Float provider
- stalagmite_bluntness: Trancate the tip of stalagmite. Higher value leads to lower height. Value between 0.1 and 10.0 (inclusive).
- Float provider
- wind_speed: Larger value results in larger inclination. Value between 0.0 and 2.0 (inclusive).
- Float provider
- min_radius_for_wind: The min column radius to used the wind. Value between 0 and 100.
- min_bluntness_for_wind: The min value of the bluntnesses to used the wind. Value between 0.0 and 5.0 (inclusive).
multiface_growth:- block: (optional, defaults to
glow_lichen) The block to place, currently must beglow_lichenorsculk_vein. - search_range: (optional, defaults to 10) Value between 1 and 64 (inclusive).
- chance_of_spreading: (optional, defaults to 0.5) Value between 0.0 and 1.0 (inclusive).
- can_place_on_floor: (optional, defaults to false).
- can_place_on_ceiling: (optional, defaults to false).
- can_place_on_wall: (optional, defaults to false).
- can_be_placed_on: Can be a block ID or a block tag, or a list of block IDs.
- block: (optional, defaults to
nether_forest_vegetation:- state_provider: The block to use.
- Block state provider
- spread_width: The horizonal distance to spread to. The max width is
spread_width * 2 -1. Must be a positive integer. - spread_height: The vertical distance to spread. The max height is
spread_height * 2 -1. Must be a positive integer.
- state_provider: The block to use.
netherrack_replace_blobs:- state: The block to use.
- Block state
- target: The block to replace.
- Block state
- radius: Value between 0 and 12 (inclusive).
- Int provider
- state: The block to use.
ore or scattered_ore:- size: Value between 0 and 64 (inclusive). Determine the volume size of the ore.[more information needed]
- discard_chance_on_air_exposure: Value between 0 and 1 (inclusive). The chance for an ore block to be discarded when it is exposed to air. Setting this to 1 makes the ore completely hidden.
- targets: (Required, but can be empty) A list of targets.
- : A target.
- target: Rule test. The blocks to replace.
- A rule test
- state: The block to use.
- Block state
- target: Rule test. The blocks to replace.
- : A target.
pointed_dripstone:- chance_of_taller_dripstone: (optional, defaults to 0.2) Value between 0.0 and 1.0 (inclusive). Probability for double-block dripstone.
- chance_of_directional_spread: (optional, defaults to 0.7) Value between 0.0 and 1.0 (inclusive). Probability that the dripstone spreads in a horizontal direction.
- chance_of_spread_radius2: (optional, defaults to 0.5) Value between 0.0 and 1.0 (inclusive). Probability of horizontal spread by two blocks.
- chance_of_spread_radius3: (optional. defaults to 0.5) Value between 0.0 and 1.0 (inclusive). After the spread by two blocks, probability of spreading the third block.
random_boolean_selector:- feature_false: One placed feature. Can be an ID of a placed feature, or a placed feature object.
- feature_true: Another placed feature. Can be an ID of a placed feature, or a placed feature object.
random_selector:- features: (Required, but can be empty) A list of placed features from which to randomly choose. Try in order from the first, generate the placed feature or try the next one according to the chance.
- A feature and its corresponding chance.
- feature: The placed feature to use. Can be an ID of a placed feature, or a placed feature object.
- chance: The chance of this feature being chosen.
- A feature and its corresponding chance.
- default: The placed feature to use if none of the above features are chosen. Can be an ID of a placed feature, or a placed feature object.
- features: (Required, but can be empty) A list of placed features from which to randomly choose. Try in order from the first, generate the placed feature or try the next one according to the chance.
replace_single_block:- targets: (Required, but can be empty) A list of targets.
- : A target.
- target: Rule test. The blocks to replace.
- A rule test
- state: The block to use.
- Block state
- target: Rule test. The blocks to replace.
- : A target.
- targets: (Required, but can be empty) A list of targets.
root_system:- required_vertical_space_for_tree: Value between 1 and 64 (inclusive).
- root_radius: Value between 1 and 64 (inclusive).
- root_placement_attempts: Value between 1 and 256 (inclusive).
- root_column_max_height: Value between 1 and 4096 (inclusive).
- hanging_root_radius: Value between 1 and 64 (inclusive).
- hanging_roots_vertical_span: Value between 0 and 16 (inclusive).
- hanging_root_placement_attempts: Value between 1 and 256 (inclusive).
- allowed_vertical_water_for_tree: Value between 1 and 64 (inclusive).
- root_replaceable: A block tag with
#specifying which blocks can be replaced by the root column. - root_state_provider: The block to use for the root column.
- Block state provider
- hanging_root_state_provider: The block to use hanging below the root column.
- Block state provider
- allowed_tree_position: The block predicate used to check if the tree position is valid.
- Block predicate
- feature: The placed feature to place on top of the root system. Can be an ID of a placed feature, or a placed feature object.
sculk_patch:- charge_count: The number of charges. Value between 1 and 32 (inclusive).
- amount_per_charge: The initial value of each charge. Value between 1 and 500 (inclusive).
- spread_attempts: The number of attempts to spread. Value between 1 and 64 (inclusive).
- growth_rounds: The number of times to generate. Value between 0 and 8 (inclusive).
- spread_rounds: The number of times to spread. Value between 0 and 8 (inclusive).
- extra_rare_growths: The number of extra shriekers generated.
- Int provider
- catalyst_chance: The probability of generating a catalyst. Value between 0.0 and 1.0 (inclusive).
sea_pickle:- count: Value between 0 and 256 (inclusive). The max count of the sea pickle block (not single sea pickle).
- Int provider
- count: Value between 0 and 256 (inclusive). The max count of the sea pickle block (not single sea pickle).
seagrass:- probability: Value between 0.0 and 1.0 (inclusive). Probability of using tall seagrass instead of seagrass
simple_block:- to_place: The block to use.
- Block state provider
- to_place: The block to use.
simple_random_selector:- features: (Cannot be an empty list) Features to choose from. Can be an ID or a tag of a placed feature, or a object of a placed feature, or a list of placed feature IDs, or a list of placed feature objects.
spring_feature:- state: The fluid to use.
- Block state
- rock_count: (optional, defaults to 4) The required number of blocks adjacent to the spring that belong to
valid_blocks. - hole_count: (optional, defaults to 1) The required number of air blocks adjacent to the spring.
- requires_block_below: (optional, defaults to true) Whether the spring feature requires a block in valid_blocks below the fluid.
- valid_blocks: Can be a block ID or a block tag, or a list of block IDs.
- state: The fluid to use.
tree:- ignore_vines: (optional, defaults to false) Allows the tree to generate even if there are vines blocking it.
- force_dirt: (optional, defaults to false) If true, will place the dirt provider even when the block below the tree is a valid dirt-like block.
- dirt_provider: The block to place below the trunk. Only places if
force_dirtis true, or if there is not a valid dirt-like block below the trunk.- Block state provider
- trunk_provider: The block to use for the trunk. Note that when the trunk placer is
fancy_trunk_placer, the block must haveaxisproperty, such as logs.- Block state provider
- foliage_provider: The block to use for the foliage.
- Block state provider
- minimum_size: Defines the width of the tree at different heights relative to the lowest trunk block, for the minimum size of the feature.
- min_clipped_height: (optional) Value between 0 and 80 (inclusive). If the possible height at this location is lower than trunk height, but greater or equal to this value, the tree will generate anyway. If not specified, the tree won't generate as long as the possible height is lower than trunk height. If the possible height at this location is lower than this value, the tree cannot generate.
- type: One of
two_layers_feature_sizeorthree_layers_feature_size- If
typeistwo_layers_feature_size, additional fields are as follows:
- If
- limit: (optional, defaults to 1) Value between 0 and 81 (inclusive). At heights lower than this value,
lower_sizeis used, otherwiseupper_size. - lower_size: (optional, defaults to 0) Value between 0 and 16 (inclusive). Minimum width of the tree at heights under
limit. - upper_size: (optional, defaults to 1) Value between 0 and 16 (inclusive). Minimum width of the tree at heights greater than or equals
limit.- If
typeisthree_layers_feature_size, additional fields are as follows:
- If
- limit: (optional, defaults to 1) Value between 0 and 80 (inclusive). At heights lower than this value,
lower_sizeis used, otherwiseupper_sizeormiddle_size. - upper_limit: (optional, defaults to 1) Value between 0 and 80 (inclusive). At heights between this and
limit,middle_sizeis used. If the height is greater or equals, it will useupper_size. - lower_size: (optional. defaults to 0) Value between 0 and 16 (inclusive). Minimum width of the tree at the lowest layer.
- middle_size: (optional, defaults to 1) Value between 0 and 16 (inclusive). Minimum width of the tree at the middle layer.
- upper_size: (optional, defaults to 1) Value between 0 and 16 (inclusive). Minimum width of the tree at the upper layer.
- root_placer: (optional) Controls how tree's roots are generated.
- type: Type of tree root placer, currently only
mangrove_root_placer. - root_provider: The block used as the root of the tree.
- Block state provider
- trunk_offset_y: Offset perpendicular to the trunk.
- Int provider
- above_root_placement: (optional) The blocks above the root.
- above_root_provider: The block above the root.
- Block state provider
- above_root_placement_chance: The probability of generating the block. Value between 0.0 and 1.0 (inclusive).
- If
typeismangrove_root_placer, additional fields are as follows:
- above_root_provider: The block above the root.
- mangrove_root_placement: Mangrove root placement parameter.
- max_root_width: The maximum width of the root. Value between 1 and 12 (inclusive).
- max_root_length: The maximum length of the root. Value between 1 and 64 (inclusive).
- random_skew_chance: The probability of random skew. Value between 0.0 and 1.0 (inclusive).
- can_grow_through: A block ID or a block tag, or a list of block IDs. Blocks that roots can grow through.
- muddy_roots_in: A block ID or a block tag, or a list of block IDs. Roots in it will turn into muddy root blocks.
- muddy_roots_provider: Blocks used as muddy roots.
- Block state provider
- type: Type of tree root placer, currently only
- trunk_placer:
- base_height: Value between 0 and 32 (inclusive).
- height_rand_a: Value between 0 and 24 (inclusive).
- height_rand_b: Value between 0 and 24 (inclusive).
- type: One of
straight_trunk_placer,forking_trunk_placer,giant_trunk_placer,mega_jungle_trunk_placer,dark_oak_trunk_placer,fancy_trunk_placer,bending_trunk_placer,upwards_branching_trunk_placer, orcherry_trunk_placer.- If
typeisbending_trunk_placer, additional fields are as follows:
- If
- bend_length: Value between 1 and 64 (inclusive).
- Int provider
- min_height_for_leaves: (optional, defaults to 1) Must be a positive integer.
- If
typeisupwards_branching_trunk_placer, additional fields are as follows:
- If
- extra_branch_steps: The number of steps to generate extra branches. Must be a positive integer.
- Int provider
- extra_branch_length: Generates extra branch length. Must be a non-negative integer.
- Int provider
- place_branch_per_log_probability: The probability of each log producing a branch. Value between 0.0 and 1.0 (inclusive).
- can_grow_through: A block ID or a block tag, or a list of block IDs. Represents blocks that tree trunks can grow through.
- If
typeischerry_trunk_placer, additional fields are as follows:
- If
- branch_count: Value between 1 and 3 (inclusive).
- Int provider
- branch_horizontal_length: Value between 2 and 16 (inclusive).
- Int provider
- branch_start_offset_from_top: A uniform int provider, which provides a number between two bounds with uniform distribution. Must between -16 and 0 (inclusive). And since it needs at least 2 blocks variation for the branch starts to fit both branches,
max_inclusivemust be at leastmin_inclusive + 1.- min_inclusive: The minimum possible value.
- max_inclusive: The maximum possible value.
- branch_end_offset_from_top: Value between -16 and 16 (inclusive).
- Int provider
- foliage_placer:
- radius: The radius of the foliage.
- Int provider
- offset: The vertical offest from the top of trunk to the top of the foliage.[needs testing]
- Int provider
- type: One of
blob_foliage_placer,spruce_foliage_placer,pine_foliage_placer,acacia_foliage_placer,bush_foliage_placer,fancy_foliage_placer,jungle_foliage_placer,mega_pine_foliage_placer,dark_oak_foliage_placer,random_spread_foliage_placer, orcherry_foliage_placer.- If
typeisblob_foliage_placer,bush_foliage_placer,fancy_foliage_placer, orjungle_foliage_placer, the additional fields are as follows:
- If
- height: The foliage's height. Value between 0 and 16 (inclusive).
- If
typeisspruce_foliage_placer, the additional fields are as follows:
- If
- trunk_height: Value between 0 and 24 (inclusive).
- Int provider
- If
typeispine_foliage_placer, the additional fields are as follows:
- height: Value between 0 and 24 (inclusive).
- Int provider
- If
typeismega_pine_foliage_placer, the additional fields are as follows:
- crown_height: Value between 0 and 24 (inclusive).
- Int provider
- If
typeisrandom_spread_foliage_placer, the additional fields are as follows:
- foliage_height: Value between 1 and 512 (inclusive).
- Int provider
- leaf_placement_attempts: Value between 0 and 256 (inclusive).
- If
typeischerry_foliage_placer, the additional fields are as follows:
- If
- height: Value between 4 and 16 (inclusive).
- Int provider
- wide_bottom_layer_hole_chance: Value between 0.0 and 1.0 (inclusive).
- corner_hole_chance: Value between 0.0 and 1.0 (inclusive).
- hanging_leaves_chance: Value between 0.0 and 1.0 (inclusive).
- hanging_leaves_extension_chance: Value between 0.0 and 1.0 (inclusive).
- radius: The radius of the foliage.
- decorators: (Required, but can be empty) Decorations to add to the tree apart from the trunk and leaves.
- : A decorator.
- type: The type of decoration to add. One of
trunk_vine,leave_vine,cocoa,beehive,alter_ground, orattached_to_leaves.- If
typeisleave_vine,cocoaorbeehive, additional fields are as follows:
- If
- probability: Value between 0.0 and 1.0 (inclusive).
- If
typeisalter_ground, additional fields are as follows:
- If
- provider: The block to replace the ground with.
- Block state provider
- If
typeisattached_to_leaves, additional fields are as follows:
- probability: Value between 0.0 and 1.0 (inclusive).
- exclusion_radius_xz: The minimum value of the horizontal distance between two decorations. Value between 0 and 16 (inclusive).
- exclusion_radius_y: The minimum value of the vertical distance between two decorations. Value between 0 and 16 (inclusive).
- required_empty_blocks: The number of empty blocks required by the decoration. Value between 0 and 16 (inclusive).
- block_provider: The block of the decoration.
- Block state provider
- directions: (Cannot be empty) Directions to generate.
- : A direction. Must be
up,down,north,south,west, oreast.
- : A direction. Must be
- type: The type of decoration to add. One of
- : A decorator.
twisting_vines:- spread_width: Must be a positive integer. The max spread width is
spread_width * 2 + 1 - spread_height: Must be a positive integer. The max spread height is
spread_height * 2 + 1 - max_height: Must be a positive integer. The max length is
max_height * 2, and the min length is 1.
- spread_width: Must be a positive integer. The max spread width is
underwater_magma:- floor_search_range: Value between 0 and 512 (inclusive).
- placement_radius_around_floor: Value between 0 and 64 (inclusive).
- placement_probability_per_valid_position: Value between 0.0 and 1.0 (inclusive).
vegetation_patch or waterlogged_vegetation_patch:- surface: The surface to place on. One of
floor, orceiling - depth: Value between 1 and 128 (inclusive).
- Int provider
- vertical_range: Value between 1 and 256 (inclusive).
- extra_bottom_block_chance: Value between 0.0 and 1.0 (inclusive).
- extra_edge_column_chance: Value between 0.0 and 1.0 (inclusive).
- vegetation_chance: Value between 0.0 and 1.0 (inclusive). The chance that a vegetation feature will be placed, is evaluated for each block.
- xz_radius: The radius of the patch.
- Int provider
- replaceable: A block tag with
#specifying what blocks this feature can replace. - ground_state: The block to use for the ground of the patch.
- Block state provider
- vegetation_feature: The placed feature to place on top of the patch. Can be a placed feature ID, or a placed feature object.
- surface: The surface to place on. One of
Placed feature[]
A configured feature determines what to be generated, but additional definition is required to determine where and how to place it in world generation. After added placement modifiers, it is called a placed feature.
Placed features are stored as JSON files within a data pack in the path data/<namespace>/worldgen/placed_feature.
JSON Format[]
- : Root object.
- feature: A configured feature's ID, or a object of a configured feature.
- placement: A list of placement modifiers. They are applied in order.
- : A placement modifier.
- type: The type of this placement modifier.
- Other additional fields depend on the value of type, described below.
- : A placement modifier.
Placement Modifier[]
A placement modifier takes in a initial position and returns empty or one or more block positions. Each position represents a generation attempt here. The placement modifier can return empty to cancel the attempt; return multiple copies of the same position to increase the number of attempts here; return some different positions to make multiple attempts in different positions.
For a placed feature, the placement modifiers in the list are applied in order to get the final list of positions from the initial position, then the feature will attempt to generate at those positions. When generating a feature directly, the initial position is the bottom northwest corner of a chunk. When referenced by another feature (such as being referenced by a feature of type random_selector, or by a structure pool), the initial position is where the feature is to be generated.
The possible values for type and associated additional fields:
- biome—Either returns the current position or empty. Only passes if the biome at the current position includes this placed feature. No additional field. Important: This modifier type cannot be used in placed features that are referenced from other configured features.
- block_predicate_filter—Returns the current position when the predicate is passed, otherwise return empty.
- predicate: The block predicate to test.
- Block predicate
- predicate: The block predicate to test.
- carving_mask—Returns all positions in the current chunk that have been carved out by a carver. This does not include blocks carved out by noise caves.
- step: The carving step. Either
airorliquid.
- step: The carving step. Either
- count—Returns multiple copies of the current block position.
- count: Value between 0 and 256 (inclusive).
- Int provider
- count: Value between 0 and 256 (inclusive).
- count_on_every_layer—In the horizontal relative range (0,0) to (16,16), at each vertical layer separated by air, lava or water, tries to randomly select the specified number of horizonal positions, whose Y coordinate is one block above this layer at this selected horizonal position. Return these selected positions.
- count:Count on each layer. Value between 0 and 256 (inclusive).
- Int provider
- count:Count on each layer. Value between 0 and 256 (inclusive).
- environment_scan—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 empty.
- direction_of_search: One of
upordown. - max_steps: Value between 1 and 32 (inclusive).
- target_condition: The block predicate that is searched for.
- Block predicate
- allowed_search_condition: (optional) If specified, each step must match this block position in order to continue the scan. If a block that doesn't match it is met, but no target block found, returns empty.
- Block predicate
- direction_of_search: One of
- height_range—Sets the Y coordinate to a value provided by a height provider. Returns the new position.
- height: The new Y coordinate.
- Height provider
- height: The new Y coordinate.
- heightmap—Sets the Y coordinate to one block above the heightmap. Returns the new position.
- heightmap: The heightmap to use. One of
MOTION_BLOCKING,MOTION_BLOCKING_NO_LEAVES,OCEAN_FLOOR,OCEAN_FLOOR_WG,WORLD_SURFACEorWORLD_SURFACE_WG.
- heightmap: The heightmap to use. One of
- in_square—For both X and Z, it adds a random value between 0 and 15 (both inclusive). 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. No additional fields.
- noise_based_count—When the noise value at the current block position is positive, returns multiple copies of the current block position, whose count is based on a noise value and can gradually change based on the noise value. When noise value is nagetive or 0, returns empty. The count is calculated by
ceil((noise(x / noise_factor, z / noise_factor) + noise_offset) * noise_to_count_ratio).- noise_factor: Scales the noise input horizontally. Higher values make for wider and more spaced out peaks.
- noise_offset:(optional, defaults to 0) Vertical offset of the noise.
- noise_to_count_ratio: Ratio of noise value to count.
- noise_threshold_count—Returns multiple copies of the current block position. The count is either below_noise or above_noise, based on the noise value at the current block position. First checks
noise(x / 200, z / 200) < noise_level. If that is true, usesbelow_noise, otherwiseabove_noise.- noise_level: The threshold within the noise of when to use
below_noiseorabove_noise. - below_noise: The count when the noise is below the threshold. Value lower than 0 is treated as 0.
- above_noise: The count when the noise is above the threshold. Value lower than 0 is treated as 0.
- noise_level: The threshold within the noise of when to use
- random_offset—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.
- xz_spread: Value between -16 and 16 (inclusive).
- Int provider
- y_spread: Value between -16 and 16 (inclusive).
- Int provider
- xz_spread: Value between -16 and 16 (inclusive).
- rarity_filter—Either returns the current position or empty. The chance is calculated by
1 / chance.- chance: Must be a positive integer.
- surface_relative_threshold_filter—Returns the current position if the surface is inside a range. Otherwise returns empty.
- heightmap:The heightmap to use. One of
MOTION_BLOCKING,MOTION_BLOCKING_NO_LEAVES,OCEAN_FLOOR,OCEAN_FLOOR_WG,WORLD_SURFACEorWORLD_SURFACE_WG. - min_inclusive: The minimum relative height from the surface to current position.
- max_inclusive: The maxinum relative height from the surface to current position.
- heightmap:The heightmap to use. One of
- surface_water_depth_filter—If the number of blocks of a motion blocking material under the surface (the top non-air block) is less than the specified depth, return the current position. Otherwise return empty.
- max_water_depth: The maximum allowed depth.
History[]
| Java Edition | |||||
|---|---|---|---|---|---|
| 1.16.2 | 20w28a | Added experimental support for configured features in data packs. | |||
| 20w29a | Renamed the minecraft:decorated_flower feature in minecraft:no_bonemeal_flower. | ||||
| 1.17 | 20w45a | Added minecraft:geode feature. | |||
| 20w49a | Added minecraft:dripstone_cluster, minecraft:large_dripstone, and minecraft:small_dripstone features. | ||||
| 21w03a | Added minecraft:glow_lichen feature type. | ||||
| 1.19 | 22w11a | Added block field into glow_lichen (multiface_growth) feature config.
| |||
Added minecraft:sculk_patch feature type. | |||||
| 22w12a | Leaves are now waterloggable. And foliage placers now always waterlog the blocks when replacing water, if the foliage block has a waterlogged block state. | ||||
| 22w13a | Added extra_rare_growths field into sculk_patch feature config. | ||||
| 22w14a | Renamed the glow_lichen feature type to multiface_growth.
| ||||
Added surface_disk feature type. | |||||
Added can_origin_replace field into the minecraft:disk feature config. Must be a block ID or a block tag, or a list of block IDs. The feature origin must in these blocks to generate the feature. | |||||
Added root_placer field into the minecraft:tree feature config. | |||||
Added attached_to_leaves decorator into the minecraft:tree feature config. | |||||
Added probability field into the leave_vine decorator of the minecraft:tree feature config. | |||||
Added upwards_branching_trunk_placer trunk placer into the minecraft:tree feature config. | |||||
| 22w15a | Merged the surface_disk and ice_patch feature types into the disk type.
| ||||
Added state_provider and targets fields into the minecraft:disk feature config, replacing state, targets and can_origin_replace fields. | |||||
Added trunk_offset_y and above_root_placement fields into the root placer in the minecraft:tree feature config. | |||||
Removed the y_offset field of the mangrove_root_placer root placer in the minecraft:tree feature config. Moved all other additional fields of mangrove_root_placer into an object mangrove_root_placement. | |||||
| 1.19.4 | 23w07a | Added minecraft:cherry_foliage_placer and minecraft:cherry_trunk_placer into the minecraft:tree feature config. | |||
| 1.20 | 23w17a | Added replaceable_blocks field into the minecraft:huge_fungus feature config. | |||