bStats Integration: Added bStats support for SovereignTraders using plugin ID 30709, with the metrics classes shaded and relocated into the final jar for Paper/Folia-safe runtime reporting.
PlayerPoints Economic Drift: Fractional prices (from dynamic multipliers, catalog discounts, or user-set decimal values) were silently floor-truncated when transacting with PlayerPoints. A cost of 10.75 would charge 10, and a reward of 10.75 would pay 10, causing systematic balance drift over time. All three operations (withdraw, deposit, and affordability check) now round to the nearest integer consistently.
Reload Kills Timed Services: Fixed quota reset timers and reduction window schedulers permanently stopping after a /traders reload. Both services now correctly restart their tick loops after reload instead of only re-syncing data.
Acquisition Rollback Atomicity: When a purchase failed due to a full inventory, the rollback incorrectly called removeItem on the player's existing inventory instead of restoring from a pre-transaction snapshot. Items the player already held could be erroneously consumed. Rollback now always restores from a cloned snapshot taken before any inventory mutation.
Liquidation Rollback: When a sell transaction's deposit was rejected by the economy provider, consumed items were not returned to the player. The player would lose their items with no payment. The inventory is now restored from snapshot on any deposit failure.
Refund Failure Alerting: If a refund deposit fails during an acquisition rollback, the failure is now logged at SEVERE so operators can identify and manually correct cases where a player lost both their money and their items.
Open Source: SovereignTraders has been reorganized and released as open source. The full source code is available on GitHub.
✦ Improvement
Command Renamed: The primary command has changed from /sovereign to /traders. Aliases /st and /svt remain unchanged. Any macros, scripts, or command blocks using /sovereign must be updated.
Scheduled Sales: Set window-start and window-end (ISO-8601) on any catalog or listing reduction and the sale toggles itself on/off automatically. Checks every 5 seconds.
Transaction Log: All buy/sell/barter transactions are logged to transactions.log. Toggle with general.transaction-log in config.yml.
Quantity Selector: Shift-click any item to open a bulk buy/sell menu. Choose from smart presets (×1, ×5, ×16, ×32, ×64, stack, half-inventory, max) or pick a custom amount. Works with both buying and selling.
✦ Fix
Fixed a critical VerifyError on startup caused by invalid bytecode in the obfuscation pipeline. The plugin would fail to enable with Expecting a stackmap frame at branch target. This has been resolved, the plugin now loads cleanly on Java 21 / Paper 1.21x.