Tags
Creators
Details
2.0.0.0-alpha
Compatibility
Required content
Changes
The version on the Alpha channel might be unstable. This version is for early testing; please report any issues promptly.
2.0.0.0-alpha - v2 Rewrite (Multi-Platform & Config Reliability)
Major refactor
- The plugin is being re-architected into a platform-agnostic core (
common/,core/) with thin platform shims (bukkit/,fabric/).- All block / dimension identifiers now use the canonical Minecraft namespace format (
minecraft:diamond_ore,minecraft:water,minecraft:air,minecraft:cave_air,minecraft:ancient_debris). World folder names inxray.worldsand the group file names (overworld,nether,end) are preserved — only the contents are normalized. - The Bukkit platform translates
World.Environmentto the canonical id at runtime, so the sameconfig.ymlworks regardless of how the server admin named the on-disk folders. - The v1 code path under
src/main/legacy/is preserved for reference but is no longer wired intoplugin.yml;BukkitPlatformis the only entry point.
- All block / dimension identifiers now use the canonical Minecraft namespace format (
Fabric Support
- Now support Fabric on Minecraft 26.1+.
Config auto-completion (DONE)
- v2 now auto-completes user
config.ymland per-worldConfiguration/<group>.ymlagainst the JAR defaults on startup, so upgrading the plugin no longer requires manualconfig.ymlcleanup. - A new
_config-versionkey in every YAML file (main config and each group file) drives an automatic back-up-and-replace upgrade path: when a user's version is older than the JAR's, the file is saved as<name>-<yyyy-MM-dd>.yml.bakand seeded with the JAR default. The merge then fills in any keys added between the user's version and the latest. - The merge step counts the number of leaf keys it added and logs a summary line, e.g.
[Merger] config.yml: filled 5 missing key(s) from defaults. No log is emitted in the steady state, so logs stay quiet. - A separate
Created <file> from defaultline is emitted on the first run when the user file doesn't exist yet. - A new eager load of group configs in
BukkitPlatform.onEnable()ensures the per-world files are copied from the JAR on fresh install and the in-memoryCoreConfigis populated before the first mining event.
Fixed BUG
- v1 → v2 config migration: stale user
config.ymlwould silently keep the old layout, causing v2 to fall back to defaults at the call sites without ever updating the file on disk. Root cause was aMemorySection↔Mapmismatch between Bukkit'sYamlConfigurationand the core merger'sinstanceof Mapchecks, plus a missing_config-versionupgrade path on the main config. Both are now fixed. - Group config files were not being created on fresh install (only on the first mining event) — the eager
loadGroupConfigs()call inBukkitPlatform.onEnable()fixes this. /minertrack reloadwas serving the previous 5-second-cached config instead of the freshly-merged one — the cache is now explicitly cleared before reloading.
Other improvements
BukkitAdapter.reloadConfig()no longer callsplugin.reloadConfig(). v2 readsconfig.ymlvia the platform-agnosticConfigMerger, not Bukkit'sJavaPlugin#getConfig(), so the legacy reload call was a no-op.- The webhook custom-JSON template in
config.ymlhad a stray quote ("world": %world%',); now properly quoted as"world": "%world%"so the payload is valid JSON.
Recommend to rebuild the config.yml and the Configuration/*.yml files after upgrading.
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:O3VQnhG2:ppUZI8jD"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:O3VQnhG2:ppUZI8jD"
}

