
Chunksmith
Pre-generates chunks fast, and safely: an adaptive throttle paces generation against server tick-health so it can run with players online. Builds Distant Horizons / voxy LOD data as it goes and serves it to clients. Fabric, Forge, NeoForge and Paper/Folia.
Links
Tags
Creators
Details
3.3.0+1.21.8-forge
Compatibility
Changes
Added
/cslod set-- the LOD client's own settings are now settable in-game. 3.2.4 brought every setting inconfig/chunksmith/config.jsonunder/cs set, but the LOD client keeps its two settings somewhere else entirely --config/chunksmith-lod.properties, on the CLIENT -- and those stayed file-only. A setting you can only change by editing a file and restarting is not a setting on a running game, and that applies on the client exactly as it does on the server./cslod setlists both settings with the value in force,/cslod set <name>shows one, and/cslod set <name> <value>changes it, applies it immediately and writes it to the file.sync-interval-secondsis clamped ON WRITE to the 30s floor, so the file can never hold a number the client would refuse to honour; the command reports what was actually stored.reinject-on-joincan now be turned on, joined with, and turned back off without ever opening the config folder -- which is the entire point of a one-shot recovery switch.- The settings are held in a registry (
CsLodClientSettings) and a coverage test fails BY NAME if a key inCsLodClientConfigis not reachable from the command, the same guard/cs setgot.
Fixed
- Cancelling a pre-generation could crash the server when C2ME is installed (mod_support #16).
The settle window introduced in 3.2.4 holds a chunk ticket until a chunk's neighbours have caught
up, then hands it back. Handing them ALL back -- at the end of a run, and far more abruptly on a
cancel -- was done from Chunksmith's own worker thread, and a chunk ticket may only be touched on
the server thread. Vanilla tolerated it. C2ME, which moves that machinery onto its own concurrent
scheduler, did not: the ticket graph was corrupted mid-flight and the server came down with
ArrayIndexOutOfBoundsException, then failed a second time while saving worlds on the way out. The release now runs on the server thread, like every other ticket operation beside it. Reproduced on demand before the fix and confirmed gone after it, with a test that was shown to FAIL on the previous release first -- an untested fix for a crash is a guess. - The LOD injector kept running after the world had gone. On a disconnect or a cancel it would carry on handing regions to your renderer -- observed still logging progress 45 seconds after the server had stopped. It is now told to stop, and stops at the next region.
Deprecated
- Folia is deprecated. The plugin still declares
folia-supportedand still runs on Folia in this release, so nothing breaks today -- but Folia is no longer a tested platform and support will be REMOVED in a future release. Chunksmith's Folia test cells could not be kept working, and a platform we cannot test is a coverage claim nobody can verify; saying so is better than quietly shipping it untested. Paper remains fully supported and tested. If you run Chunksmith on Folia and want that to continue, say so on the issue tracker.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:4BeAEBIb:5TLLrnmT"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:4BeAEBIb:5TLLrnmT"
}
