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.
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
| Feature type | Identifier |
|---|---|
root_system |
| Configured feature | Identifier |
|---|---|
rooted_azalea_tree |
Config
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:
- 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;
- [NBT Compound / JSON Object] allowed_tree_position block predicate;
- 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;
- If below block is lava or not solid, the position is not valid;
- 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.
- Block state provider see Template:Nbt inherit/block state provider/template
- [NBT Compound / JSON Object] hanging_root_state_provider The block to use hanging below the root column.
- Block state provider see Template:Nbt inherit/block state provider/template
- [NBT Compound / JSON Object] allowed_tree_position The block predicate used to check if the tree position is valid.
- [String] type: The type of the block predicate. See Block predicate § Types for options.
- additional fields depending on [String] type. See Block predicate § Types.
- [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.
{
"type": "minecraft:root_system",
"config": {
"required_vertical_space_for_tree": 3,
"level_test_distance": 0,
"max_level_deviation": 0,
"root_radius": 3,
"root_placement_attempts": 20,
"root_column_max_height": 100,
"hanging_root_radius": 3,
"hanging_roots_vertical_span": 2,
"hanging_root_placement_attempts": 20,
"allowed_vertical_water_for_tree": 2,
"root_replaceable": "#minecraft:azalea_root_replaceable",
"root_state_provider": {
"type": "minecraft:simple_state_provider",
"state": {
"Name": "minecraft:rooted_dirt"
}
},
"hanging_root_state_provider": {
"type": "minecraft:simple_state_provider",
"state": {
"Name": "minecraft:hanging_roots",
"Properties": {
"waterlogged": "false"
}
}
},
"allowed_tree_position": {
"type": "minecraft:true"
},
"feature": {
"feature": "minecraft:azalea_tree",
"placement": []
}
}
}
History
Java Edition
| Java Edition | |||||||
|---|---|---|---|---|---|---|---|
| 1.18 | Experimental Snapshot 1 | Added root systems. | |||||
| Pre-release 7 | Root systems no longer generate underwater.[1] | ||||||
| 26.2 | snap1 | The field [String][NBT List / JSON Array] root_replaceable now also accepts an ID or a list of IDs in addition to a tag. | |||||
| snap6 | New field [Int] level_test_distance. | ||||||
| New field [Int] max_level_deviation. | |||||||
Bedrock Edition
| Bedrock Edition | |||||||
|---|---|---|---|---|---|---|---|
| 1.17.0 | beta 1.17.0.50 | Added root systems. | |||||
Issues
Issues relating to "Root System" are maintained on the bug tracker. Issues should be reported and viewed there.
References
Navigation
| |||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||