Tags
Creators
Details
11.2
Compatibility
Changes
This update focuses on making configuration reloads safer, reducing database work on the main server thread, and improving reliability under concurrent activity.
Reload & Configuration Improvements
-
Reloads now properly preserve and re-register the advancement listener.
-
Configuration-dependent scheduled tasks are fully cancelled and recreated during reloads.
-
Added transactional configuration reloads. Configuration is now parsed and validated in temporary state before being applied.
- If validation fails, the previous working configuration remains active.
- Failed reloads can no longer leave the plugin partially configured.
-
Added additional validation for:
- Database types
- Colors
- Intervals and thresholds
- Database table prefixes
- Malformed configuration sections
- Duplicate display names
- Advancement-key collisions
Performance Improvements
- GUI, book, and ranking database reads now run asynchronously, reducing unnecessary work on the main server thread.
- Category GUI completion dates now use bulk database queries instead of querying achievements individually.
- Subcategory statistics now use bulk queries, significantly reducing database requests when loading larger menus.
- Improved concurrent cache initialization to prevent statistic updates from being lost during simultaneous operations.
Reliability & Testing
-
Added regression tests covering:
- Configuration rollback after failed reloads
- Bundled configuration parsing
- Advancement listener registration
- Scheduled task recreation
- Concurrent caching behavior
- Bulk database operations
Overall, this release makes reloads considerably safer while reducing database overhead and improving stability on active servers.
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:KADKsqnh:5N0bxDad"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:KADKsqnh:5N0bxDad"
}

