FastChunkGen

FastChunkGen is a unofficial forge port of C2ME with fixes, stability and performance improvements.
affiliate banner image

FastChunkGen

FastChunkGen basically moves minecraft's chunk processing off the main server thread. world gen runs on multiple worker threads, and chunk reads/writes happen asynchronously so it doesn't freeze up the main tick loop!

It's a unofficial forge port of C2ME (by RelativityMC), but fixed up and improved for forge.

Patreon

What it does

  • Generates chunks across multiple threads instead of just one (scales based on cpu cores and ram).
  • Async chunk reads & writes so autosaving doesn't stall the server.
  • Puts lighting updates on a dedicated thread.
  • Fixes a TON of vanilla thread-safety bugs that only happen once you run worldgen in parallel (structure pieces, shared randoms, weighted lists, etc).
  • Cuts down allocations in surface rules, nbt handling, and noise sampling.

How much TPS/loading speed u gain depends on your cpu and worldgen mods, but yeah overall this mod WILL make chunks load faster.

What's different from official C2ME

Unlike a lot of c2me ports out there, this port actually fixes and improves upon the original mod for the forge environment!

  • Forge chunk data isn't lost anymore: original c2me's async save path was just a copy of vanilla that omitted Forge's ChunkDataEvent.Save. any mod saving chunk data lost it on every save. fastchunkgen actually fires the event on the main server thread.
  • Block entity saving fixed: block entities are serialized on the main server thread now. upstream called saveWithFullMetadata() off-thread which caused races and corruption with forge capabilities. sections, heightmaps, palettes, and structures still stay async though.
  • ChunkDataEvent.Load deferred: runs on the server thread before the chunk goes live.
  • Fixed infinite loop error: fixed a bug where an exception in worldgen could trap a worker thread in an infinite loop.
  • Fixed scheduler deadlocks: fixed an issue where a single exception permanently froze all chunk scheduling.
  • Fixed lock leaks: neighbour locks don't leak anymore when a gen task throws an error (which previously broke that region forever).
  • Fixed ticket leaks: off-thread chunk requests clean up their tickets on failure instead of leaking memory.
  • Better server shutdown: dedicated server doesn't instantly run System.exit(0) anymore so your exit codes and shutdown logs actually survive. a 30s watchdog still forces exit if something hangs.
  • proper logging: everything logs through SLF4J with the mod name attached instead of raw stack traces spammed to stderr.

Deliberately did NOT port client-side or unrelated modules: no-tick view distance, client view distance uncapping, server utility commands, and native math.

Compatibility

Tested alongside 480+ mods. generated 5000+ chunks and played around with zero issues!

Fastchunkgen also checks installed mods on startup to auto-resolve conflicts:

  • ModernFix: both mods optimize the same three surface rule and material rule methods. FastChunkGen's versions take priority! set generalOptimizations.overrideModernFixWorldGenAllocations = false if u want ModernFix to handle them instead. Regarding proto chunks, turn it off for faster chunk gen.
  • Radium / Lithium / Canary: our duplicate NBT copy patch and chunk priority patch are disabled automatically if any of these mods are installed.
  • ThreadTweak, FastNoise, FerriteCore: no overlapping methods, works fine out of the box.
  • ModernFix mixin.perf.release_protochunks: doesn't auto-resolve. both it and threaded worldgen manage chunk futures. fastchunkgen logs a warning telling u which config keys to tweak if chunks ever get stuck loading.

Before you install!

BACK UP YOUR WORLD. upstream C2ME is alpha tech and anything that rewrites chunk saving deserves a backup first just in case.

Configuration

config generates at config/fastchunkgen.toml on first launch. everything has its own toggle, and defaults are set to the literal string "default". Replace it with a real value to override it.

Risky stuff is OFF by default:

  • ioSystem.gcFreeChunkSerializer - allocation-free chunk writer that can't fire ChunkDataEvent.Save. mods lose per-chunk data with this on.
  • ioSystem.recoverFromErrors - auto-regens corrupted chunks instead of crashing, destroying whatever was built there.
  • fixes.enforceSafeWorldRandomAccess - hard crashes on unsafe off-thread world random access instead of logging a warning. good for finding broken worldgen mods.

Credits

C2ME by RelativityMC and ishland (MIT License). Forge port groundwork from sj-hub9796/c2meF. MIT licensed.

Welp.. this is the last archived project I had. It feels nice to be free.. ^_^

The FastChunkGen Team

HighCrafter tier frameprofile avatar
  • 105
    Followers
  • 53
    Projects
  • 3.8M
    Downloads

Solo Mod/Modpack Developer

More from MisanthropyView all