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 usesgetRawSlot()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 inplugins/XShards/storage/xshards.db. Either move that
file toplugins/Xshards/storage/xshards.db, or set
storage.sqlite.file: plugins/XShards/storage/xshards.dbin your
config.ymlto keep the old path. -
SQLite errors: "stmt pointer is closed" / "database has been closed" /
"Database connection lost. Reconnecting..." spam.
The previousDatabaseManagerreturned 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 the
give <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.