Tags
Creators
Details
1.2.3
Compatibility
Changes
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
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:lzLx2r8h:swaYEC2y"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:lzLx2r8h:swaYEC2y"
}

