Bukkit Main Thread Economy Synchronicity: Refactored SubscriptionManager, LoanManager, PaydayManager, StockExchangeManager (bank dividends), PhysicalEconomyListener (check claiming), and all VaultXGUI / ExchangeRateManager transactions to dispatch economy deposits, withdrawals, bank balance queries, and bank withdrawals synchronously on the Bukkit main thread. This completely resolves severe thread-safety/concurrency issues when using third-party economy plugins that are not thread-safe.
Scheduler Concurrency & Wealth Tax Fixes: Resolved database write race conditions in LoanManager and SubscriptionManager by accumulating updates in-memory and saving them asynchronously in a single batch. Fixed the Central Bank wealth tax double-taxation bug on default currency and ensured custom currency taxes are correctly credited to the Treasury when interest is disabled. Offloaded all remaining database transaction logging to async threads.
Automated Database Pruning: Added a configurable storage.transaction-history-retention-days setting (defaulting to 30 days) to automatically prune old entries in the player_transactions and security_audits tables during background analytics runs, preventing database bloat.
Performance Optimizations (BFS Circular Transfer): Replaced the recursive DFS algorithm for circular transfer check in TransactionFirewall with an iterative $O(V + E)$ Breadth-First Search (BFS), eliminating CPU lags and preventing any risk of StackOverflowError.
SQLite HikariCP Connection Pool & WAL Mode: Upgraded SQLite storage integration in LocalFailoverManager to use a high-performance HikariCP connection pool with Write-Ahead Logging (WAL) and Normal synchronous mode enabled, removing global read locks and allowing concurrent async database queries.
Non-Blocking UUID Cache & Negative Caching: Offloaded local SQLite and Redis UUID cache queries to an asynchronous task when resolving offline players on the main thread to completely eliminate any risk of main-thread lag. Additionally, implemented negative caching for non-existent player names (5-minute expiration, cleared upon join) to prevent scheduler and Mojang API spam from repeat lookup attempts.
Central Bank Multi-Server Protection & Sync: Configured distributed locks (central_bank_run) via Redis and economic settings timestamp checks to prevent duplicate interest/tax runs on multi-server networks. Optimized Redis sync payload to only transmit modified player accounts.
Security Firewall Operator Bypass: Added an exemption to the transaction security firewall (including single-transaction limit, circular transfer, and spike detection) for operators (/op) and players with the new vault.firewall.bypass or vault.admin permissions, preventing administrators from being blocked or frozen during testing or command executions.
Full English Localization & Fallback Translations: Translated all user-facing commands, help menus, GUI titles/lores, and default error warnings from French to English. Hardcoded French fallback strings inside the source code (including Forex events, Bourse announcements, Paydays, Loans, Subscriptions, and Security Alerts) are now fully localized to English.
Translatable Subsystems & Configuration Cleanup: Added new, configurable translation keys for Subscriptions, Central Bank, and the Security Firewall inside messages.yml for easy customization. Audited and removed all obsolete, duplicate, and unused legacy keys to optimize config file structure.
Java 21 Modernization: Updated compilation targets to Java 21 to take advantage of modern JVM performance gains, concurrent GC optimizations, and updated dependencies.
Check Redemption Inventory Safety (Check Loss Prevention): Refactored physical check claiming and check signing to verify inventory space. If a player's inventory is full when database updates fail during claim restoration or check signing, the check item is dropped naturally at their feet, preventing any item loss.
Macroeconomic Stats Command & GUI (/vx stats / metrics): Added a new admin command /vx stats (and alias /vx metrics) that displays a beautiful macroeconomic overview. Players with admin permissions will open a dedicated GUI panel showing global currency supplies, average balances, accounts count, Public Treasury reserves, active bank loans, outstanding garnishments, and a Rich List leaderboard. Running the command from the console or with the text argument displays these stats as clean text in the chat.
Interactive Transaction Logs Search (/vx logs [page]): Added a /vx logs command allowing admins to view the last 10 transactions of any player in the chat. The query runs asynchronously off the main thread. On Spigot, logs are formatted as interactive chat components with hover details (showing raw type and category) and clickable pagination arrows.
Inflation Spike Detection & Discord Alerts: Extended the security firewall to periodically monitor the default money supply (every 5 minutes). If the total money supply increases by more than a configurable percentage (default 5.0%) within a sliding 1-hour window, the firewall generates warning logs and instantly dispatches an alert to the Discord Webhook to flag potential duplication bugs or corrupt administrative actions.
Robust Standalone & Redis Fallback Mode: Fixed several critical NullPointerExceptions in standalone mode when no economy delegate plugin is registered. Enabled full SQLite/MySQL local fallbacks for bank creation, deletion, deposits, and withdrawals when Redis is offline or disabled, ensuring seamless offline/failover operations.
Durability in Batch Writer Queue: Integrated database transaction success checks into the background batch writer loop. Drained records (transactions, audits, pending syncs) are now automatically re-queued on database lock or connection drop, preventing any silent data loss.
Asynchronous Circular Transfer Search: Refactored the firewall's circular transfer path-finding check to run asynchronously off the main thread. Transactions proceed instantly, and cycle detections are resolved in the background. If a loop is found, a task is scheduled on the next tick of the main thread to freeze the fraudulent accounts.
Aggressive Redis Connection Timeout: Reduced default Redis connection/socket timeout fallback from 2000ms to 250ms. If the Redis server lags or disconnects, VaultX instantly falls back to local database storage (SQLite/MySQL) without causing any main-thread freezes.
Leaderboard SQL Join Optimization: Updated the local leaderboard queries to perform a LEFT JOIN with the local_uuid_cache table, fetching player names directly from the database in a single query. This bypasses the synchronous Bukkit.getOfflinePlayer(uuid).getName() lookup loop, preventing severe lag spikes when opening the leaderboard GUI.
Asynchronous Local Database Writes: Offloaded synchronous database write operations (including saveUuidCache, saveBankBalance, deleteBankAccount, createBankAccount, updatePlayerStockShares, and updatePlayerDebt) to background threads. This prevents the Spigot main thread from blocking on disk E/S during joins, GUI clicks, and paydays.
Rate Limiter Memory Cleanup: Fixed a progressive memory leak in the transaction rate limiter by updating the background task to prune expired tracking entries (rateLimitWindow, rateLimitCount, rateLimitBlock) of offline players, keeping the heap footprint optimized.
Step into the future of Minecraft Economy. Install VaultX v1.0.9 now!
Information
| Published on | July 8, 2026 |
|---|---|
| Downloads | 2 |