Custom Grower Types
A grower type decides which world-generation tree features a sapling can grow into. Each tree type references a grower type through its treeGrowerName field.
You can add your own grower types by dropping JSON files into the config directory. No coding required (for the Java API, see Plugin API).
Client & Server
Grower types only control sapling growth (server-side world generation), so they don't register any blocks or items and are only required on the server. Even so, the simplest approach is to keep the entire config/resourcestrees folder identical on the client and server — your resource types and tree types must match on both sides.
Custom Grower Types
Place JSON files in:
config/resourcestrees/grower_type/<name>.jsonJSON Format
{
"name": "oak",
"trees": [
{ "data": "minecraft:oak", "weight": 9 },
{ "data": "minecraft:fancy_oak", "weight": 1 }
],
"megaTrees": [],
"flowerTrees": [
{ "data": "minecraft:oak_bees_005", "weight": 1 }
],
"shortestTreeType": "minecraft:oak"
}Fields
| Field | Required | Default | Description |
|---|---|---|---|
name | ✅ | — | Unique identifier. A tree type references this through its treeGrowerName. |
trees | ✅ | — | Weighted list of tree features used for a normal, single-sapling tree. Must contain at least one entry. |
megaTrees | ✅ | — | Weighted list of features used when 4 saplings are placed in a 2×2 pattern. May be empty ([]). |
flowerTrees | ✅ | — | Weighted list of flowering variants (e.g. bee-nest trees) that may be chosen instead of a normal tree. May be empty ([]). |
shortestTreeType | ❌ | none | A single feature used as a fallback when there is not enough space above the sapling for a full tree. |
Weighted entries
Each entry in trees, megaTrees, and flowerTrees is a weighted object:
| Field | Description |
|---|---|
data | Resource key of the tree feature to grow. |
weight | Relative weight (non-negative integer). Higher weights are picked more often. |
In the example above, an oak grows into minecraft:oak 90% of the time and minecraft:fancy_oak 10% of the time.
TIP
The feature ids (e.g. minecraft:oak, minecraft:fancy_oak) must match registered world-gen tree features. You can use vanilla feature ids or ones added by other mods/datapacks.
Writing your own tree feature
You aren't limited to vanilla trees — you can define your own feature of type minecraft:tree in a datapack and reference its id in the data field above.
A tree configured feature controls the trunk, foliage, roots, decorators and more. See the Minecraft Wiki for the full JSON format:
- Tree → Config — all options for a
minecraft:treefeature - Feature — general feature format and where to place the files
Once your feature is loaded (e.g. yourpack:my_custom_tree), just use that id as the data of a weighted entry.
Outdated
At the time of writing this page, Minecraft wiki is not updated yet, Configured Feature has been changed in 26.3-snapshot-1
