EcoXpert icon

EcoXpert -----

Take full control of your server’s economy — intelligent, stable, and impossible to break.



Bug Fix & Bedrock Compatibility Update
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 locked errors during market transactions
  • Occurred when many players traded simultaneously
  • Caused transaction failures and poor user experience
Root Cause:
  • SQLite busy_timeout was set to 5 seconds
  • High concurrency in market transactions exceeded timeout
  • Default configuration not optimized for multi-player servers
Solution:
  • Increased SQLite busy_timeout from 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 BedrockFormsManager with full reflection support
  • Uses Geyser's native SimpleForm and ModalForm APIs
  • 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:
Code (Java):
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, 1�,5K, $10K)
  • Withdraw money (same amounts)
  • Check balance in real-time
  • Automatic menu refresh after transactions
LoansGUI:
  • Request loans (1�,2.5K, 5�,10K, $25K)
  • Confirmation dialog with offer details
  • Make payments (500,1K, 2.5�,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 provided and optional in 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)
  • 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):

  1. Install Geyser-Spigot plugin
  2. Install Floodgate plugin
  3. Restart server
  4. 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:
  • Code (YAML):
    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:
  1. Stop server
  2. Replace EcoXpert-1.2.2.jar with EcoXpert-1.2.3.jar
  3. (Optional) Install Geyser + Floodgate
  4. Start server
  5. Verify logs for successful initialization
Issues: https://github.com/koyere/ecoxpert/issues

Discord: https://discord.gg/xKUjn3EJzR
----------, Nov 25, 2025
Resource Information
Author:
----------
Total Downloads: 43
First Release: Oct 6, 2025
Last Update: Nov 25, 2025
Category: ---------------
All-Time Rating:
0 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings