
XTransfer
A tool that help you transfer players' data between names or UUIDs.
29
2
Fixes...
release27 февраля 2026 г.Added
- Added
MAX_CACHE_SIZE(1000) limit to prevent memory overflow when loading usercache.json - Added automatic cleanup task to remove stale player locks and access records every hour
- Added performance monitoring with loading time statistics in debug logs
- Added detailed debug logging for file operations, lock acquisition, and error conditions
- Added disk space check before backup operations
Changed
- Refactored data loading: Merged
loadUserCache()andloadNameToUUIDs()into singleloadPlayerData()method for better performance - Improved lock management: Locks now track last access time and are automatically cleaned up
- Enhanced error handling: All exceptions now include detailed debug messages instead of being ignored
- Optimized file copying: Implemented atomic temp file operations with proper cleanup
- Restructured command handling: Unified
transferandtransferuuidlogic into single method - Improved backup system: Added proper file existence checks and atomic operations
- Enhanced tab completion: Added offline player name suggestions with limits
- Better executor shutdown: Added timeout handling and forced termination if needed
Fixed
- Critical: Fixed recursive scheduling in
startCleanupTask()that could cause stack overflow - Critical: Removed dangerous offline UUID fallback that could match wrong players (
UUID.nameUUIDFromBytes) - Fixed scheduler parameter bug where
nullcould be passed instead of plugin instance - Fixed potential memory leak by properly removing locks on player quit
- Fixed file copy failure when parent directories don't exist
- Fixed race condition in task tracking set during concurrent operations
- Fixed incorrect stats file extension for older server versions (<1.13)
- Fixed potential deadlock by implementing consistent lock ordering
- Fixed missing message placeholders in several command responses
Removed
- Removed dangerous offline UUID generation (
UUID.nameUUIDFromBytes) - Removed redundant
asyncparameter from Bukkit scheduler calls - Removed duplicate data loading methods in favor of unified approach
- Removed empty catch blocks that silently ignored exceptions
- Removed unnecessary thread pool for simple operations
Another optimization!
beta26 февраля 2026 г.Added
- Folia server support with global region scheduler
- Async file copy operations with buffered streams
- User cache loading from usercache.json
- Name-to-UUID mapping system for offline player lookup
- Backup file creation with configurable suffix
- Disk space checking before file operations (50MB reserve)
- File copy retry mechanism (3 retries with 1 second delay)
- Atomic file operations using temporary files
- Memory leak prevention with automatic lock cleanup system
- Periodic cache cleanup task (runs every hour)
- Player quit event listener to remove unused locks
- Last access time tracking for lock management
- Version detection fallback for unknown server versions
- Multi-language support with message placeholders
- Stats and advancements transfer with version detection
- List command for player data with pagination
- Tab completion with online and offline player support
- Player kick option for online target players
Changed
- Migrated to CompletableFuture for reliable async operations
- Optimized concurrent map operations with atomic replacements
- Improved UUID parsing with better error handling and formatting
- Enhanced scheduler with automatic Folia/Bukkit detection
- Simplified logging system while keeping debug functionality
- Better resource cleanup in onDisable() with timeout handling
- Streamlined configuration loading with auto-fix
- More efficient name-to-UUID mapping updates
- Optimized file copy with proper buffer sizing (8KB)
- Improved lock acquisition with timeout and deadlock prevention
Fixed
- Potential memory leak from unclosed player locks
- Thread safety issues in cache loading (added synchronization)
- Disk space exhaustion crashes during file transfer
- Server version detection crashes with unusual formats
- Concurrent modification issues in map operations
- File copy failures due to cross-filesystem moves
- Backup file corruption from incomplete writes
- Tab completion NPE with null permissions
- UUID format inconsistencies in user input
- Player kick timing issues with async operations
- Configuration loading errors with missing keys
- Resource leaks in file streams (try-with-resources)
- Shutdown hangs from unfinished tasks
Removed
- Redundant constant classes (merged into simple constants)
- Excessive logging methods (consolidated into core ones)
- Overly detailed debug outputs (kept essential only)
- Unnecessary map clearing operations
- Duplicate code blocks in transfer handling
- Deprecated Bukkit API usages
- Legacy version color formatting (simplified version display)
- Redundant permission checks in tab completion
Nah, this is a big work, honestly. Not gonna give up of it.
Optimization
alpha26 февраля 2026 г.Changed
- More stable and safe action!
- The code is shorter than the old one.
- The plugin runs faster.
Folia!
release25 февраля 2026 г.Added
- Folia supported!
Changed
- Optimized the size of JAR.
1.8 ~ 1.12 Supports!
beta25 февраля 2026 г.Added
- Supports 1.8.x ~ 1.12.x now!
Совместимость
Ссылки
Создатели
Детали
Лицензия:CC-BY-NC-SA-4.0
Опубликован:1 месяц назад
Обновлён:1 месяц назад
