Skip to content

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>.json

JSON Format

json
{
  "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

FieldRequiredDefaultDescription
nameUnique identifier. A tree type references this through its treeGrowerName.
treesWeighted list of tree features used for a normal, single-sapling tree. Must contain at least one entry.
megaTreesWeighted list of features used when 4 saplings are placed in a 2×2 pattern. May be empty ([]).
flowerTreesWeighted list of flowering variants (e.g. bee-nest trees) that may be chosen instead of a normal tree. May be empty ([]).
shortestTreeTypenoneA 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:

FieldDescription
dataResource key of the tree feature to grow.
weightRelative 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:tree feature
  • 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

Released under the All Rights Reserved License.