
EcoXpert
Take full control of your server’s economy — intelligent, stable, and impossible to break.
EcoXpert - Changelog v1.4.0
Version 1.4.0 - Economic Intelligence Overhaul
Release Date: May 11, 2026
Compatibility: Minecraft 1.19.4 - 1.21.11+
Java Version: 17+
🧠 Economic Intelligence — Now Real
The Economic Intelligence Engine has been completely rewritten. All calculations now use real server data instead of placeholder values.
What Changed
- Liquidity injection now calculates the optimal amount based on your server's actual money supply, health deficit, velocity gap, and active player count. Previously it injected a flat $10,000 regardless of conditions.
- Player stimulus distribution is now weighted by each player's economic activity and personality. Active traders and investors receive proportionally more; hoarders and exploiters receive less.
- Velocity of money is now tracked in real-time from actual transaction volume vs total money supply. This metric was previously never updated.
- Economic health is now a composite of 5 real indicators: wealth distribution (Gini), transaction flow, market activity, inflation rate, and player participation.
- All economic metrics (total money supply, average balance, transaction volume, market activity) now query the database directly instead of returning hardcoded estimates.
Persistence Across Restarts
The intelligence engine no longer loses its memory when the server restarts:
- Economic snapshots are saved to the database every 5 minutes and restored on startup (last 24 hours).
- Player economic profiles (personality, credit score, risk/trust scores, transaction history) are now persisted and survive restarts.
- Old snapshot data is automatically cleaned up after 7 days.
Pattern Recognition
The system now identifies real patterns:
- Daily activity cycles — detects peak and trough hours on your server.
- Volatility periods — flags when the economy is unstable (>10% health swings in 30-minute windows).
- Cycle rhythm — tracks average cycle duration and most common transitions to improve predictions.
Dynamic Interest Rates
Bank interest rates now respond to economic conditions automatically:
- During downturns: rates increase to reward saving.
- During booms: rates decrease to encourage spending.
- High inflation: rates increase to discourage borrowing.
- The adjustment is applied proportionally to all bank tiers.
🗄️ New Database Tables
Two new tables are created automatically on first startup:
Table Purpose ecoxpert_economic_snapshotsStores economic state every 5 minutes for learning ecoxpert_player_profilesPersists player behavior analysis across restarts No manual migration required — tables are created automatically.
🐛 Bugs Fixed
- Fixed: Player economic profiles were never saved to database (lost on restart).
- Fixed: Velocity of money placeholder always returned 1.0 regardless of actual activity.
- Fixed: Economic health calculation used hardcoded values instead of real wealth distribution.
- Fixed: Interest rate adjustments were only logged, never applied to the banking system.
- Fixed: Liquidity injection always distributed $100 per player regardless of economic conditions.
📦 Update Instructions
- Stop server
- Replace
EcoXpert-1.3.1.jarwithEcoXpert-1.4.0.jar - Start server
- No configuration changes required — new tables are created automatically
Notes
- The intelligence engine will start with a fresh learning state on first boot (no historical snapshots from pre-1.4). After ~1 hour of operation it will have enough data for trend analysis; after ~4 hours for forecasting.
- Existing
modules/inflation.ymlpolicy parameters are fully compatible. No changes needed. - If you use MySQL, the new tables use the same charset/engine as existing tables.
⚙️ Compatibility
- ✅ Minecraft 1.19.4 – 26.2+
- ✅ Spigot / Paper / Purpur / Folia
- ✅ Java 17+
- ✅ SQLite and MySQL
- ✅ All existing configurations from 1.3.x
- ✅ Vault, PlaceholderAPI, DiscordSRV, GeyserMC
- ✅ WorldGuard, Lands, Towny, Jobs, Slimefun, mcMMO integrations
EcoXpert Pro — Because your economy deserves intelligence
EcoXpert - Changelog v1.3.1
Version 1.3.1 - Bug Fixes & Stability
Release Date: January 8, 2026 Compatibility: Minecraft 1.19.4 - 1.21.11 Java Version: 17+
🐛 Bug Fixes
SQLite Database Lock Fix
- Problem:
SQLITE_BUSY - database is lockederror under concurrent operations - Solution: SQLite pool size reduced to 1 connection to serialize writes
- Details:
- SQLite only allows one writer at a time
- HikariCP pool was configured with 10 connections causing conflicts
busy_timeoutincreased to 30 seconds as safety net- MySQL pool remains at 10 connections (handles concurrency properly)
SQL Compatibility Fix
- Problem:
INSERT OR IGNOREsyntax only works in SQLite, not MySQL - Solution: Database-specific SQL syntax detection
- Details:
- SQLite:
INSERT OR IGNORE INTO... - MySQL:
INSERT IGNORE INTO... - Affected files:
EconomyManagerImpl.java,MarketManagerImpl.java
- SQLite:
Market GUI Click Handler Fix
- Problem: Clicking "Sell Hand by $" button sent "hand" to chat instead of opening sub-GUI
- Solution: Reordered event handlers to check sub-GUI title before
marketInv == null - Details:
- Sub-GUI was not tracked in
openGUIsmap - Handler returned early without cancelling the event
- Same fix applied to
MarketOrdersGUI.java
- Sub-GUI was not tracked in
Missing Translation Keys Fix
- Problem: Translation keys displayed as raw text (e.g.,
market.gui.sell-hand.lore1) - Solution: Added missing keys to correct YAML paths
- Added keys:
market.gui.sell-hand.*(title, amount, lore1, lore2)market.gui.bedrock.action.*(19 keys for Bedrock action GUI)
- Files:
messages_en.yml,messages_es.yml
Translation System Fallback Improvement
- Problem: New translation keys not available if user has old language files
- Solution: Improved fallback to always check embedded JAR resources for missing keys
- Details:
- Local files are checked first (preserves user customizations)
- If key not found, automatically loads from JAR embedded resources
- Added UTF-8 encoding for proper character support
- Debug logging for troubleshooting translation issues
GUI Item Theft Prevention
- Problem: Items in GUIs could be moved to player inventory when translation keys failed
- Solution: All GUI click handlers now check both translated title AND raw key
- Affected GUIs:
- MarketGUI: List GUI, Sell Hand sub-GUI
- MarketOrdersGUI: Orders list, Select quantity
- LoansGUI: Offer preview, Schedule
📦 Update Instructions
- Stop server
- Replace
EcoXpert-1.3.0.jarwithEcoXpert-1.3.1.jar - Start server
- No configuration changes required
EcoXpert Pro - Because your economy deserves intelligence
- Problem:
EcoXpert - Changelog v1.3.0
Version 1.3.0 - Balance Leaderboard & Discord Integration
Release Date: December 19, 2025
Compatibility: Minecraft 1.19.4 - 1.21.8+
Java Version: 17+
🎯 What's New
⭐ Balance Leaderboard System (Baltop)
Complete leaderboard system with cross-platform support for Java and Bedrock editions.
Commands:
/baltop [page] - View leaderboard in chat /baltop gui [page] - Open GUI leaderboardAliases:
/balancetop,/topbalancesFeatures:
- 📊 Console view: 10 entries per page with pagination
- 🖥️ GUI view: 45 entries per page with player skulls
- 📱 Bedrock Forms: Native Geyser Forms for mobile/console players
- 🏆 Self-highlighting: Your position highlighted in gold
- 🔄 Real-time data with 30-second smart caching
- 📍 Rank display: See your position even when not on current page
📱 Discord Integration (NEW)
Full DiscordSRV integration for economy notifications and commands.
Discord Commands:
!balance <player> - Check player balance !market <item> - Check item prices !top [count] - View top players !inflation - Current inflation rate !stats - Economy statisticsNotifications:
- 💰 Large transactions (configurable threshold)
- 📈 Market price changes (>20% by default)
- ⚠️ Inflation alerts (>5% by default)
- 📊 Daily economy reports
🔧 Technical Improvements
Performance & Compatibility
- Smart caching system reduces database queries
- Async operations prevent server lag
- 100% Bedrock Edition compatibility maintained
- Automatic Geyser Forms detection and fallback
Cross-Platform Support
- Java Edition: Full chest GUI support
- Bedrock Edition: Native Geyser Forms when available
- Automatic Fallback: Chest GUI when Geyser unavailable
🎮 Commands & Permissions
New Commands
Command Permission Description /baltop [page]ecoxpert.baltopView balance leaderboard /baltop gui [page]ecoxpert.baltop.guiOpen GUI leaderboard New Permissions
ecoxpert.baltop- View balance leaderboard (default: true)ecoxpert.baltop.gui- Open GUI leaderboard (default: true)
📊 PlaceholderAPI Integration
New Placeholders
%ecox_baltop_balance_<rank>% - Balance at specific rank %ecox_baltop_balance_formatted_<rank>% - Formatted balance with currency %ecox_baltop_player_<rank>% - Player name at rank %ecox_baltop_rank% - Your current rankExample:
%ecox_baltop_player_1%returns the richest player's name
🔧 Configuration
Discord Setup
- Install DiscordSRV plugin
- Configure channels in
modules/discord.yml:discord: enabled: true channels: economy: "CHANNEL_ID" alerts: "CHANNEL_ID" - Reload:
/ecoxpert reload
Baltop Settings
- Console: 10 entries per page
- GUI: 45 entries per page
- Cache: 30 seconds TTL
- No configuration required - works out of the box
📦 Installation & Update
New Installation
- Download
EcoXpert-1.3.0.jar - Place in
plugins/folder - Install Vault (required) and DiscordSRV (optional)
- Restart server
Update from v1.2.x
- Stop server
- Replace JAR file
- Start server
- No database changes - fully backward compatible
🐛 Bug Fixes
- Fixed potential memory leak in leaderboard queries
- Improved error handling for empty result sets
- Enhanced GUI pagination edge cases
- Better Discord integration error handling
🔗 Integration Status
Fully Supported
- ✅ Vault - Complete economy integration
- ✅ PlaceholderAPI - 50+ placeholders available
- ✅ DiscordSRV - Full notification and command support
- ✅ GeyserMC - Native Bedrock Forms support
- ✅ WorldGuard/Lands - Territory-based bonuses
- ✅ Jobs/Towny/Slimefun - Economic adjustments
📞 Support
- Discord: https://discord.gg/xKUjn3EJzR
- Issues: GitHub Issues
- Documentation: README.md + in-game help
EcoXpert Pro - Because your economy deserves intelligence
Changelog - Version 1.2.3
Release Date: 2025-11-24 Type: Bug Fix & Bedrock Compatibility Update
🐛 Bug Fixes
#1: SQLite Database Lock Errors
Issue:
- Multiple
[SQLITE_BUSY] The database file is lockederrors during market transactions - Occurred when many players traded simultaneously
- Caused transaction failures and poor user experience
Root Cause:
- SQLite
busy_timeoutwas set to 5 seconds - High concurrency in market transactions exceeded timeout
- Default configuration not optimized for multi-player servers
Solution:
- Increased SQLite
busy_timeoutfrom 5s → 15s (3x improvement) - Applied in both JDBC URL and PRAGMA connection init
- Maintains WAL mode for better concurrent access
Testing:
- Load tested with 10+ concurrent market transactions
- Lock errors reduced by ~90%
- Recommended migration to MySQL for servers with 50+ players
#2: Bedrock Edition GUI Incompatibility
Issue:
- Bedrock players reported "blocks staying in inventory" when using Market GUI
- Items from chest-based GUIs appeared as real items in inventory
- Bedrock Edition doesn't support interactive chest GUIs like Java Edition
Root Cause:
- All GUIs used
Bukkit.createInventory()(chest-based GUIs) - Minecraft Bedrock Edition interprets chest GUI items as real items
- No Bedrock-native interface (Geyser Forms) implemented
Solution - (Market GUI):
1. Geyser Forms API Integration:
- Added
BedrockFormsManagerwith full reflection support - Uses Geyser's native
SimpleFormandModalFormAPIs - Zero compile-time dependency - loads dynamically at runtime
2. Intelligent Platform Detection:
- Detects Bedrock players via Floodgate API (reflection)
- Checks if Geyser Forms API is available
- Auto-switches between Forms (Bedrock) and Chest GUIs (Java)
3. Fallback System:
Bedrock Player + Geyser Installed → Native Forms (✅ Fixed) Bedrock Player + No Geyser → Chest GUI (⚠️ Known issue) Java Edition Player → Chest GUI (✅ Works)4. ALL GUIs Now Support Bedrock Forms:
MarketGUI:
- Buy items (1x, 16x, stack)
- Sell items (1x, stack, all)
- Create market listings
- Touch-friendly item selection
BankGUI:
- Deposit money ($100, $500, $1K, $5K, $10K)
- Withdraw money (same amounts)
- Check balance in real-time
- Automatic menu refresh after transactions
LoansGUI:
- Request loans ($1K, $2.5K, $5K, $10K, $25K)
- Confirmation dialog with offer details
- Make payments ($500, $1K, $2.5K, $5K, full amount)
- View loan status
- Smart credit score integration
ProfessionsGUI:
- Select from 7 professions
- View buy/sell factors
- Real-time XP and level display
All Forms Include:
- Full translation support (EN/ES)
- Touch-friendly Bedrock UX
- Graceful fallback to chest GUIs if Geyser unavailable
- Automatic platform detection
Installation Requirements:
- Geyser-Spigot plugin (optional but recommended)
- Floodgate plugin (optional but recommended)
- Auto-detects at runtime - no configuration needed
Current Status:
- ✅ MarketGUI - Full Geyser Forms support
- ✅ BankGUI - Full Geyser Forms support (NEW)
- ✅ LoansGUI - Full Geyser Forms support (NEW)
- ✅ ProfessionsGUI - Full Geyser Forms support (NEW)
🔧 Technical Improvements
Dependency Management
- Geyser/Floodgate APIs loaded via reflection (no compile dependency)
- Dependencies marked as
providedandoptionalin pom.xml - Dependencies commented out in pom.xml for easier compilation
- Zero JAR size increase - maintains 2.5MB optimized build
- Graceful degradation when APIs not available
Bedrock Forms Architecture
- SimpleForm - Menu with buttons (main menus, selections)
- ModalForm - Yes/No confirmations (loan approval, critical actions)
- CustomForm - Input fields (text, dropdowns, sliders, toggles)
- Dual implementation pattern (Forms for Bedrock, Chest GUI for Java)
- Automatic platform detection via PlatformManager
- Translation-first design (all text uses TranslationManager)
Database Optimization
- SQLite busy_timeout: 5000ms → 15000ms
- Connection pool configuration optimized
- Better error handling for concurrent writes
Platform Detection
- Enhanced Bedrock player detection via Floodgate reflection
- Runtime capability detection (Forms API availability)
- Automatic UX adaptation based on client type
📝 Documentation Updates
README.md
- Added "Bedrock Edition (GeyserMC) Issues" troubleshooting section
- Documented SQLite lock error solutions
- Added current Bedrock Forms support status
- Included Geyser installation requirements
Translation Files
- Added 50+ new translation keys for Bedrock Forms:
- Market Forms:
market.gui.bedrock.*(13 keys) - Bank Forms:
bank.gui.bedrock.*(15 keys) - Loans Forms:
loans.gui.bedrock.*(18 keys) - Professions Forms:
professions.gui.bedrock.*(4 keys)
- Market Forms:
- Both English and Spanish translations
- All Forms use translated text - zero hardcoded strings
🔄 Migration Notes
From v1.2.2 → v1.2.3
Automatic (No Action Required):
- SQLite timeout increase applies automatically
- Bedrock Forms activate if Geyser detected
- All existing functionality preserved
Optional (Recommended for Bedrock Servers):
- Install Geyser-Spigot plugin
- Install Floodgate plugin
- Restart server
- Verify log:
"Geyser Forms API detected"
For High-Traffic Servers (50+ players):
- Consider migrating from SQLite to MySQL
- MySQL drivers download automatically
- Update
config.yml:database: type: "mysql"
🚀 Performance Impact
- JAR Size: No change (optimized)
- Memory: +0.5MB when Geyser Forms active
- CPU: Negligible (<1% overhead for platform detection)
- Database: ~90% reduction in SQLite lock errors
⚠️ Known Issues
Bedrock Edition (Without Geyser)
- All main GUIs now work with Geyser installed! ✅
- If Geyser NOT installed: chest GUIs used (items may appear in inventory)
- Solution: Install Geyser-Spigot + Floodgate for best experience
- Alternative: Use text commands (
/bank deposit,/loans request, etc.)
SQLite Under Extreme Load
- Lock errors may still occur with 100+ concurrent transactions
- Solution: Migrate to MySQL for production servers
🎯 Upgrade Recommendations
Priority: HIGH for servers with:
- Bedrock Edition players (via GeyserMC)
- High market trading activity
- Frequent SQLite lock errors in logs
Priority: MEDIUM for servers with:
- Java Edition only
- Low-medium player count (<50)
- Occasional database warnings
Installation:
- Stop server
- Replace
EcoXpert-1.2.2.jarwithEcoXpert-1.2.3.jar - (Optional) Install Geyser + Floodgate
- Start server
- Verify logs for successful initialization
Issues: https://github.com/koyere/ecoxpert/issues Discord: https://discord.gg/xKUjn3EJzR
- Multiple
EcoXpert 1.2.2 — Market Safety & Integrity
- Fixed: hard blockers on market buys/sells/orders when unit price or totals are zero/negative; cache and price calculator now auto-heal corrupt prices back to safe base values so items can’t be bought for free.
- Improved: economy operations now require strictly positive amounts, tightening validation across transfers/debits.
- Compatibility: Java 17+, Spigot/Paper/Purpur/Folia 1.19.4–1.21.9+ (no API changes).
- Update: build or download
EcoXpert-1.2.2.jar, replace the old JAR inplugins/, and restart your server. No config changes required.
EcoXpert 1.2.1 — MySQL Schema Finalization
- Fixed: schema creation now generates valid MySQL DDL (AUTO_INCREMENT, booleans, compatible defaults) and uses dialect-specific upsert logic to avoid syntax errors during startup.
- Improved: database initialization chooses the correct SQL dialect (SQLite/MySQL/H2), verifies index existence via metadata, and handles meta-version updates without driver-specific queries.
- Fixed: MySQL charset compatibility — added automatic fallback from utf8mb4 to utf8 if server doesn't support utf8mb4. Database is now auto-created if it doesn't exist.
- Improved: config.yml now includes MySQL troubleshooting guide with solutions for charset, timeout, and access errors.
EcoXpert 1.2 — MySQL Reliability Update
- Added: full MySQL configuration support driven by
config.yml, including optional pool tuning. - Fixed: removed hardcoded credentials to stop "Access denied" errors during MySQL startup.
- Improved: MySQL connections now enforce
utf8mb4and validate parameters before building the pool for safer boot.
- Added: full MySQL configuration support driven by
#Version 1.1 > Bug Fixes
##1. Fixed errors in the Spanish and English translation keys. Some GUIs had errors. All translation errors were corrected.
##2. Added the full API methods. The API is now more complete, secure, and robust. You can check the official plugin information.
##Installation: ###1. Replace the plugin. ###2. Delete the messages files. ###3. Restart the server.
Нет описания изменений
