Links
Tags
Creators
Details
1.1.1+26.2
Compatibility
Required content
Changes
-
Long-lived servers no longer pay for their whole history every tick. Graves now have direct indexes by ID, owner, claimed state, plot, and nearby chunk. Relogged visitors rebuild a way home with one lookup, including a remembered "no grave" result, instead of searching every grave every tick. Plot allocation, full-field checks, grave interaction, and the war front use the same indexes without copying the complete ledger.
-
World ledgers save without stopping the world. Repeated mutations are batched, expensive item encoding is reused, compression and disk writes run on one ordered background writer, and shutdown waits for it. Every ledger is written through a temporary file and keeps a last-known-good
.bak; reads are size-bounded and automatically recover from the backup when the primary file is damaged. -
Soul Gates now work where players are. Gate bounds, centers, lowest cells, aperture membership, and covered chunks are cached. Only gates in or near player chunks animate or test crossings, frame validation is staggered, and the breath uses far fewer particle packets without changing travel.
-
The graveyard tracks its own staff and soldiers. A one-time migration adopts old entities, after which entity lifecycle events replace repeated whole-dimension scans. Only fields near visitors receive a census. War mobs are no longer accidentally made persistent, target assignment is processed in bounded rotating batches, and the new
war-mob-cap(default 32) places a shared ceiling over the active battle. -
Exploration and orchards have bounded workloads. Decoration computes only the deterministic slots that can actually fall in a chunk, evaluates queued work inside a 1.5 ms budget between checks, pastes at most one structure per tick, deduplicates its queue, and saves even during continuous exploration. Orchard mob-dance queries are cached and staggered. Graveyard generation reuses a padded height grid instead of recalculating neighboring terrain noise for every surface decision.
-
Wake obol searches now run twice a second instead of every tick, portal particle traffic is reduced, and copy-on-write collections were removed from the hot server-thread-only state.
-
Added regression tests for grave indexing, save coalescing, atomic ledger replacement, and damaged-file backup recovery.
-
The quiet update: Charon tightens his ledgers. The front was re-derived from every grave ever dug, every tick, forever — now it is cached and only re-asked when a burial moves it. Fields proven full stay proven (graves are never unmade). The gravekeeper sweep walks the dimension every two seconds instead of four times a second, and the whole war — sweep included — sleeps while no living soul visits. The crypt's shelves refresh from ONE walk of the roll instead of one per shelf. Old servers with big graveyards feel this immediately; nothing about behavior changes.
-
/charon shrine— pastes the hand-built spawn shrine (authored in the Studio, shipped with the mod) where the gamemaster stands, rotated to face them. Raise one at the world spawn and one at the graveyard arrival, consecrate its frame with an obol, and the two ends of the crossing look like they were always meant to meet. -
/charon refence <field|all>— existing fields keep their fences by design, so upgrading them is a choice, not a surprise: the new gamemaster command tears out the old ring and gate (legacy and current radii both) and rebuilds with whatever the set offers today — the fence kit, the wider ring. -
"Upgrading an existing world" documented in the README: which
world/charons_echo/file to reset for which landmark (church, crypt, gates), which commands rebuild what (refence,rebuild-decor,rebuild-graves), the arrival-point caveat after a church re-paste — and which files must never be touched (graves.dat,fields.dat: they ARE the history).
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:vTzPC5B9:eh5H2lf2"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:vTzPC5B9:eh5H2lf2"
}

