Links
Tags
Creators
Details
1.2.9
Compatibility
Changes
Changelog
All notable changes to the Xshards plugin are documented in this file.
[1.2.9] - 2026-04-16
Fixed
-
Shop: items could be received without paying / lost shards on purchase. The shop listener now uses
getRawSlot()and only reacts to clicks inside the shop's top inventory, so clicks in the player's own inventory no longer trigger purchase flows. Shards are now deducted before the item is delivered, the player's balance is re-verified at confirm time, and any items that don't fit in a full inventory are dropped at the player's feet so they never lose what they paid for. The pending-purchase state is also cleared when the confirm GUI is closed without a choice. Fixes the "I can take items from the shard shop without paying" report. -
Database path mismatch (
XShardsvsXshards). The default SQLite path inconfig.ymlwasplugins/XShards/storage/xshards.db(capital S) while the plugin's data folder isXshards. The default has been corrected toplugins/Xshards/storage/xshards.db.Upgrade note: if you were running 1.2.8 or earlier, you'll have existing data in
plugins/XShards/storage/xshards.db. Either move that file toplugins/Xshards/storage/xshards.db, or setstorage.sqlite.file: plugins/XShards/storage/xshards.dbin yourconfig.ymlto keep the old path. -
SQLite errors: "stmt pointer is closed" / "database has been closed" / "Database connection lost. Reconnecting..." spam. The previous
DatabaseManagerreturned a single shared JDBC connection that callers would then close viatry-with-resources, which closed the shared connection out from under any other thread mid-query (e.g. the AFK task and PlaceholderAPI/DecentHolograms refreshes hitting the leaderboard and AFK status).DatabaseManager.getConnection()now returns a fresh connection per call, so each query is fully isolated. SQLite connections also enable WAL journal mode and a 5s busy timeout for better concurrent read/write behaviour. -
/shards remove <player> <amount>now works from the console. Previously the console branch only acceptedgive. Console, command blocks, and RCON can now useremoveas well, enabling custom commands and admin scripts to debit a player's balance without thegive <player> -Nworkaround.
Changed
- Startup banner now reads the version from
plugin.ymlinstead of a hard-coded string (was stuck atv1.2.4). ShardCommandnow rejects non-positive amounts up front with the existing "invalid amount" message, so admins can't accidentally invert a give/remove with a negative number.
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:dj6mn5Xl:B52tHXXI"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:dj6mn5Xl:B52tHXXI"
}

