
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.15.0+1.21.11-forge
Compatibility
Changes
Added
-
The Bukkit/Paper plugin can now send LOD to players. Until today it generated the data and had no way to deliver it, so anyone running the plugin got a store on disk and players who saw nothing -- and no combination of client mods could change that (mod_support #18).
The awkward part of that story: every piece of the machinery had been shipping inside the plugin jar since 3.2.0, because it lives in the shared code. The wire format, the token store, the HTTP backchannel -- all present, all unreachable, because nothing registered a channel or started the server. This release is the connection that was missing.
Nothing to configure. If LOD is on, the plugin registers the channel, opens the backchannel port and answers clients exactly as the mod does.
lod-backchannel-portinconfig.ymlworks the same way it does on the mod, and the startup line tells you which port your players need to reach.One honest limitation: the mod falls back to streaming LOD down the game connection when the backchannel port is unreachable. The plugin does not do that yet -- if the port is blocked, players get nothing rather than something slow. The log says so plainly instead of going quiet, and the fix is to open the port or set one your host allows.
-
A client on a Paper server now actually receives LOD -- measured, not inferred. The first cut of the above answered the client's hello and stopped there, which looks exactly like working: the server logs the greeting, opens the port, mints a download credential, and serves nothing at all, because the client is waiting on a region index that never comes. Two things were missing.
The index and sync requests are answered. The hello is only the introduction. The client then asks what is near it, compares that against what it already has, and downloads the difference -- and it asks again every few minutes as it travels. The plugin answers both now, off the main thread, filtered to the draw distance the client actually reported.
Bukkit is told to accept the reply. A Bukkit server only delivers a plugin message on a channel the client announced with
minecraft:register, and drops everything else without a word -- no exception, no log line, no packet. A modern Fabric client never makes that announcement, so the server could hear the client perfectly while the client heard nothing back. The plugin now registers the channel for a player who has already spoken to it on that channel, which is proof enough that they speak it.Measured on Paper 26.2 with a Fabric client and voxy: 16 regions, 27 MB, 5928 chunks handed to the renderer. The symptom this replaces was
0 files, 0 byteswith a live token beside it.
Changed
-
The plugin's startup message no longer says it cannot serve LOD, because it can.
-
One region scan, shared by every platform (
CsLodIndexScan). "Which regions can this player see?" has to give the same answer on a Fabric server and a Paper server, and a second copy of that rule would have drifted with nothing to catch it -- the symptom being a client that fetches the wrong regions on one platform only. The loaders and the plugin now call the same code, and sixteen tests pin the range, settle, ordering and cap behaviour.
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:KEnqdcwg"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:4BeAEBIb:KEnqdcwg"
}
