EcoXpert icon

EcoXpert -----

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




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

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 in plugins/, and restart your server. No config changes required.
----------, Nov 17, 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.
----------, Oct 17, 2025

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 utf8mb4 and validate parameters before building the pool for safer boot.
----------, Oct 15, 2025

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.
----------, Oct 12, 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