
XGamemode
You're not switching modes, you're switching dimensions.
1.9K
4
Optimizations
release22 марта 2026 г.Added
- Batch processing for offline player data with configurable
BATCH_SIZE(default: 100) to prevent memory overflow when handling large datasets - Centralized constant declarations (
SAVE_DELAY,MAX_MAPPINGS,BATCH_SIZE,LOCK_TIMEOUT,SHUTDOWN_TIMEOUT) for better maintainability
Fixed
- Potential performance issue where offline player data was processed without pagination, causing high memory usage
- Redundant
BatchResultinner class replaced with local variables for cleaner code structure
Changed
- Optimized
processOfflinePlayersDatamethod to process keys in batches instead of all at once - Simplified
handleBatchPlayersmethod by removing unnecessaryBatchResultwrapper class - Streamlined code formatting: compressed multi-line conditionals into single lines where appropriate
- Improved code readability with consistent constant usage across all methods
Removed
- Redundant
BatchResultinner class (functionality replaced with local variables) - Hardcoded thread pool size value (now using
THREAD_POOL_SIZEconstant)
Fixes...
beta27 февраля 2026 г.Added
- Added debug logging for lock timeouts and interruptions
- Added
pendingSavesset to prevent multiple concurrent save operations
Changed
- Improved Folia scheduler fallback logic: sync tasks now use Bukkit scheduler instead of direct
run()to prevent main thread blocking - Enhanced version detection to properly handle 1.8.8 format
Fixed
- Fixed potential main thread blocking when Folia scheduling fails
- Fixed lock timeout handling with proper debug logging for easier troubleshooting
- Fixed duplicate data saving by implementing pending saves tracking with
ConcurrentHashMap.newKeySet() - Fixed version parsing for formats like 1.8.8
Completly Optimized!
alpha26 февраля 2026 г.Added
- Added comprehensive thread-safe locking mechanism using ReentrantLock for player data
- Added support for Folia server software with unified scheduling API
- Added debug mode with detailed logging for troubleshooting
- Added maximum mappings limit (10,000) to prevent memory leaks
- Added delayed save system (20 ticks) to batch disk writes
- Added batch processing commands:
/gamemode -all,-online,-offline - Added server version detection for spectator mode compatibility
- Added configuration auto-merge to keep config.yml up-to-date
- Added proper error handling with stack traces in debug mode
- Added player quit event handling to clean up locks
Changed
- Complete architecture rewrite with modular design
- Migrated from coarse synchronized blocks to fine-grained ReentrantLock
- Improved thread management: replaced scattered async calls with centralized 4-thread pool
- Enhanced name-to-UUID mapping with bidirectional cache (uuidToName + nameToUUIDs)
- Optimized data saving: from immediate writes to delayed batch saving
- Unified task scheduling for Bukkit and Folia platforms
- Improved command tab completion with offline player suggestions
- Refactored permission system with granular control (xgamemode.admin, xgamemode.others.*)
- Enhanced logging with color-coded console messages
- Restructured message system with better fallback support
Fixed
- Fixed thread safety issues in name-to-UUID mappings
- Fixed memory leak where player data never got cleaned up
- Fixed data loss risk from frequent uncoordinated saves
- Fixed incorrect console sender usage in logo display
- Fixed spectator mode detection on older server versions
- Fixed race conditions in player join event handling
- Fixed improper synchronization in data file access
- Fixed tab completion showing duplicate entries
- Fixed permission checks for offline player modifications
Removed
- Removed excessive synchronized blocks causing performance bottlenecks
- Removed redundant saveData() calls after every player join
- Removed unsafe HashSet usage in concurrent mappings
- Removed mixed tab/space indentation (now using consistent spaces)
- Removed deprecated scheduler implementations
I won't be sad when the final JAR file is big anymore! Stable > Everything! Screw you, JAR size!
4.3-rls
release2 февраля 2026 г.- Optimized the plugin.
4.3-beta
beta4 июля 2025 г.[x] Fixed the bug that cause error when closing the server.
