Skip to content

leaf-treegen

adds tree variety to the world, based on species json.

FabricNeoForgePaperPurpur
Loaders
FabricNeoForgePaperPurpur
Downloads on Modrinth
297
Followers on Modrinth
2
version
1
Updated
June 12, 2026Jun 12
Published
in 2026
dark forest canopy — A dense dark-forest scene with overlapping high canopies and scattered giant mushrooms, viewed from above the treeline. · swipe

At a glance

Runs on Fabric, NeoForge, Paper and Purpur
For Minecraft 26.1–26.1.2
Server only — players don't need to install it
Latest version — 0.1.0 from June 12, 2026
License MIT — free
Where it's needed
In gamenot neededOn serverrequired

Install on the server only; players don't need it

Game versions26.1–26.1.2

LeafTreeGen

Procedural, biome-aware custom trees that generate through vanilla worldgen.

LeafTreeGen adds dozens of custom tree species. Trees are mathematically defined in JSON and baked into vanilla .nbt structure templates at startup, then added to jigsaw template pools so the game's own worldgen handles placement. No runtime block-placement listeners.

Made as a cross-platform utility based on the Python code I originally wrote for my personal Iris world using .iob files. Iris now adopts my procedural engine in its latest builds.

I've reworked it so you can optionally run it once for datapack (.nbt-based) generation, or keep it around for its ability to manage procedural generation and custom saplings.


Screenshots

Cherry Grove Giant Cherry Grove Giant - a towering cherry-blossom giant anchors its matching biome above a grove of smaller cherry trees.

Dark forest canopy Dark forest canopy - dense overlapping high canopies with scattered giant mushrooms, viewed from above the treeline.

Dark Forest Mushroom Dark Forest Mushroom.

Custom savanna trees Custom savanna trees.

Christmas Tree Christmas Tree - all trees are placeable via NBT-tagged saplings.


Features

  • Biome-matched species - savanna acacias, dark-forest canopies, glacier pines, cherry groves, spiral-crown forests, and rainbow groves, mapped to the biomes they suit
  • Procedural engine - trees are built in Java from per-species parameters: height, trunk shape, lean angle, and canopy layers
  • Jigsaw worldgen - the plugin writes a vanilla worldgen datapack on first load and lets Minecraft's structure system place the trees
  • Plantable saplings - /leaftree give hands out NBT-tagged saplings that grow into a random variant when planted in a valid biome
  • Reload command - /leaftree reload rebakes all variants and regenerates the datapack
  • Server-friendly placement - large trees are placed across multiple ticks under a per-tick budget to keep the main thread responsive
  • Multi-platform - one jar runs on Paper, Folia, Fabric, and NeoForge with the same features (worldgen, saplings, and the /leaftree command) everywhere

Species Highlights

