Repository navigation
Dynamic Trees
Minecraft 1.20.1 / Forge: this page documents that build and its measurements. For the separate 170-control Minecraft 1.21.1 port, see Minecraft 1.21.1 NeoForge.
Two controls for Dynamic Trees 1.20.1-1.4.11 (mod id dynamictrees): thick trunk and trunk shell shapes are built once per size, and a fix stops rapid rot from looping until the stack overflows at the edge of a generation region. Background on Generation context fixes. Every switch checks the code it would change against the tested build; another build is left untouched with one WARN line (see How the patches are applied).
| Key | Target | Side | Since | Kind |
|---|---|---|---|---|
dynamictrees_rot_cycle_guard |
Dynamic Trees 1.20.1-1.4.11 | BOTH | 1.0.30 | fix |
dynamictrees_thick_shape_memo |
Dynamic Trees 1.20.1-1.4.11 | BOTH | 1.0.30 | opt |
Since: 1.0.30 · Target: Dynamic Trees 1.20.1-1.4.11 · Side: BOTH (world generation; singleplayer runs it on the integrated server) · Kind: fix
Mixins: RotCycleBranchMixin, RotCycleRootsMixin, RotCycleOuterMixin, RotWriteBreakMixin, RotWriteFeatureMixin
Dynamic Trees: rapid rot no longer loops until the stack overflows at a generation region's edge. When a generated tree's branch is left without support, Dynamic Trees rots it away at once: the branch checks its neighbours, removes itself and checks them again, one inside the other. During world generation a feature may only write one chunk out from the chunk being decorated. A branch beyond that edge cannot be removed: the removal is refused, Dynamic Trees still counts it as rotted, and two such branches next to each other check each other forever, until the thread's stack overflows (Dynamic Trees issue 1150, still reachable in 1.4.11: the chunk's generation dies with a StackOverflowError and takes the server down). A check that comes back to the same branch with the same radius while no rot write has succeeded since the last visit can only repeat itself, so that repeat now stops and the branch stays (where the original crashed). Every cascade that ends in the original is left exactly as it is. Species, features or blocks that replace Dynamic Trees' own rot code, and fertile branch cascades, always run the original.
Measured: offline on Dynamic Trees' own classes, issue 1150's layout overflowed the stack in the original (on a real generation region too) and ended after one stop with the switch. In 6,000 random worlds (49 million traced steps), the 5,568 that end in the original were identical with the switch (blocks, results, random state) and the 432 that overflowed ended, identical up to the first stop.
Since: 1.0.30 · Target: Dynamic Trees 1.20.1-1.4.11 · Side: BOTH · Kind: opt
Mixins: ThickShapeMixin, TrunkShellShapeMixin
Dynamic Trees: thick trunk and trunk shell shapes are built once per size. Thick trunks (radius 9 to 24) and the shell blocks around them built a new shape from a box on every shape query (collisions, block outlines, pathfinding). There are only 16 thick sizes and a shell sits at one of a few offsets around its trunk, so those shapes are now built once and handed back again. A box that is not exactly one of those sizes and offsets is built as before. Shapes cannot be changed after they are built, so a shared one answers the same.
Measured: offline on Dynamic Trees' own blocks, every radius, waterlogged or not, 40 neighbour layouts and every shell position gave the same geometry as the original (405,508 checks). A thick trunk query took 38 instead of 54 ns and 64 instead of 264 bytes, a shell query 174 instead of 222 ns and 288 instead of 688 bytes.
Bons and Furious is licensed GPL-3.0-only with upstream notices retained. Target mod names identify compatibility targets and do not imply endorsement; their code, assets and licenses remain their authors' property. All measurements on this wiki are focused method, phase or reproduction measurements from the pack the mod was built for, taken on the historical build named in each entry; they are not whole-game FPS or TPS promises and are not additive.
Bons and Furious
Minecraft 1.20.1 / Forge 1.0.34
- Home
- Installation and configuration
- How the patches are applied
- All controls
- Measurements and caveats
- Whole-modpack benchmark
- Troubleshooting and log messages
- Generation context fixes
- Version history
Compatibility
- Compatibility
- Known conflicts and workarounds
- Tested mod list
- Redundant mods
- Compatibility and target versions
Controls by mod
- Minecraft (51)
- Forge (6)
- Ad Astra (1)
- Alex's Caves (4)
- Alex's Mobs (2)
- Almost Unified (1)
- AmbientSounds (3)
- Architectury API (1)
- Ars Nouveau (2)
- Artifacts (1)
- Better Combat (1)
- Bosses of Mass Destruction (1)
- Butterflies (1)
- ChunkSending (1)
- CIT Reforged (1)
- Citadel (1)
- CoFH Core (1)
- Colorwheel (1)
- Cooking for Blockheads (1)
- Create (4)
- Critters and Companions (1)
- Cryptic Foes (2)
- Cucumber (1)
- Curios API (6)
- Distant Horizons (17)
- Dungeons Delight (1)
- Dynamic Trees (2)
- Embeddium (13)
- Entity Model Features (4)
- Entity Texture Features (1)
- EntityCulling (1)
- FancyMenu (1)
- Farmer's Delight (2)
- FD Bosses (2)
- Fowl Play (2)
- Fusion (2)
- GeckoLib (5)
- Goblins Tyranny (2)
- Hostile Villages (2)
- Ice and Fire (6)
- ImmediatelyFast (3)
- Immersive Engineering (1)
- Jaden's Nether Expansion (1)
- JEI (7)
- Kiwi (1)
- L2 Library (2)
- Legendary Monsters (1)
- Lionfish API (2)
- ModernFix (4)
- Mowzie's Mobs (1)
- Mutant Monsters (1)
- Nether Depths Upgrade (1)
- Occult (1)
- Oculus (12)
- Oh The Biomes We've Gone (1)
- Particular (1)
- Pehkui (1)
- Pipez (2)
- Placebo (1)
- Presence Footsteps (1)
- Radium Re-Reforged (8)
- Regions Unexplored (1)
- Relics (2)
- Ribbits (1)
- Ryoamic Lights (2)
- Sake's Structures (1)
- Scorched (1)
- Scuba Gear (1)
- Simply Swords (1)
- SlashBlade: Resharped (1)
- Slice & Dice (1)
- Spawn (4)
- Storage Drawers (2)
- Structure Gel API (1)
- Structurify (3)
- TaCZ (2)
- TerraBlender (2)
- Terramity (1)
- Under the Moon (1)
- Valkyrien Skies (15)
- Trackwork model repair
- Living Engineering (moved out in 1.0.20)
Links