
EcoXpert
Take full control of your server’s economy — intelligent, stable, and impossible to break.
192
0
Список изменений
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.3.jar(1.03 MiB)
ОсновнойМетаданные
Канал релиза
Release
Номер версии
1.2.3
Загрузчики
BukkitFoliaPaperPurpurSpigot
Версии игры
1.19–1.21.10
Загрузок
50
Дата публикации
3 мес. назад
