
EcoXpert
Take full control of your server’s economy — intelligent, stable, and impossible to break.
Bug Fixes & Stability
release8 января 2026 г.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
EcoXpert 1.3
release20 декабря 2025 г.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 leaderboard
Aliases: /balancetop, /topbalances
Features:
- 📊 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 statistics
Notifications:
- 💰 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.baltop | View balance leaderboard |
/baltop gui [page] | ecoxpert.baltop.gui | Open 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 rank
Example: %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
EcoXpert 1.2.3
release25 ноября 2025 г.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
EcoXpert 1.2.2
release17 ноября 2025 г.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
release17 октября 2025 г.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.
