Wiki ArticleMinecraft Work in progressMinecraft Work in progress without a noteGenerated features

Root System

A root system is a feature that spawns below naturally generated azalea trees.

A root system is a mess of rooted dirt blocks in a clump.

If the initial position is not air, root system fails to place. Root system checks every position, starting from the initial position and moving upward by [Int] root_column_max_height blocks. If it goes above the WORLD_SURFACE heightmap, root system fails to place.

This article is a work in progress.
 
Please help expand and improve it. The talk page may contain suggestions.

A root system is a feature that spawns below naturally generated azalea trees.

Generation

A root system is a mess of rooted dirt blocks in a clump.

Data values

ID

Java Edition:

Feature typeIdentifier
BlockSprite rooted-dirt.png: Sprite image for rooted-dirt in Minecraft [No displayed name]root_system
Configured featureIdentifier
BlockSprite rooted-dirt.png: Sprite image for rooted-dirt in Minecraft [No displayed name]rooted_azalea_tree

Config

Main article: Configured feature

Java Edition:

If the initial position is not air, root system fails to place. Root system checks every position, starting from the initial position and moving upward by [Int] root_column_max_height blocks. If it goes above the WORLD_SURFACE heightmap, root system fails to place.

At each position in order:

  1. If the amount of air and water blocks above the position is less than [Int] required_vertical_space_for_tree or the highest water block is higher than [Int] allowed_vertical_water_for_tree, the position is not valid;
  2. [NBT Compound / JSON Object] allowed_tree_position block predicate;
  3. If [Int] level_test_distance is not 0, in each cardinal direction with an offset [Int] level_test_distance by XZ 2 points are checked with offset [Int] max_level_deviation by Y above and below. If below point is air or above point is not air, the position is not valid. That means if [Int] max_level_deviation is set to 0, this check will always fail;
  4. If below block is lava or not solid, the position is not valid;
  5. If [String][NBT Compound / JSON Object] feature fails to place, the position is not valid.

After a position is found, roots are placed within a [Int] root_radius along XZ [Int] root_placement_attempts times. They can replace only [String][NBT List / JSON Array] root_replaceable blocks. After roots are placed, hanging roots are placed within a radius, defined by [Int] hanging_root_radius along XZ and [Int] hanging_roots_vertical_span along Y [Int] hanging_root_placement_attempts times. If a block is air, then block predicates has_sturdy_face above and would_survive are applied.

  • [NBT Compound / JSON Object] config
    • [Int] required_vertical_space_for_tree Value between 1 and 64 (inclusive).
    • [Int] level_test_distance Value between 0 and 16 (inclusive).
    • [Int] max_level_deviation Value between 0 and 64 (inclusive).
    • [Int] root_radius Value between 1 and 64 (inclusive).
    • [Int] root_placement_attempts Value between 1 and 256 (inclusive).
    • [Int] root_column_max_height Value between 1 and 4096 (inclusive).
    • [Int] hanging_root_radius Value between 1 and 64 (inclusive).
    • [Int] hanging_roots_vertical_span Value between 1 and 16 (inclusive).
    • [Int] hanging_root_placement_attempts Value between 1 and 256 (inclusive).
    • [Int] allowed_vertical_water_for_tree Value between 1 and 64 (inclusive).
    • [String][NBT List / JSON Array] root_replaceable A block ID or a list of IDs, or tag with # specifying which blocks can be replaced by the root column.
    • [NBT Compound / JSON Object] root_state_provider The block to use for the root column.
    • [NBT Compound / JSON Object] hanging_root_state_provider The block to use hanging below the root column.
    • [NBT Compound / JSON Object] allowed_tree_position The block predicate used to check if the tree position is valid.
    • [String][NBT Compound / JSON Object] 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.

History

Java Edition

Java Edition
1.18Experimental Snapshot 1Added root systems.
Pre-release 7Root systems no longer generate underwater.[1]
26.2snap1The field [String][NBT List / JSON Array] root_replaceable now also accepts an ID or a list of IDs in addition to a tag.
snap6New field [Int] level_test_distance.
New field [Int] max_level_deviation.

Bedrock Edition

Bedrock Edition
1.17.0beta 1.17.0.50Added root systems.

Issues

Issues relating to "Root System" are maintained on the bug tracker. Issues should be reported and viewed there.

References