Description
PROJECT ARCHIVED
This project originally started as a NoiseThreader fork. Since NoiseThreader is licensed under All Rights Reserved (ARR), I've decided to remove all downloads and source files for this version.
The current implementation will no longer be distributed. I may eventually rewrite the project completely from scratch, without using the original codebase, and republish it when I have the time. This version already took around 15 hours as a newbie who only worked on 4 other mods before and a lot of multithreading pain (still not as painful as implementing structures on 1.7.10 with good configs..) over the course of five days to build, because the old 1.7.10 sound system drove me crazy and I wanted to do smth else, so a clean rewrite isn't something I can promise will happen anytime soon.
This page remains available for documentation and reference only.
CaveSpeedThing
MC 1.12.2 // CLEANROOM
tl;dr
world gen on 1.12.2 is slow because BetterCaves does everything on one thread like it's 2019 and cores don't exist. this mixins that into actually using your CPU.
what this mod actually does
- multithreaded carving, cave + cavern noise runs on a dedicated ForkJoinPool instead of one thread
- vanilla noise, NoiseGeneratorOctaves parallelized too, when it's worth it
- biome lookups, cached ID-based lookups instead of vanilla's slow registry walk, for BetterCaves + BetterMineshafts
- corner noise dedup, shared corners between a chunk's carving cells get computed once, not up to 4x
- crash-safe, errors fall back to single-thread carving instead of taking your world down
~2.8x faster cave/cavern carving vs vanilla BetterCaves, from a very unprofessional single-run Flare test (small pack, no averaging, take it with a grain of salt).
Also stress-tested compatibility by clean-booting alongside a 400-mod pack at 16 render distance; no Mixin conflicts, startup crashes, or worldgen issues observed.
requirements
1.12.2 / Cleanroom (uses Cleanroom's native Mixin/MixinBooter, this is NOT a regular Forge jar) / BetterCaves + BetterMineshafts installed (this is mixins on top of them, not a replacement)
server-side (client doesn't care, but put it wherever, it's harmless)
install
- jar in mods/
- launch
- profit
why this exists / where it's at
goal was basically: optimize YUNG's Better Caves + Better Mineshafts as much as i reasonably could, because on my modpack they were eating a stupid amount of heap/CPU during worldgen. spent about 5 days on this on and off. i'm not gonna sit here and tell you it's the greatest mod ever, but at this point i think i've hit diminishing returns, everything left on the table is probably another 2-3%, maybe, and getting more would mean actually touching BetterCaves/BetterMineshafts source instead of mixin-ing around it, which i don't want to do.
should be compatible with basically everything, including stuff like Celeritas, but i haven't tested every combo under the sun.
if it crashes or does something weird: profile it yourself with flare first if you can, then paste the log via https://mclo.gs/ in the comments and I'll take a look when I get to it. peace out.
credit where it's due
heavily inspired by NoiseThreader by fonnymunkey, who had the original idea of mixin-ing BetterCaves onto multiple threads. started as a fork of that concept, ended up rewritten pretty much top to bottom:
no OTG (Open Terrain Generator) support, NoiseThreader covers that, this mod doesn't. also runs on Cleanroom's native Mixin/MixinBooter, not FermiumBooter, so it's not a drop-in replacement if you're on a different loader setup.
NOT compatible with NoiseThreader - both patch the exact same BetterCaves classes, run one or the other, not both.
// ≈ "works on my machine."


