Links
Tags
Creators
Details
0.11.1
Compatibility
Changes
v0.11.1 — Fix /save-all flush hang during operation
Critical hotfix for a regression: running /save-all flush while the server is live could spin the main thread in an endless loop, tripping the 60-second ServerWatchdog kill and freezing the server. This affects any path that issues /save-all flush during operation — an admin running it by hand, backup mods snapshotting before a save, or a scheduled save task.
The problem
Vanilla saveAllChunks(flush=true) keeps re-scanning every chunk "as long as any chunk got written this round," stopping only once a full pass writes nothing. To advance vanilla's save cooldown, BAS reports already-clean chunks as "saved"; during operation that report keeps the loop's condition permanently true, so the main thread never leaves the save loop and the watchdog declares a hang after 60 seconds.
Only the operational /save-all flush reaches this path. Shutdown flush is unaffected (it runs a different synchronous drain), and periodic autosave is unaffected.
The fix
Operational /save-all flush no longer hands control to vanilla's synchronous loop. It now uses the same async enqueue path as periodic autosave — dirty chunks go to the background serialization workers and the command returns in well under a second. Shutdown flush keeps its existing synchronous drain semantics unchanged.
Upgrading
Drop-in jar replacement, no config changes. Every 0.11.0 user should upgrade: if anything on the server can issue /save-all flush, 0.11.0 can be watchdog-killed after a few hours of uptime.
Fixes #5, #6
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:WAXR3mM5:sKvV0Oa2"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:WAXR3mM5:sKvV0Oa2"
}

