c2meforge-0.2.0-forge.9-all.jar
Curse Maven Snippet
What's new
C2ME-Forge 0.2.0-forge.9 (1.20.1)
Five worldgen improvements and one compatibility fix, on top of forge.7. Same worlds, verified against unmodified generation.
Plain overworld r1000 pregeneration (8C/16T): forge.7 60s -> forge.9 49s (-19%, 4.7x vanilla's 228s).
Tectonic + Terralith r500: forge.7 69s -> forge.9 44s (-36%).
FIXED
- Radium / Canary / Radon (Lithium ports) with their "player_chunk_tick" option: chunks that came into
range while walking were never sent to the client, so terrain "just didn't render when getting close".
Those mods replace vanilla's chunk-sending loop and only send chunks they find as ticking chunks, while
C2ME's no-tick view distance deliberately keeps view-distance chunks non-ticking. C2ME now hooks their
loop the same way it hooks vanilla's, so no-tick chunks are sent again. No config change needed on
either side. (Workaround on older versions: mixin.world.player_chunk_tick=false in radium.properties.)
PERFORMANCE
- Density-tree rebuild short-circuit: vanilla re-creates and deep-hashes the entire density-function
tree for EVERY chunk. Subtrees that contain no chunk-bound node are now reused as-is, record hash
codes are cached, and splines whose inputs did not change are not re-validated. On Tectonic +
Terralith this rebuild was about a quarter of all worldgen CPU. r500 pregeneration with
Tectonic + Terralith: 61/61/61s with the fix vs 70/67/67s without it on the same jar
(interleaved n=3), about -10%; forge.7 took 69s there. Vanilla worlds: neutral to slightly faster.
- Density-function compiler: each density tree is compiled once per shape into straight-line JVM
bytecode (opaque nodes such as caches, splines and mod-provided functions stay as direct calls), so
HotSpot can inline across the tree instead of dispatching through dozens of virtual calls per point.
Neutral on vanilla terrain (55/55/58 vs 54/55/55s r1000); on Tectonic + Terralith r500 57/57/58s
vs 61/61/60s without it (interleaved n=3), about -5.5% on top of the rebuild fix. Every generated
value is checked against the original tree in replay mode: over one billion points, zero mismatches. Kill switch: -Dc2me.disableModule.opts.worldgen.dfc=true. Note for mod authors: mixins
that inject into vanilla density-function node compute() methods are bypassed by compiled trees;
custom DensityFunction classes are untouched.
- Compiled tree mapping: the compiler now also replaces vanilla's per-chunk re-creation of the entire
density tree. Each router function is compiled once per shape from the original tree, and the
chunk-bound pieces (interpolators, caches) are created only where vanilla creates them. Interleaved
n=3 on the same jar with only this switched: plain r1000 48/50/48s vs 58/58/58s (-16%);
Tectonic + Terralith r500 44/44/44s vs 57/57/57s (-23%).
- Cell-proof filler, stage 2: whole noise cells proven to be sky from their eight corner samples skip
the 128-point density fill as well as the per-block pass (about 64% of overworld cells).
- Surface builder block writes go through an exact replica of ProtoChunk.setBlockState for the
pre-light stages (no per-block heightmap-type iteration, no debug lock). About -2% on plain terrain;
neutral on modded terrain. Kill switch: -Dc2me.disableModule.opts.worldgen.surface=true.
- Cell-proof stage 2 and the tree-rebuild fix together measured 55/55/55s vs forge.7's 60/59/60s
(interleaved, same night) before the compiler landed on top.
Kill switches: -Dc2me.disableModule.opts.worldgen.dfc=true (compiler and compiled mapping),
-Dc2me.dfc.mapper=false (compiled mapping only), -Dc2me.disableModule.opts.worldgen.puremap=true,
-Dc2me.disableModule.opts.worldgen.cellproof=true, -Dc2me.disableModule.opts.worldgen.surface=true.
Known: Smooth Chunk Save's optional ChunkMap hook is skipped next to C2ME's chunk serializer (a
warning at startup, no crash, no effect on saving).
Every skip is proof-gated; replay modes (-Dc2me.cellproof.verify=true) re-evaluate every skipped cell
through the vanilla path: zero mismatches over 409.9 million blocks on vanilla and on Tectonic +
Terralith; the compiler's own replay mode (-Dc2me.dfc.verify=true) compared 470 million generated
values against the original trees on each: zero mismatches. Upstream ports used under MIT with attribution.
This mod has no additional files