CategoryExamples
TemperateForest, Birch Forest, Old-Growth Birch, Maple-Birch Giants, Ashwood
TropicalJungle, Cherry Grove, Jacaranda Grove
ColdTaiga, Old-Growth Pine Taiga, Glacier Pine
Dark & ExoticDark Forest Giants, Spiral-Crown Forest, Rainbow Grove, Glowcap
Full biome tree map
BiomeSpeciesIconic shapeRole
forestforestRounded oak, mid to largePrimary
flower_forestoak-small-midSmall-to-mid rounded oak, sporadicPrimary
plainsoak-small-midSparse small-to-mid oakPrimary
meadowoak-small-midSparse small-to-mid oakPrimary
meadowmeadow-azaleaSmall oak trunk with azalea crownSprinkled accent
meadowrainbow-groveBirch trunk with multi-hue canopyRare landmark
dark_forestglowcapLit brown-mushroom shrubUnderstory
dark_forestdark-forest-floor-lightsTiny shroomlight glow shroomsFloor litter
dark_forestdark-forest-midsSmall-to-medium twisted dark oakMidstory
dark_forestdark-forest-megasTitan dark oak with massive canopyCanopy
birch_forestbirch-forestTall slender white birchPrimary
old_growth_birch_forestold-growth-birch-forestTowering old-growth birchPrimary
old_growth_birch_forestmaple-birch-giantsGiant maple-and-birch landmarkRare landmark
taigataigaConical sprucePrimary
snowy_taigaevergreenSnow-dusted conical sprucePrimary
snowy_taigachristmas-treeFestive decorated spruce with ornamentsVery rare landmark
old_growth_pine_taigaold-growth-pine-taigaTall bare-trunked pinePrimary
old_growth_spruce_taigaold-growth-pine-taigaTall bare-trunked pinePrimary
snowy_plainsglacierpineFrost-laden spruce with icicle tipsPrimary
ice_spikesglacierpineFrost-laden spruce with icicle tipsPrimary
groveglacierpineFrost-laden spruce with icicle tipsPrimary
snowy_slopesglacierpineFrost-laden spruce with icicle tipsSparse
frozen_peaksglacierpineFrost-laden spruce with icicle tipsSparse
jagged_peaksglacierpineFrost-laden spruce with icicle tipsSparse
junglejungleJungle trees, small to giantPrimary
sparse_junglejungleJungle trees, small to giantPrimary
bamboo_junglebamboo-jungleJungle trees ringed by bambooPrimary
savannasavannaFlat-topped leaning acaciaPrimary
savanna_plateausavannaFlat-topped leaning acaciaPrimary
windswept_savannasavannaFlat-topped leaning acaciaPrimary
cherry_grovecherry-groveLayered pink blossom crownPrimary
cherry_grovejacaranda-groveGiant weeping cherry-wood jacarandaRare landmark
windswept_hillsashwoodGaunt gray dead pale-oak with cobwebsPrimary
windswept_forestashwoodGaunt gray dead pale-oak with cobwebsPrimary
windswept_gravelly_hillsashwoodGaunt gray dead pale-oak with cobwebsPrimary
swampswampVine-draped weeping oak + mangrovePrimary
mangrove_swampswampVine-draped weeping oak + mangrovePrimary

Commands

CommandDescription
`/leaftree generate species=`Place a tree at your cursor (admin test)
`/leaftree give species= [player] [amount]`Hand out custom saplings
`/leaftree list [species=]`List registered species or variants
/leaftree reloadApply config changes and regenerate the datapack

Requires the leaftreegen.admin permission node.


Configuration

Species are defined as JSON files in the species/ folder. Biome assignments and placement tuning (spacing, separation, salt) live in config.yml, with per-species overrides.

generation-mode: DATAPACK   # DATAPACK | PROCEDURAL | BOTH | NONE

placement:
  glacierpine:
    spacing: 6
    separation: 3
    biomes:
      - minecraft:snowy_taiga
      - minecraft:grove
{
  "name": "glacierpine",
  "procedural": {
    "trunk-block": "minecraft:spruce_log",
    "leaf-block": "minecraft:spruce_leaves",
    "height-min": 10,
    "height-max": 18,
    "trunk-shape": "LINEAR",
    "canopy": [
      { "yOffset": 0, "radius": 4 },
      { "yOffset": 3, "radius": 3 },
      { "yOffset": 6, "radius": 2 }
    ]
  }
}

Requirements

  • Java 25+
  • One of:

    • Paper or Folia 1.21+
    • Fabric 26.1+ (Fabric Loader 0.18.4+, Fabric API)
    • NeoForge 26.1+

FAQ

How to install leaf-treegen?

Install Fabric for your Minecraft version, download leaf-treegen for the same version and loader, put the file into the mods folder and launch the game with the loader profile.

Which Minecraft versions does leaf-treegen support?

leaf-treegen has builds for Minecraft 26.1–26.1.2.

Is leaf-treegen needed on the server?

Server only — players don't need to install it

License and source
MIT Licensefree to use and share with credit to the author
Original — Modrinth↗Files unchanged, verified with SHA-512Is this your mod? For rights holders

The site uses cookies: the necessary ones for sign-in and the theme, plus the Yandex Metrica and LiveInternet visit counters — they show us how the site is used. We have no advertising cookies. More