跳转至

Features

文档版本:1.21.0.24

Features are decorations scattered throughout the world. Things such as trees, plants, flowers, springs, ore, and coral are all features. Basically, if it isn't the terrain or a mob, it's probably a feature!

架构

features:
{
  format_version "format_version"
  aggregate_feature "minecraft:aggregate_feature"
  cave_carver_feature "minecraft:cave_carver_feature"
  fossil_feature "minecraft:fossil_feature"
  geode_feature "minecraft:geode_feature"
  growing_plant_feature "minecraft:growing_plant_feature"
  multiface_feature "minecraft:multiface_feature"
  nether_cave_carver_feature "minecraft:nether_cave_carver_feature"
  ore_feature "minecraft:ore_feature"
  partially_exposed_blob_feature "minecraft:partially_exposed_blob_feature"
  scatter_feature "minecraft:scatter_feature"
  search_feature "minecraft:search_feature"
  sequence_feature "minecraft:sequence_feature"
  single_block_feature "minecraft:single_block_feature"
  snap_to_surface_feature "minecraft:snap_to_surface_feature"
  structure_template_feature "minecraft:structure_template_feature"
  surface_relative_threshold_feature "minecraft:surface_relative_threshold_feature"
  tree_feature "minecraft:tree_feature"
  underwater_cave_carver_feature "minecraft:underwater_cave_carver_feature"
  vegetation_patch_feature "minecraft:vegetation_patch_feature"
  weighted_random_feature "minecraft:weighted_random_feature"
}
format_versionformat_version
format_version:
string
minecraft:aggregate_featureaggregate_feature
aggregate_feature:
{
  description "description"
  array "features" : opt
  {
    string "<any array element>" : opt
  }
  string "early_out" : opt
}
descriptiondescription
description:
{
  identifier "identifier"
}
identifieridentifier
The name of this feature in the form namespace_name:feature_name. feature_name must match the filename.
identifier:
string
featuresarray
Collection of features to be placed one by one. No guarantee of order. All features use the same input position.
features
<any array element>string
Feature identifer
early_outstring
Do not continue placing features once either the first success or first failure has occurred.
minecraft:cave_carver_featurecave_carver_feature
cave_carver_feature:
{
  description "description"
  identifier "fill_with"
  0 "width_modifier"
  integer "skip_carve_chance" : opt
  integer "height_limit" : opt
  array "y_scale" : opt
  {
    number "0..0" : opt
    number "1..1" : opt
  }
  array "horizontal_radius_multiplier" : opt
  {
    number "0..0" : opt
    number "1..1" : opt
  }
  array "vertical_radius_multiplier" : opt
  {
    number "0..0" : opt
    number "1..1" : opt
  }
  array "floor_level" : opt
  {
    number "0..0" : opt
    number "1..1" : opt
  }
}
descriptiondescription
fill_withidentifier
Reference to the block to fill the cave with.
identifier:
string
width_modifier0
How many blocks to increase the cave radius by, from the center point of the cave.
0:
string
0:
number
skip_carve_chanceinteger
The chance to skip doing the carve (1 / value).
height_limitinteger
The height limit where we attempt to carve
y_scalearray
The scaling in y
y_scale
0..0number
1..1number
horizontal_radius_multiplierarray
horizontal_radius_multiplier
0..0number
1..1number
vertical_radius_multiplierarray
vertical_radius_multiplier
0..0number
1..1number
floor_levelarray
floor_level
0..0number
1..1number
minecraft:fossil_featurefossil_feature
fossil_feature:
{
  description "description"
  identifier "ore_block"
  integer "max_empty_corners" : opt
}
descriptiondescription
ore_blockidentifier
Reference to the block to fill the cave with.
max_empty_cornersinteger
UNDOCUMENTED
minecraft:geode_featuregeode_feature
geode_feature:
{
  description "description"
  identifier "filler"
  identifier "inner_layer"
  identifier "alternate_inner_layer"
  identifier "middle_layer"
  identifier "outer_layer"
  array "inner_placements" : opt
  {
    identifier "<any array element>"
  }
  integer "min_outer_wall_distance" : opt
  integer "max_outer_wall_distance" : opt
  integer "min_distribution_points" : opt
  integer "max_distribution_points" : opt
  integer "min_point_offset" : opt
  integer "max_point_offset" : opt
  integer "max_radius" : opt
  integer "crack_point_offset" : opt
  number "generate_crack_chance" : opt
  number "base_crack_size" : opt
  number "noise_multiplier" : opt
  number "use_potential_placements_chance" : opt
  number "use_alternate_layer0_chance" : opt
  boolean "placements_require_layer0_alternate" : opt
  integer "invalid_blocks_threshold" : opt
}
descriptiondescription
filleridentifier
The block to fill the inside of the geode.
inner_layeridentifier
The block that forms the inside layer of the geode shell.
alternate_inner_layeridentifier
The block that has a chance of generating instead of inner_layer.
middle_layeridentifier
The block that forms the middle layer of the geode shell.
outer_layeridentifier
The block that forms the outer shell of the geode.
inner_placementsarray
A list of blocks that may be replaced during placement. Omit this field to allow any block to be replaced.
inner_placements
<any array element>identifier
A block that may be replaced during placement.
min_outer_wall_distanceinteger
The minimum distance each distribution point must be from the outer wall. [0,10]
max_outer_wall_distanceinteger
The maximum distance each distribution point can be from the outer wall. [0,20]
min_distribution_pointsinteger
The minimum number of points inside the distance field that can get generated. The distance field is the area consisting of all points with a minimum distance to all destribution points. [0,10]
max_distribution_pointsinteger
The maximum number of points inside the distance field that can get generated. The distance field is the area consisting of all points with a minimum distance to all destribution points. [0,20]
min_point_offsetinteger
The lowest possible value of random offset applied to the position of each distribution point. [0,10]
max_point_offsetinteger
The highest possible value of random offset applied to the position of each distribution point. [0,10]
max_radiusinteger
The maximum possible radius of the geode generated.
crack_point_offsetinteger
An offset applied to each distribution point that forms the geode crack opening. [0,10]
generate_crack_chancenumber
The likelihood of a geode generating with a crack in its shell. [0,1]
base_crack_sizenumber
How large the crack opening of the geode should be when generated. [0,5]
noise_multipliernumber
A multiplier applied to the noise that is applied to the distribution points within the geode. Higher = more noisy.
use_potential_placements_chancenumber
The likelihood that a special block will be placed on the inside of the geode. [0,1]
use_alternate_layer0_chancenumber
The likelihood that a block in the innermost layer of the geode will be replaced with an alternate option. [0,1]
placements_require_layer0_alternateboolean
If true, the potential placement block will only be placed on the alternate layer0 blocks that get placed. Potential placement blocks are blocks that depend on the existance of another block to be placed. The latter are the layer0 alternate blocks.
invalid_blocks_thresholdinteger
The threshold of invalid blocks for a geode to have a distribution point in before it aborts generation entirely.
minecraft:growing_plant_featuregrowing_plant_feature
growing_plant_feature:
{
  description "description"
  integer "age" : opt
  object "age" : opt
  {
    integer "range_max" : opt
    integer "range_min" : opt
  }
  array "height_distribution" : opt
  {
    array "<any array element>" : opt
    {
       "0..0" : opt
      number "1..1" : opt
    }
  }
  string "growth_direction" : opt
  array "body_blocks" : opt
  {
    array "<any array element>" : opt
    {
      identifier "0..0"
      range_number_type "1..1"
    }
  }
  array "head_blocks" : opt
  boolean "allow_water" : opt
}
descriptiondescription
ageinteger
Age of the head of the plant.
ageobject
A range.
age
range_maxinteger
The maximum plant height.
range_mininteger
The minimum plant height.
height_distributionarray
Collection of weighted heights that placement will select from.
height_distribution
<any array element>array
Collection of weighted heights that placement will select from.
<any array element>
0..0
Plant height.
1..1number
Weight used in random selection. Value is relative to other weights in the collection.
growth_directionstring
Direction that the plant grows towards. Valid values: UP and DOWN
body_blocksarray
Collection of weighted block descriptor that placement will select from for the body of the plant.
body_blocks
<any array element>array
Collection of weighted block descriptor that placement will select from for the plant.
<any array element>
0..0identifier
Plant body block.
1..1range_number_type
range_number_type:
number
range_number_type:
array
{
  number "0..0" : opt
  number "1..1" : opt
}
0..0number
The first value of the range.
1..1number
The second value of the range.
range_number_type:
{
  number "range_min" : opt
  number "range_max" : opt
}
range_minnumber
The minimum value of the range.
range_maxnumber
The maximum value of the range.
head_blocksarray
Collection of weighted block descriptor that placement will select from for the body of the plant.
head_blocks
allow_waterboolean
Plant blocks can be placed in water.
minecraft:multiface_featuremultiface_feature
multiface_feature:
{
  description "description"
  identifier "places_block"
  integer "search_range" : opt
  boolean "can_place_on_floor" : opt
  boolean "can_place_on_ceiling" : opt
  boolean "can_place_on_wall" : opt
  number "chance_of_spreading" : opt
  array "can_place_on" : opt
  {
    identifier "<any array element>"
  }
}
descriptiondescription
places_blockidentifier
Reference to the block to be placed.
search_rangeinteger
How far, in blocks, this feature can search for a valid position to place.
can_place_on_floorboolean
Can this feature be placed on the ground (top face of a block)?.
can_place_on_ceilingboolean
Can this feature be placed on the ceiling (bottom face of a block)?.
can_place_on_wallboolean
Can this feature be placed on the wall (side faces of a block)?.
chance_of_spreadingnumber
For each block placed by this feature, how likely will that block spread to another?.
can_place_onarray
How far, in blocks, this feature can search for a valid position to place.
can_place_on
<any array element>identifier
A list of blocks that the block in this feature can be placed on. Omit this field to allow any block to be placed on.
minecraft:nether_cave_carver_featurenether_cave_carver_feature
nether_cave_carver_feature:
{
  description "description"
  identifier "fill_with"
  0 "width_modifier"
  integer "skip_carve_chance" : opt
  integer "height_limit" : opt
  array "y_scale" : opt
  {
    number "0..0" : opt
    number "1..1" : opt
  }
  array "horizontal_radius_multiplier" : opt
  {
    number "0..0" : opt
    number "1..1" : opt
  }
  array "vertical_radius_multiplier" : opt
  {
    number "0..0" : opt
    number "1..1" : opt
  }
  array "floor_level" : opt
  {
    number "0..0" : opt
    number "1..1" : opt
  }
}
descriptiondescription
fill_withidentifier
Reference to the block to fill the cave with.
width_modifier0
How many blocks to increase the cave radius by, from the center point of the cave.
skip_carve_chanceinteger
The chance to skip doing the carve (1 / value).
height_limitinteger
The height limit where we attempt to carve
y_scalearray
The scaling in y
y_scale
0..0number
1..1number
horizontal_radius_multiplierarray
horizontal_radius_multiplier
0..0number
1..1number
vertical_radius_multiplierarray
vertical_radius_multiplier
0..0number
1..1number
floor_levelarray
floor_level
0..0number
1..1number
minecraft:ore_featureore_feature
ore_feature:
{
  description "description"
  number "count" : opt
  array "replace_rules" : opt
  {
    object "<any array element>" : opt
    {
      identifier "places_block"
      array "may_replace" : opt
      {
        identifier "<any array element>"
      }
    }
  }
  number "discard_chance_on_air_exposure" : opt
}
descriptiondescription
countnumber
The number of blocks to be placed.
replace_rulesarray
Collection of replace rules that will be checked in order of definition. If a rule is resolved, the rest will not be resolved for that block position.
replace_rules
<any array element>object
If a rule is resolved, the rest will not be resolved for that block position.
<any array element>
places_blockidentifier
Reference to the block to be placed.
may_replacearray
A list of blocks that may be replaced during placement. Omit this field to allow any block to be replaced.
may_replace
<any array element>identifier
discard_chance_on_air_exposurenumber
Chance of discarding placement if neighboring block is Air.
minecraft:partially_exposed_blob_featurepartially_exposed_blob_feature
partially_exposed_blob_feature:
{
  description "description"
  identifier "places_block"
  number "placement_radius_around_floor" : opt
  number "placement_probability_per_valid_position" : opt
  string "exposed_face" : opt
}
descriptiondescription
places_blockidentifier
Reference to the block to be placed.
placement_radius_around_floornumber
Defines the cubic radius of the blob.
placement_probability_per_valid_positionnumber
The probability of trying to place a block at each position within the placement bounds.
exposed_facestring
Defines a block face that is allowed to be exposed to air and/or water. Other faces need to be embedded for blocks to be placed by this feature. Defaults to upwards face
minecraft:scatter_featurescatter_feature
scatter_feature:
{
  description "description"
  identifier "places_feature"
  boolean "project_input_to_floor" : opt
  0 "iterations"
  object "scatter_chance" : opt
  {
    integer "numerator" : opt
    integer "denominator" : opt
  }
  0 "scatter_chance"
  string "coordinate_eval_order" : opt
  0 "x"
  object "x" : opt
  {
    string "distribution" : opt
    integer "step_size" : opt
    integer "grid_offset" : opt
    array "extent" : opt
    {
      0 "0..0"
      0 "1..1"
    }
  }
   "y" : opt
   "z" : opt
}
descriptiondescription
places_featureidentifier
Named reference of feature to be placed.
project_input_to_floorboolean
If true, snaps the y-value of the scattered position to the terrain heightmap. If false or unset, y-value is unmodified.
iterations0
Number of scattered positions to generate.
scatter_chanceobject
Probability numerator / denominator that this scatter will occur. Not evaluated each iteration; either no iterations will run, or all will.
scatter_chance
numeratorinteger
UNDOCUMENTED.
denominatorinteger
UNDOCUMENTED.
scatter_chance0
Probability (0-100] that this scatter will occur. Not evaluated each iteration; either no iterations will run, or all will.
coordinate_eval_orderstring
The order in which coordinates will be evaluated. Should be used when a coordinate depends on another. If omitted, defaults to xzy.
x0
Expression for the coordinate (evaluated each iteration). Mutually exclusive with random distribution object below.
xobject
Distribution for the coordinate (evaluated each iteration). Mutually exclusive with Molang expression above.
x
distributionstring
Type of distribution - uniform random, gaussian (centered in the range), triangle (centered in the range), or grid (either fixed-step or jittered).
step_sizeinteger
When the distribution type is grid, defines the distance between steps along this axis.
grid_offsetinteger
When the distribution type is grid, defines the offset along this axis.
extentarray
The lower and upper bound as an offset from the input position
extent
0..00
Lower bound (inclusive) of the scatter range, as an offset from the input point to scatter around.
1..10
Upper bound (inclusive) of the scatter range, as an offset from the input point to scatter around.
y
z
minecraft:search_featuresearch_feature
search_feature:
{
  description "description"
  identifier "places_feature"
  object "search_volume" : opt
  {
    array "max" : opt
    {
      integer "0..0" : opt
      integer "1..1" : opt
      integer "2..2" : opt
    }
    array "min" : opt
    {
      integer "0..0" : opt
      integer "1..1" : opt
      integer "2..2" : opt
    }
  }
  string "search_axis" : opt
  integer "required_successes" : opt
}
descriptiondescription
places_featureidentifier
Named reference of feature to be placed.
search_volumeobject
Axis-aligned bounding box that will be searched for valid placement positions. Expressed as offsets from the input position.
search_volume
maxarray
Maximum extent of the bounding volume expressed as [ x, y, z ].
max
0..0integer
1..1integer
2..2integer
minarray
Maxium extent of the bounding volume expressed as [ x, y, z ].
min
0..0integer
1..1integer
2..2integer
search_axisstring
Axis that the search will sweep along through the search_volume.
required_successesinteger
Number of valid positions the search must find in order to place the referenced feature.
minecraft:sequence_featuresequence_feature
sequence_feature:
{
  description "description"
  array "features" : opt
  {
    identifier "<any array element>"
  }
}
descriptiondescription
featuresarray
List of features to be placed in sequence. The output position of the previous feature is used as the input position to the next.
features
<any array element>identifier
A feature to be placed in sequence. The output position of the previous feature is used as the input position to the next.
minecraft:single_block_featuresingle_block_feature
single_block_feature:
{
  description "description"
  identifier "places_block"
  boolean "enforce_placement_rules" : opt
  boolean "enforce_survivability_rules" : opt
  object "may_attach_to" : opt
  {
     "min_sides_must_attach" : opt
    boolean "auto_rotate" : opt
    identifier "top"
    array "top" : opt
    {
      identifier "<any array element>"
    }
     "bottom" : opt
     "north" : opt
     "south" : opt
     "east" : opt
     "west" : opt
     "all" : opt
     "sides" : opt
  }
  array "may_replace" : opt
  {
    identifier "<any array element>"
  }
}
descriptiondescription
places_blockidentifier
Reference to the block to be placed.
enforce_placement_rulesboolean
If true, enforce the block's canPlace check.
enforce_survivability_rulesboolean
If true, enforce the block's canSurvive check.
may_attach_toobject
The list of valid block and block faces the given block may attach to when being placed.
may_attach_to
min_sides_must_attach
Minimum number of sides that must be attached when being placed.
auto_rotateboolean
Automatically rotate the block to attach sensibly.
topidentifier
Reference to the block it may attach to.
toparray
UNDOCUMENTED.
top
<any array element>identifier
Reference to the block it may attach to.
bottom
UNDOCUMENTED.
north
UNDOCUMENTED.
south
UNDOCUMENTED.
east
UNDOCUMENTED.
west
UNDOCUMENTED.
all
UNDOCUMENTED.
sides
UNDOCUMENTED.
may_replacearray
A list of blocks that may be replaced during placement. Omit this field to allow any block to be replaced.
may_replace
<any array element>identifier
A block that may be replaced during placement. Omit this field to allow any block to be replaced.
minecraft:snap_to_surface_featuresnap_to_surface_feature
snap_to_surface_feature:
{
  description "description"
  identifier "feature_to_snap"
  number "vertical_search_range" : opt
  string "surface" : opt
  boolean "allow_air_placement" : opt
  boolean "allow_underwater_placement" : opt
}
descriptiondescription
feature_to_snapidentifier
Named reference of feature to be snapped.
vertical_search_rangenumber
Range to search for a floor or ceiling for snaping the feature.
surfacestring
Defines the surface that the y-value of the placement position will be snapped to. Valid values: ceiling and `floor'
allow_air_placementboolean
Determines whether the feature can snap through air blocks
allow_underwater_placementboolean
Determines whether the feature can snap through water blocks
minecraft:structure_template_featurestructure_template_feature
structure_template_feature:
{
  description "description"
  string "structure_name" : opt
  integer "adjustment_radius" : opt
  string "facing_direction" : opt
  object "constraints" : opt
  {
    object "grounded" : opt
    {
    }
    object "unburied" : opt
    {
    }
    object "block_intersection" : opt
    {
      array "block_allowlist" : opt
      {
        identifier "<any array element>"
      }
      array "block_whitelist" : opt
      {
        identifier "<any array element>"
      }
    }
  }
}
descriptiondescription
structure_namestring
Reference to the structure to be placed.
adjustment_radiusinteger
How far the structure is allowed to move when searching for a valid placement position. Search is radial, stopping when the nearest valid position is found. Defaults to 0 if omitted.
facing_directionstring
Direction the structure will face when placed in the world. Defaults to random if omitted.
constraintsobject
Specific constraints that must be satisfied when placing this structure.
constraints
groundedobject
When specified, ensures the structure is on the ground.
grounded
unburiedobject
When specified, ensures the structure has air above it.
unburied
block_intersectionobject
When specified, ensures the structure has air above it.
block_intersection
block_allowlistarray
List of blocks the owning structure is allowed to intersect with.
block_allowlist
<any array element>identifier
block_whitelistarray
List of blocks the owning structure is allowed to intersect with.
block_whitelist
<any array element>identifier
minecraft:surface_relative_threshold_featuresurface_relative_threshold_feature
surface_relative_threshold_feature:
{
  description "description"
  identifier "feature_to_place"
  integer "minimum_distance_below_surface" : opt
}
descriptiondescription
feature_to_placeidentifier
Named reference of feature to be placed.
minimum_distance_below_surfaceinteger
The minimum number of blocks required to be between the estimated surface level and a valid place for this feature.
minecraft:tree_featuretree_feature
tree_feature:
{
  description "description"
  identifier "base_block"
  array "base_block" : opt
  {
    identifier "<any array element>"
  }
  object "base_cluster" : opt
  {
    array "may_replace" : opt
    {
      identifier "<any array element>"
    }
    integer "num_clusters" : opt
    integer "cluster_radius" : opt
  }
  array "may_grow_on" : opt
  {
    identifier "<any array element>"
  }
  array "may_replace" : opt
  {
    identifier "<any array element>"
  }
  array "may_grow_through" : opt
  {
    identifier "<any array element>"
  }
  object "acacia_trunk" : opt
  {
    integer "trunk_width" : opt
    object "trunk_height" : opt
    {
      integer "base" : opt
      array "intervals" : opt
      {
        integer "<any array element>" : opt
      }
      integer "min_height_for_canopy" : opt
    }
    object "trunk_lean" : opt
    {
      boolean "allow_diagonal_growth" : opt
      range_number_type "lean_height"
      range_number_type "lean_steps"
      range_number_type "lean_length"
    }
    string "trunk_block" : opt
    object "branches" : opt
    {
      range_number_type "branch_length"
      range_number_type "branch_position"
      chance_information "branch_chance"
      object "branch_canopy" : opt
      {
        object "acacia_canopy" : opt
        {
          integer "canopy_size" : opt
          string "leaf_block" : opt
          boolean "simplify_canopy" : opt
        }
        object "canopy" : opt
        {
          object "canopy_offset" : opt
          {
            integer "min" : opt
            integer "max" : opt
          }
          integer "min_width" : opt
          object "canopy_slope" : opt
          {
            integer "rise" : opt
            integer "run" : opt
          }
          chance_information "variation_chance"
          array "variation_chance" : opt
          {
            chance_information "<any array element>"
          }
          string "leaf_block" : opt
          object "canopy_decoration" : opt
          {
            chance_information "decoration_chance"
            identifier "decoration_block"
            integer "num_steps" : opt
            string "step_direction" : opt
          }
        }
        object "cherry_canopy" : opt
        {
          string "leaf_block" : opt
          integer "height" : opt
          integer "radius" : opt
          integer "trunk_width" : opt
          chance_information "wide_bottom_layer_hole_chance"
          chance_information "corner_hole_chance"
          chance_information "hanging_leaves_chance"
          chance_information "hanging_leaves_extension_chance"
        }
        object "fancy_canopy" : opt
        {
          integer "height" : opt
          integer "radius" : opt
          string "leaf_block" : opt
        }
        object "mangrove_canopy" : opt
        {
          integer "canopy_height" : opt
          integer "canopy_radius" : opt
          integer "leaf_placement_attempts" : opt
          array "leaf_blocks" : opt
          {
            string "0..0" : opt
            number "1..1" : opt
          }
          object "canopy_decoration" : opt
          {
            chance_information "decoration_chance"
            identifier "decoration_block"
            integer "num_steps" : opt
            string "step_direction" : opt
          }
          identifier "hanging_block"
          chance_information "hanging_block_placement_chance"
        }
        object "mega_canopy" : opt
        {
          integer "canopy_height" : opt
          integer "base_radius" : opt
          number "core_width" : opt
          boolean "simplify_canopy" : opt
          string "leaf_block" : opt
        }
        object "mega_pine_canopy" : opt
        {
          integer "canopy_height" : opt
          integer "base_radius" : opt
          number "radius_step_modifier" : opt
          number "core_width" : opt
          string "leaf_block" : opt
        }
        object "pine_canopy" : opt
        {
          integer "height" : opt
          integer "radius" : opt
          string "leaf_block" : opt
        }
        object "roofed_canopy" : opt
        {
          integer "canopy_height" : opt
          integer "core_width" : opt
          integer "outer_radius" : opt
          integer "inner_radius" : opt
          string "leaf_block" : opt
        }
        object "spruce_canopy" : opt
        {
          integer "lower_offset" : opt
          integer "upper_offset" : opt
          integer "max_radius" : opt
          string "leaf_block" : opt
        }
      }
      object "trunk_decoration" : opt
      {
      }
    }
  }
  object "cherry_trunk" : opt
  {
    string "trunk_block" : opt
    object "trunk_height" : opt
    {
      integer "base" : opt
      array "intervals" : opt
      {
        integer "<any array element>" : opt
      }
    }
    object "branches" : opt
    {
      object "tree_type_weights" : opt
      {
        integer "one_branch" : opt
        integer "two_branches" : opt
        integer "two_branches_and_trunk" : opt
      }
      range_number_type "branch_horizontal_length"
      range_number_type "branch_start_offset_from_top"
      range_number_type "branch_end_offset_from_top"
      chance_information "branch_chance"
      object "branch_canopy" : opt
      {
      }
    }
  }
  object "fallen_trunk" : opt
  {
    integer "log_length" : opt
    integer "stump_height" : opt
    integer "height_modifier" : opt
    string "trunk_block" : opt
    identifier "log_decoration_feature"
    object "trunk_decoration" : opt
    {
    }
  }
  object "fancy_trunk" : opt
  {
    object "trunk_height" : opt
    {
      integer "base" : opt
      integer "variance" : opt
      number "scale" : opt
    }
    integer "trunk_width" : opt
    object "branches" : opt
    {
      number "slope" : opt
      number "density" : opt
      number "min_altitude_factor" : opt
    }
    string "trunk_block" : opt
    number "width_scale" : opt
    number "foliage_altitude_factor" : opt
  }
  object "mangrove_trunk" : opt
  {
    integer "trunk_width" : opt
    object "trunk_height" : opt
    {
      integer "base" : opt
      integer "height_rand_a" : opt
      integer "height_rand_b" : opt
    }
    string "trunk_block" : opt
    object "branches" : opt
    {
      range_number_type "branch_length"
      range_number_type "branch_steps"
      chance_information "branch_chance"
    }
    object "trunk_decoration" : opt
    {
    }
  }
  object "mega_trunk" : opt
  {
    integer "trunk_width" : opt
    object "trunk_height" : opt
    {
      integer "base" : opt
      array "intervals" : opt
      {
        integer "<any array element>" : opt
      }
      integer "min_height_for_canopy" : opt
    }
    string "trunk_block" : opt
    object "trunk_decoration" : opt
    {
    }
    object "branches" : opt
    {
      integer "branch_length" : opt
      number "branch_slope" : opt
      range_number_type "branch_interval"
      object "branch_altitude_factor" : opt
      {
        number "min" : opt
        number "max" : opt
      }
      object "branch_canopy" : opt
      {
      }
    }
  }
  object "trunk" : opt
  {
    range_number_type "trunk_height"
    range_number_type "height_modifier"
    object "can_be_submerged" : opt
    {
      integer "max_depth" : opt
    }
    boolean "can_be_submerged" : opt
    string "trunk_block" : opt
    object "trunk_decoration" : opt
    {
    }
  }
  object "acacia_canopy" : opt
  {
    integer "canopy_size" : opt
    string "leaf_block" : opt
    boolean "simplify_canopy" : opt
  }
  object "canopy" : opt
  {
    object "canopy_offset" : opt
    {
      integer "min" : opt
      integer "max" : opt
    }
    integer "min_width" : opt
    object "canopy_slope" : opt
    {
      integer "rise" : opt
      integer "run" : opt
    }
    chance_information "variation_chance"
    array "variation_chance" : opt
    {
      chance_information "<any array element>"
    }
    string "leaf_block" : opt
    object "canopy_decoration" : opt
    {
      chance_information "decoration_chance"
      identifier "decoration_block"
      integer "num_steps" : opt
      string "step_direction" : opt
    }
  }
  object "cherry_canopy" : opt
  {
    string "leaf_block" : opt
    integer "height" : opt
    integer "radius" : opt
    integer "trunk_width" : opt
    chance_information "wide_bottom_layer_hole_chance"
    chance_information "corner_hole_chance"
    chance_information "hanging_leaves_chance"
    chance_information "hanging_leaves_extension_chance"
  }
  object "fancy_canopy" : opt
  {
    integer "height" : opt
    integer "radius" : opt
    string "leaf_block" : opt
  }
  object "mangrove_canopy" : opt
  {
    integer "canopy_height" : opt
    integer "canopy_radius" : opt
    integer "leaf_placement_attempts" : opt
    array "leaf_blocks" : opt
    {
      string "0..0" : opt
      number "1..1" : opt
    }
    object "canopy_decoration" : opt
    {
    }
    identifier "hanging_block"
    chance_information "hanging_block_placement_chance"
  }
  object "mega_canopy" : opt
  {
    integer "canopy_height" : opt
    integer "base_radius" : opt
    number "core_width" : opt
    boolean "simplify_canopy" : opt
    string "leaf_block" : opt
  }
  object "mega_pine_canopy" : opt
  {
    integer "canopy_height" : opt
    integer "base_radius" : opt
    number "radius_step_modifier" : opt
    number "core_width" : opt
    string "leaf_block" : opt
  }
  object "pine_canopy" : opt
  {
    integer "height" : opt
    integer "radius" : opt
    string "leaf_block" : opt
  }
  object "roofed_canopy" : opt
  {
    integer "canopy_height" : opt
    integer "core_width" : opt
    integer "outer_radius" : opt
    integer "inner_radius" : opt
    string "leaf_block" : opt
  }
  object "spruce_canopy" : opt
  {
    integer "lower_offset" : opt
    integer "upper_offset" : opt
    integer "max_radius" : opt
    string "leaf_block" : opt
  }
  object "random_spread_canopy" : opt
  {
    integer "canopy_height" : opt
    integer "canopy_radius" : opt
    integer "leaf_placement_attempts" : opt
    array "leaf_blocks" : opt
    {
      string "0..0" : opt
      number "1..1" : opt
    }
  }
  object "mangrove_roots" : opt
  {
    integer "max_root_width" : opt
    integer "max_root_length" : opt
    identifier "root_block"
    object "above_root" : opt
    {
      chance_information "above_root_chance"
      identifier "above_root_block"
      identifier "muddy_root_block"
      identifier "mud_block"
      range_number_type "y_offset"
      array "roots_may_grow_through" : opt
      {
        identifier "<any array element>"
      }
      object "root_decoration" : opt
      {
      }
    }
  }
}
descriptiondescription
base_blockidentifier
base_blockarray
base_block
<any array element>identifier
base_clusterobject
Allows you to define a number of clusters for the base of the tree. Used to generate mega tree variants.
base_cluster
may_replacearray
List of blocks that the base cluster of a tree can replace.
may_replace
<any array element>identifier
num_clustersinteger
Number of clusters that can be generated.
cluster_radiusinteger
Radius where the clusters that can be generated.
may_grow_onarray
List of blocks where a tree can grow on.
may_grow_on
<any array element>identifier
may_replacearray
List of blocks that a tree can replace.
may_replace
<any array element>identifier
may_grow_througharray
List of blocks that a tree can grow through.
may_grow_through
<any array element>identifier
acacia_trunkobject
Configutarion for the acacia trunk.
acacia_trunk
trunk_widthinteger
The width of the tree trunk.
trunk_heightobject
Configuration object for the trunk height.
trunk_height
baseinteger
Min height for the trunk.
intervalsarray
Intervals used to randomize the trunk height, the value of each interval will create a random number where (0 <= rand < interval)), and will be added to the height.
intervals
<any array element>integer
min_height_for_canopyinteger
Min height where the canopy can be placed.
trunk_leanobject
Configuration object for diagonal branches.
trunk_lean
allow_diagonal_growthboolean
If true, diagonal branches will be created.
lean_heightrange_number_type
Number of blocks below the tree height at which diagonal branches can be created.
lean_stepsrange_number_type
Number of steps taken in X/Z direction while creating a diagonal branch.
lean_lengthrange_number_type
Length for the diagonal branch in the Y axis.
trunk_blockstring
The block that forms the tree trunk.
branchesobject
Configuration object for branches.
branches
branch_lengthrange_number_type
Length for the branch in the Y axis.
branch_positionrange_number_type
Starting Y position for the branch.
branch_chancechance_information
Probability of creating a branch.
chance_information:
{
  number "numerator" : opt
  number "denominator" : opt
}
numeratornumber
UNDOCUMENTED.
denominatornumber
UNDOCUMENTED.
chance_information:
number
branch_canopyobject
Configuration object for the canopy.
branch_canopy
acacia_canopyobject
Configuration object for the acacia canopy.
acacia_canopy
canopy_sizeinteger
The size of the canopy.
leaf_blockstring
The block thata forms the canopy of the tree.
simplify_canopyboolean
If true the canopy uses a simple pattern.
canopyobject
Configuration object for the normal canopy.
canopy
canopy_offsetobject
Canopy position offset relative to the block above the trunk.
canopy_offset
mininteger
Min canopy position offset.
maxinteger
Max canopy position offset.
min_widthinteger
Min width for the canopy.
canopy_slopeobject
Configuration object for the canopy slope.
canopy_slope
riseinteger
The numerator for the slope fraction.
runinteger
The denominator for the slope fraction.
variation_chancechance_information
Determines the chance of creating leaf blocks for every layer of the canopy. Larger numbers create a denser tree.
variation_chancearray
Determines the chance of creating leaf blocks for every layer of the canopy. Larger numbers create a denser tree.
variation_chance
<any array element>chance_information
leaf_blockstring
The block thata forms the canopy of the tree.
canopy_decorationobject
Configuration object for the canopy decoration.
canopy_decoration
decoration_chancechance_information
Probability of decorating the trunk.
decoration_blockidentifier
The block used for decorating the trunk.
num_stepsinteger
Number of decoration blocks to place.
step_directionstring
Directions to spread decoration blocks.
cherry_canopyobject
Configuration object for the cherry canopy.
cherry_canopy
leaf_blockstring
The block thata forms the canopy of the tree.
heightinteger
Number of layers for the canopy.
radiusinteger
The radius of the canopy.
trunk_widthinteger
The width of the tree trunk.
wide_bottom_layer_hole_chancechance_information
Probability of the canopy having a hole in the bottom layer.
corner_hole_chancechance_information
Probability of the canopy having a hole in the corner.
hanging_leaves_chancechance_information
Probability of the canopy having hanging leaves
hanging_leaves_extension_chancechance_information
Probability of hanging leaves extending further down
fancy_canopyobject
Configuration object for the fancy canopy.
fancy_canopy
heightinteger
Number of layers for the canopy.
radiusinteger
The radius of the canopy.
leaf_blockstring
The block thata forms the canopy of the tree.
mangrove_canopyobject
Configuration object for the mangrove canopy.
mangrove_canopy
canopy_heightinteger
Number of layers for the canopy.
canopy_radiusinteger
The radius of the canopy.
leaf_placement_attemptsinteger
Max number of attempts to create leaf blocks.
leaf_blocksarray
The blocks that form the canopy of the tree
leaf_blocks
0..0string
The block thata forms the canopy of the tree.
1..1number
Weight used in random selection. Value is relative to other weights in the collection.
canopy_decorationobject
Configuration object for the decoration.
canopy_decoration
decoration_chancechance_information
Probability of decorating the trunk.
decoration_blockidentifier
The block used for decorating the trunk.
num_stepsinteger
Number of decoration blocks to place.
step_directionstring
Directions to spread decoration blocks.
hanging_blockidentifier
The block to be used as a hanging block.
hanging_block_placement_chancechance_information
Probability of creating a hanging leaf block.
mega_canopyobject
Configuration object for the mega canopy.
mega_canopy
canopy_heightinteger
Number of layers for the canopy.
base_radiusinteger
The radius of the canopy.
core_widthnumber
Width of the tree trunk.
simplify_canopyboolean
If true the canopy uses a simple pattern.
leaf_blockstring
The block thata forms the canopy of the tree.
mega_pine_canopyobject
Configuration object for the mega pine canopy.
mega_pine_canopy
canopy_heightinteger
Number of layers for the canopy.
base_radiusinteger
The radius of the canopy.
radius_step_modifiernumber
Modifier for the base radius of the canopy.
core_widthnumber
Width of the tree trunk.
leaf_blockstring
The block thata forms the canopy of the tree.
pine_canopyobject
Configuration object for the pine canopy.
pine_canopy
heightinteger
Number of layers for the canopy.
radiusinteger
The radius of the canopy.
leaf_blockstring
The block thata forms the canopy of the tree.
roofed_canopyobject
Configuration object for the roofed canopy.
roofed_canopy
canopy_heightinteger
Roofed canopies feature a base and a top layer, and an extra cap layer on some occasions, this value controls the number of layers in the middle.
core_widthinteger
Width of the tree trunk.
outer_radiusinteger
Radius used for the base and top layers.
inner_radiusinteger
Radius used for the middle layers.
leaf_blockstring
The block thata forms the canopy of the tree.
spruce_canopyobject
Configuration object for the spruce canopy.
spruce_canopy
lower_offsetinteger
Min canopy position offset.
upper_offsetinteger
Max canopy position offset.
max_radiusinteger
Max radius of the canopy.
leaf_blockstring
The block thata forms the canopy of the tree.
trunk_decorationobject
Configuration object for the decoration.
trunk_decoration
cherry_trunkobject
Configutarion for the cherry trunk.
cherry_trunk
trunk_blockstring
The block that forms the tree trunk.
trunk_heightobject
Configuration object for the trunk height.
trunk_height
baseinteger
Min height for the trunk.
intervalsarray
Intervals used to randomize the trunk height, the value of each interval will create a random number where (0 <= rand < interval)), and will be added to the height.
intervals
<any array element>integer
branchesobject
Configuration object for branches.
branches
tree_type_weightsobject
Configuration object to pick a tree variant based on a weighted random number
tree_type_weights
one_branchinteger
Tree variant with one branch.
two_branchesinteger
Tree variant with two branches.
two_branches_and_trunkinteger
Tree variant with three branch.
branch_horizontal_lengthrange_number_type
Branch length in X/Z axis.
branch_start_offset_from_toprange_number_type
Branch starting position relative to the top of the tree
branch_end_offset_from_toprange_number_type
Branch end position relative to the top of the tree
branch_chancechance_information
Probability of creating a branch.
branch_canopyobject
Configuration object for the canopy.
branch_canopy
fallen_trunkobject
Configutarion for the fallen trunk.
fallen_trunk
log_lengthinteger
Length of the fallen log.
stump_heightinteger
height of the stump.
height_modifierinteger
Modifier for the length of the fallen log.
trunk_blockstring
The block that forms the tree trunk.
log_decoration_featureidentifier
Feature that can be used to decorate the fallen log.
trunk_decorationobject
Configuration object for the decoration.
trunk_decoration
fancy_trunkobject
Configutarion for the fancy trunk.
fancy_trunk
trunk_heightobject
Configuration object for the trunk height.
trunk_height
baseinteger
Min height for the trunk.
varianceinteger
Modifier for the trunk height.
scalenumber
Final tree height is multiplied by this scale.
trunk_widthinteger
The width of the tree trunk.
branchesobject
Configuration object for branches.
branches
slopenumber
Slope for the branch, where 0 is horizontal and 1 is vertical.
densitynumber
Density of foliage.
min_altitude_factornumber
Min height for branches. Represented by a percentage of the tree height.
trunk_blockstring
The block that forms the tree trunk.
width_scalenumber
Scale modifier for the tree radius.
foliage_altitude_factornumber
Min height for foliage. Represented by a percentage of the tree height.
mangrove_trunkobject
Configutarion for the mangrove trunk.
mangrove_trunk
trunk_widthinteger
The width of the tree trunk.
trunk_heightobject
Configuration object for the trunk height.
trunk_height
baseinteger
Min height for the trunk.
height_rand_ainteger
Tree height modifier A.
height_rand_binteger
Tree height modifier B.
trunk_blockstring
The block that forms the tree trunk.
branchesobject
Configuration object for branches.
branches
branch_lengthrange_number_type
Length for the branch in the Y axis.
branch_stepsrange_number_type
Number of branches to place.
branch_chancechance_information
Probability of creating a branch.
trunk_decorationobject
Configuration object for the decoration.
trunk_decoration
mega_trunkobject
Configutarion for the mega trunk.
mega_trunk
trunk_widthinteger
The width of the tree trunk.
trunk_heightobject
Configuration object for the trunk height.
trunk_height
baseinteger
Min height for the trunk.
intervalsarray
Intervals used to randomize the trunk height, the value of each interval will create a random number where (0 <= rand < interval)), and will be added to the height.
intervals
<any array element>integer
min_height_for_canopyinteger
Min height where the canopy can be placed.
trunk_blockstring
The block that forms the tree trunk.
trunk_decorationobject
Configuration object for the decoration.
trunk_decoration
branchesobject
Configuration object for branches.
branches
branch_lengthinteger
Length for the branch.
branch_slopenumber
Slope for the branch, where 0 is horizontal and 1 is vertical.
branch_intervalrange_number_type
Randomized distance between branches.
branch_altitude_factorobject
Altitude at which branches can spawn, relative to the tree height.
branch_altitude_factor
minnumber
Min altitude where branches can spawn.
maxnumber
Max altitude where branches can spawn.
branch_canopyobject
Configuration object for the canopy.
branch_canopy
trunkobject
Configutarion for the normal trunk.
trunk
trunk_heightrange_number_type
Defines the height of the trunk.
height_modifierrange_number_type
Modifier for the height of the trunk.
can_be_submergedobject
Specifies if the trunk can be submerged.
can_be_submerged
max_depthinteger
Defines the max depth at which the trunk can be submerged.
can_be_submergedboolean
Specifies if the trunk can be submerged.
trunk_blockstring
The block that forms the tree trunk.
trunk_decorationobject
Configuration object for the decoration.
trunk_decoration
acacia_canopyobject
Configuration object for the acacia canopy.
acacia_canopy
canopy_sizeinteger
The size of the canopy.
leaf_blockstring
The block thata forms the canopy of the tree.
simplify_canopyboolean
If true the canopy uses a simple pattern.
canopyobject
Configuration object for the normal canopy.
canopy
canopy_offsetobject
Canopy position offset relative to the block above the trunk.
canopy_offset
mininteger
Min canopy position offset.
maxinteger
Max canopy position offset.
min_widthinteger
Min width for the canopy.
canopy_slopeobject
Configuration object for the canopy slope.
canopy_slope
riseinteger
The numerator for the slope fraction.
runinteger
The denominator for the slope fraction.
variation_chancechance_information
Determines the chance of creating leaf blocks for every layer of the canopy. Larger numbers create a denser tree.
variation_chancearray
Determines the chance of creating leaf blocks for every layer of the canopy. Larger numbers create a denser tree.
variation_chance
<any array element>chance_information
leaf_blockstring
The block thata forms the canopy of the tree.
canopy_decorationobject
Configuration object for the canopy decoration.
canopy_decoration
decoration_chancechance_information
Probability of decorating the trunk.
decoration_blockidentifier
The block used for decorating the trunk.
num_stepsinteger
Number of decoration blocks to place.
step_directionstring
Directions to spread decoration blocks.
cherry_canopyobject
Configuration object for the cherry canopy.
cherry_canopy
leaf_blockstring
The block thata forms the canopy of the tree.
heightinteger
Number of layers for the canopy.
radiusinteger
The radius of the canopy.
trunk_widthinteger
The width of the tree trunk.
wide_bottom_layer_hole_chancechance_information
Probability of the canopy having a hole in the bottom layer.
corner_hole_chancechance_information
Probability of the canopy having a hole in the corner.
hanging_leaves_chancechance_information
Probability of the canopy having hanging leaves
hanging_leaves_extension_chancechance_information
Probability of hanging leaves extending further down
fancy_canopyobject
Configuration object for the fancy canopy.
fancy_canopy
heightinteger
Number of layers for the canopy.
radiusinteger
The radius of the canopy.
leaf_blockstring
The block thata forms the canopy of the tree.
mangrove_canopyobject
Configuration object for the mangrove canopy.
mangrove_canopy
canopy_heightinteger
Number of layers for the canopy.
canopy_radiusinteger
The radius of the canopy.
leaf_placement_attemptsinteger
Max number of attempts to create leaf blocks.
leaf_blocksarray
The blocks that form the canopy of the tree
leaf_blocks
0..0string
The block thata forms the canopy of the tree.
1..1number
Weight used in random selection. Value is relative to other weights in the collection.
canopy_decorationobject
Configuration object for the decoration.
canopy_decoration
hanging_blockidentifier
The block to be used as a hanging block.
hanging_block_placement_chancechance_information
Probability of creating a hanging leaf block.
mega_canopyobject
Configuration object for the mega canopy.
mega_canopy
canopy_heightinteger
Number of layers for the canopy.
base_radiusinteger
The radius of the canopy.
core_widthnumber
Width of the tree trunk.
simplify_canopyboolean
If true the canopy uses a simple pattern.
leaf_blockstring
The block thata forms the canopy of the tree.
mega_pine_canopyobject
Configuration object for the mega pine canopy.
mega_pine_canopy
canopy_heightinteger
Number of layers for the canopy.
base_radiusinteger
The radius of the canopy.
radius_step_modifiernumber
Modifier for the base radius of the canopy.
core_widthnumber
Width of the tree trunk.
leaf_blockstring
The block thata forms the canopy of the tree.
pine_canopyobject
Configuration object for the pine canopy.
pine_canopy
heightinteger
Number of layers for the canopy.
radiusinteger
The radius of the canopy.
leaf_blockstring
The block thata forms the canopy of the tree.
roofed_canopyobject
Configuration object for the roofed canopy.
roofed_canopy
canopy_heightinteger
Roofed canopies feature a base and a top layer, and an extra cap layer on some occasions, this value controls the number of layers in the middle.
core_widthinteger
Width of the tree trunk.
outer_radiusinteger
Radius used for the base and top layers.
inner_radiusinteger
Radius used for the middle layers.
leaf_blockstring
The block thata forms the canopy of the tree.
spruce_canopyobject
Configuration object for the spruce canopy.
spruce_canopy
lower_offsetinteger
Min canopy position offset.
upper_offsetinteger
Max canopy position offset.
max_radiusinteger
Max radius of the canopy.
leaf_blockstring
The block thata forms the canopy of the tree.
random_spread_canopyobject
Configuration object for the random spread canopy.
random_spread_canopy
canopy_heightinteger
Number of layers for the canopy.
canopy_radiusinteger
The radius of the canopy.
leaf_placement_attemptsinteger
Max number of attempts to create leaf blocks.
leaf_blocksarray
The blocks that form the canopy of the tree
leaf_blocks
0..0string
The block thata forms the canopy of the tree.
1..1number
Weight used in random selection. Value is relative to other weights in the collection.
mangrove_rootsobject
Configuration for mangrove roots
mangrove_roots
max_root_widthinteger
Max width that the roots can occupy. The width increases up to the max width while moving downwards. When a max width is reached, roots will grow vertically
max_root_lengthinteger
Max length that the roots can occupy.
root_blockidentifier
Block used for roots.
above_rootobject
Configuration object for blocks decorating the top of the roots
above_root
above_root_chancechance_information
Probability of creating a block above the root
above_root_blockidentifier
The block placed on the top of the roots.
muddy_root_blockidentifier
The block used for muddy roots.
mud_blockidentifier
The block used to determine if a muddy root should be placed.
y_offsetrange_number_type
Root offset from the trunk
roots_may_grow_througharray
List of blocks that a root can grow through.
roots_may_grow_through
<any array element>identifier
root_decorationobject
Configuration object for the decoration.
root_decoration
minecraft:underwater_cave_carver_featureunderwater_cave_carver_feature
underwater_cave_carver_feature:
{
  description "description"
  identifier "fill_with"
  0 "width_modifier"
  integer "skip_carve_chance" : opt
  integer "height_limit" : opt
  array "y_scale" : opt
  {
    number "0..0" : opt
    number "1..1" : opt
  }
  array "horizontal_radius_multiplier" : opt
  {
    number "0..0" : opt
    number "1..1" : opt
  }
  array "vertical_radius_multiplier" : opt
  {
    number "0..0" : opt
    number "1..1" : opt
  }
  array "floor_level" : opt
  {
    number "0..0" : opt
    number "1..1" : opt
  }
  identifier "replace_air_with"
}
descriptiondescription
fill_withidentifier
Reference to the block to fill the cave with.
width_modifier0
How many blocks to increase the cave radius by, from the center point of the cave.
skip_carve_chanceinteger
The chance to skip doing the carve (1 / value).
height_limitinteger
The height limit where we attempt to carve
y_scalearray
The scaling in y
y_scale
0..0number
1..1number
horizontal_radius_multiplierarray
horizontal_radius_multiplier
0..0number
1..1number
vertical_radius_multiplierarray
vertical_radius_multiplier
0..0number
1..1number
floor_levelarray
floor_level
0..0number
1..1number
replace_air_withidentifier
Reference to the block to replace air blocks with.
minecraft:vegetation_patch_featurevegetation_patch_feature
vegetation_patch_feature:
{
  description "description"
  array "replaceable_blocks" : opt
  {
    identifier "<any array element>"
  }
  identifier "ground_block"
  identifier "vegetation_feature"
  string "surface" : opt
  integer "depth" : opt
  number "extra_deep_block_chance" : opt
  integer "vertical_range" : opt
  number "vegetation_chance" : opt
  integer "horizontal_radius" : opt
  number "extra_edge_column_chance" : opt
  boolean "waterlogged" : opt
}
descriptiondescription
replaceable_blocksarray
Blocks that can be replaced by the ground blocks on the patch.
replaceable_blocks
<any array element>identifier
ground_blockidentifier
Block used to create a base for the vegetation patch.
vegetation_featureidentifier
Feature that will be placed by the patch.
surfacestring
Determines if a vegetation patch will grow from the ceiling or the floor.
depthinteger
Depth of the base covered by the ground blocks.
extra_deep_block_chancenumber
Probability of putting the ground blocks one block deeper. Adds some randomness to the bottom of the patch.
vertical_rangeinteger
Vertical range used to determine a suitable surface position for the patch.
vegetation_chancenumber
Probability of spawning vegetation on the patch. Larger numbers create a denser vegetation patch.
horizontal_radiusinteger
Horizontal area that the vegetation patch will cover.
extra_edge_column_chancenumber
Probability of spawning vegetation on the edge of the patch radius.
waterloggedboolean
If true, waterlogs the positions occupied by the ground blocks.
minecraft:weighted_random_featureweighted_random_feature
weighted_random_feature:
{
  description "description"
  array "features" : opt
  {
    array "<any array element>" : opt
    {
      identifier "0..0"
      number "1..1" : opt
    }
  }
}
descriptiondescription
featuresarray
Collection of weighted features that placement will select from.
features
<any array element>array
Named reference to a feature.
<any array element>
0..0identifier
Named reference to a feature.
1..1number
Weight used in random selection. Value is relative to other weights in the collection.