
Dynamic Trees: Universal Compat
Adds broad compatibility between Dynamic Trees and modded wood types. Automatically detects trees, registers species, and integrates growth systems. Built as a scalable framework to support many mods without requiring individual compat patches.
- Загрузки
- 810
- Подписчики
- 12
- Обновлён
- 21 августа 2026 г.
- Лицензия
- All-Rights-Reserved
Опубликован 5 апреля 2026 г.
Dynamic Trees Compat
Beta Build — Active Development
Dynamic Trees Compat is a Forge 1.20.1 mod that automatically detects vanilla and modded trees and generates Dynamic Trees compatibility for them.
The goal is to avoid needing a separate compatibility addon for every tree mod.
Instead of relying only on block names, the mod reads the actual configured features, registries, blockstates, models, and worldgen data used by Minecraft.
Features
- Automatically detects compatible trees from installed mods
- Detects logs, stripped logs, leaves, saplings, branches, and other tree components
- Generates Dynamic Trees families, species, leaves, branches, seeds, saplings, assets, and worldgen data
- Keeps the original tree's log and leaf blocks
- Resolves textures from the original blockstates and models
- Replaces supported source trees in world generation with Dynamic Trees versions
- Filters out false positives such as planks, boards, bundles, bamboo, air, and non-tree wood features
Tree Shapes
The mod also tries to preserve the original shape of each tree.
When enough information is available from the configured feature, the tree topology is translated into a Dynamic Trees version.
If the exact shape cannot be reproduced, the mod selects the closest available Dynamic Trees profile based on things such as:
- Height
- Trunk size
- Canopy size
- Foliage placement
- Branch structure
- Tree type
This includes profiles for trees such as palms, conifers, acacias, large trees, shrubs, and broad-canopy trees.
If there is not enough information, an oak-like Dynamic Trees shape is used as the final fallback while still keeping the original tree's materials.
World Generation
Supported source tree features are replaced with their generated Dynamic Trees species.
The mod also contains a diagnostic system for finding trees that are still generating outside the replacement system, which helps improve compatibility with unusual worldgen implementations.
Restart Required
Newly detected trees are generated into a pending resource pack and become active after restarting Minecraft.
This is required because Dynamic Trees registers its generated blocks and species during startup.
The first launch after migrating from an older version may show a Restart Required screen. Simply quit Minecraft and launch it again.
Required Dependencies
- Minecraft Forge 47+
- Dynamic Trees 1.20.1-1.3.0+
- Moonlight Lib 1.20-2.16.23+
- GabouLibs 1.8.2+
GabouLibs also require Architectury API.
Current Limitations
This mod is still in beta.
Generated sapling textures are still a work in progress. The mod currently does not have a reliable way to dynamically create unique sapling textures for every detected tree, so some generated saplings may use temporary or generic visuals.
Some mods use custom Java worldgen features that do not expose enough information to perfectly reproduce their tree shapes. These trees currently use the closest available Dynamic Trees shape.
Existing chunks are not converted. Changes only affect newly generated terrain.
Planned
- Custom topology JSON files
- More support for unusual custom tree generators
- Better handling of nested worldgen features
- More accurate automatic shape conversion
- Continued compatibility improvements
- Improved automatic sapling texture generation
Ченджлог
Forge-2.1Бета1.20.1 · 21 августа 2026 г.
Dynamic Trees: Universal Compat 2.0
Fixed
- Fixed an endless generated-pack restart prompt caused by Forestry fireproof wood types resolving inconsistent sibling foliage between launches.
- Forestry fireproof trees now bind to the canonical foliage for their base tree when available. For example,
forestry:acacia_fireproofusesforestry:tree_acacia_default_leaves, andforestry:oak_fireproofusesforestry:tree_oak_default_leaves. - Added a regression test covering the unstable Forestry fireproof leaf bindings.
Forge-2.0Бета1.20.1 · 20 августа 2026 г.
Dynamic Trees: Universal Compat - Development Update
Added
- Configured-feature-first tree component discovery using the actual trunk, foliage, branch, and provider block states used by Minecraft worldgen
- Generic topology fingerprinting and Dynamic Trees archetype selection for exact, approximate, and generic fallback generation
- Client model/texture resolution through source blockstates, models, parents, and texture aliases
- Explicit per-candidate compatibility results: generated exact, generated approximate, generic fallback, already supported, intentionally unsupported, incomplete, or failed
- Worldgen execution tracer for claimed-but-still-generating and unclaimed source feature diagnostics
- Persisted runtime observations and source-feature overrides for later restart processing
- Generated-pack staging: newly discovered resources are written to
generated_trees_pending_restartand activated before Dynamic Trees scans them on the next restart - Mandatory client restart screen during the one-time migration from the legacy generated-pack layout
- GabouLibs as a required runtime dependency
Fixed
- Prevented
minecraft:airfrom being accepted as a tree component or worldgen probe block - Prevented structural false positives such as boards, planks, and bundles from becoming trees
- Preserved source-specific descriptors even where different source features share the same primitive materials
- Prevented Dynamic Trees seed/sapling null-registry crashes caused by adding newly discovered species to an already-live resource pack
- Restricted runtime tree worldgen matching to strong vegetation/tree evidence, avoiding fluid, lake, and unrelated feature contamination
- Excluded bamboo from automatic tree conversion
Important restart behavior
- Dynamic Trees registers generated branch, leaves, seed, and sapling blocks only during startup.
- The first launch after migrating from the old generated-pack format intentionally has no active generated compat trees. A non-dismissible screen requires quitting Minecraft; the following launch activates the staged pack.
- Later discovery changes are also staged for a full restart rather than applied through a live datapack reload.
Earlier development additions
- Initial Dynamic Trees compatibility system for modded trees
- Automatic detection of unsupported trees from loaded mods
- First working integration with Atmospheric (rosewood)
- Runtime generation of Dynamic Trees data (species, families, seeds, leaves)
- World generation replacement system for supported trees
- Client asset generation for branches, leaves, saplings, and seeds
- Debug logging for detection, registration, and worldgen
Fixed
- Missing textures for generated trees (pink/black rendering)
- Incorrect asset paths for branch and leaves models
- Worldgen registration not being applied due to incorrect DT data structure
- Feature canceller not handling multiple namespaces properly
Improved
- Switched to proper Dynamic Trees datapack-based registration instead of direct registry usage
- Improved worldgen replacement logic using DT biome database
- More reliable detection of wood types using Moonlight integration
- Better logging for debugging generation and replacement issues
Known Issues
- Opaque custom worldgen features may not expose enough topology for an exact Dynamic Trees translation and can use an approximate archetype
- Some source placed features remain unclaimed until the tracer/runtime observation pipeline has enough strong identity evidence
- Existing chunks are not retroactively converted
Upcoming
- User-provided custom topology JSON files for exact overrides of approximate trees
- Additional registered topology resolvers for mod-specific custom feature codecs
- Further worldgen mapping and cancellation coverage for opaque/nested feature graphs
- Continued asset-model compatibility improvements for unusual blockstate/model layouts
Комментарии
Загружаем…