Database Safety, Trade Protection & Performance Update
Added
Added a versioned database schema with automatic migration from legacy data.
Added UUID-based database records.
Added automatic database backups and corruption recovery.
Added exact one-time trade claims that persist across restarts and prevent duplicate purchases.
Added /wc database prune with a safe two-step preview → confirm workflow.
A backup is now created automatically before pruning.
Added a searchable and sortable database GUI.
Added shift-click retrieval and inventory drag protection.
Improved
Database saves are now atomic for improved data safety.
Config validation is now safer and reloads are non-destructive.
Improved database performance with indexed counts.
Trade selection now uses reservoir sampling for better performance on larger datasets.
Improved restoration of stored item lore and metadata.
Fixed
Improved protection against duplicate trade claims under concurrent requests.
Improved database recovery behavior when corrupted data is detected.
Improved GUI safety around item movement and retrieval.
Technical
Updated project dependencies.
Added stricter Maven and Java version enforcement.
Updated documentation and changelog.
Added GitHub Actions CI.
Expanded automated testing for:
Database migration
Corruption recovery
Database pruning
GUI safety
Lore restoration
Concurrent trade claims
Maintenance & Modernization Update
Updated to Java 21 and Paper 1.21.11.
Updated ItemsAdder and Oraxen integrations.
Modernized messages and GUI handling using Adventure components.
Reorganized and cleaned up compatibility, GUI, trade, update, and utility code.
Consolidated wandering trader and virtual trade systems.
Improved database saving, recovery, and persistence safety.
Fixed one-time trades not respecting their configuration.
Fixed temporary owner lore not being restored correctly.
Fixed cancelled-event handling and GUI item retrieval.
Improved trade session cleanup when inventories close or players disconnect.
Added safer price handling and validation.
Improved update checker reliability.
Added Maven Wrapper, documentation, and automated regression tests.
Several internal systems were also cleaned up and modernized to make future updates easier and more reliable.
Please consider leaving a good review for the plugin.Discord Support
GUI Improvements
- Category GUI now uses actual database entries, not the whitelist.
- Empty item categories are skipped.
- Category icons are based on a real sample item from that category.
- Category hover now shows:
stack count
total item amount
owner-tagged stacks
unknown-owner stacks
- Item hover now shows Database Owner: <player> or Unknown.
- GUI-only owner lore is stripped before giving/removing items, so the actual stored item is not polluted.
- Navigation is now slot-based, so stored items named Back, Next Page, etc. won’t accidentally trigger navigation.
Please consider leaving a good review for the plugin.
Discord Support
Maintenance update
- Added /wc help to display available WanderingCollector commands.
- Added /wc stats for admins to view plugin and trade configuration stats.
- Added /wc version for admins to check the installed plugin version and latest Spigot version.
- Added tab completion for /wc help, /wc stats, and /wc version.
- Added checkForUpdates to the default config with a short description.
- /wc with no arguments now shows the help menu instead of only returning an error.
- Updated /wc usage text in plugin.yml to include help, stats, and version.
- Bumped plugin.yml version to 4.6.
- Bumped Maven artifact version to 4.6.
Please consider leaving a good review for the plugin.
Discord Support
General Improvments
This update focuses on /wctrade improvements, GUI/category fixes, safer random handling, and stronger database/trader cleanup logic.
Added
- Added VirtualTradeSessionManager to track /wctrade merchant sessions.
- Added support for removing traded items from the database when using /wctrade.
- Added getVirtualTradeSessionManager() to WanderingCollector.
- Added getStorageKey(ItemStack item) to ItemDatabase for unified category detection.
- Added custom category icon support in DatabaseGUI for ItemsAdder/Oraxen entries.
- Added safer command registration with null checks for wc and wctrade.
- Added one-use trade recipes for spawned traders and /wctrade virtual merchant offers.
- Added randomBetween(min, max) safety helper to prevent crashes from reversed config ranges.
- Added trader cleanup support and wired cleanup on trader death/removal.
- Added improved database persistence safety with atomic save/backup logic and shutdown flush behavior.
- Added migration cleanup for legacy owner/gui marker PDC data and accidentally persisted last-owner lore.
Changed
- Updated /wctrade to use database entries instead of plain random item stacks.
- Updated GUI category filtering to use itemDatabase.getStorageKey(item) instead of only vanilla material names.
- Updated category GUI click handling so unnamed items can still be taken by admins.
- Updated random price generation to use ThreadLocalRandom via randomBetween(...).
- Updated random database selection helpers to shuffle copies instead of mutating the original list.
- Updated startup flow so core listeners are registered immediately instead of after an unnecessary async load.
- Updated trader cleanup to use EntityRemoveFromWorldEvent instead of the deprecated EntityRemoveEvent.
- Changed database removal to remove only a single matching item instead of all similar items.
- Kept GUI-only last-owner lore stripping/restoration flow for traded items.
- Preserved last-owner tracking through despawn, drop, spawn, and merge flows.
- Updated the Spigot update checker URL to the correct endpoint format.
- Hardened latestVersion handling for safer async/main-thread access.
Fixed
- Fixed /wctrade not removing purchased items from the database.
- Fixed /wc gui so console use no longer causes a ClassCastException.
- Fixed category GUI not showing custom whitelist categories properly.
- Fixed category GUI not opening/clicking correctly for items without custom display names.
- Fixed empty-category pagination showing Page 1/0.
- Fixed possible side effects from shuffling input lists directly in ItemDatabase.
- Fixed incorrect Spigot update-check request path.
- Hardened GUI click handling against null, AIR, and missing display name cases.
Please consider leaving a good review for the plugin.
Discord Support
last owner
- Fixes and better implementation of the last owner feature, the info of the last owner should appear on the trade menu only, the item returns to its original state on trade.
Please consider leaving a good review for the plugin.
Discord Support
Database protection, NBT fix
- Important fix, made sure items drop don't get any extra NBT tags unless they actually enter the database.
- Made sure the database is never corrupted in case of hard crashes or out of disk space errors.
- Improved database performances, latest libraries, better organization.
Please consider leaving a good review for the plugin.
Discord Support
Page 1