
XTransfer
A tool that help you transfer players' data between names or UUIDs.
Автор: Wind_Blood4423обновлён 13 мая 2026 г.
УправлениеОптимизацияУтилиты
Описание

0 What the heck is this?
A new plugin designed to transfer players' data between names or UUIDs. I didn't find any other plugin can handle this problem before, so I made my own one and uploaded it to here to help anyone who needs this feature for his/her server.
1 Features
1.1 Smart UUID Detection
Automatically detects UUIDs from:
- Online players
- usercache.json (for premium players)
- Offline-mode UUID generation
1.2 Complete Data Transfer
Transfers all vanilla player data:
- Player inventory and Ender Chest (
playerdata/) - Statistics (
stats/) - Advancements (
advancements/) for 1.13+
1.3 Safe & Reliable
- Creates automatic backups before overwriting
- Kicks online players to prevent data overwrite (configurable)
- Asynchronous file operations - no server lag!
2 Commands and Permission Nodes
2.1 Commands
- /xtransfer - Show version info
- /xtransfer transfer <old-name> <new-name> - Transfer by player names
- /xtransfer transferuuid <old-uuid> <new-uuid> - Transfer by UUIDs
- /xtransfer list - List all player data files
- /xtransfer list <player> - Show files for specific player
- /xtransfer reload - Reload configuration
- /xtransfer help - Show the help message
/xtf = /transfer = /xtransfer
2.2 Permission Nodes
- xtransfer.manage - Allows using all XTransfer commands (default: op)
3 Config
# Show logo when plugin enabled
show_logo: true
# World settings
world:
# Manual world name (only used if auto-detect is false)
name: "world"
# Automatically detect world name from server
auto-detect: true
# Transfer settings
transfer:
# Transfer statistics files
stats: true
# Transfer advancements files (1.13+)
advancements: true
# Backup settings
backup:
# Create backup of existing files before overwriting
create: true
# Suffix for backup files
suffix: ".old"
# Online player handling
# If true, kick online players before transfer
# If false, show warning but continue
kick-online-player: true
# Language settings
language: "en"
# Debug mode (enable only for troubleshooting)
debug: false
# Messages - You can customize all messages here
messages:
# English messages
en:
no-permission: "&cYou don't have permission!"
usage-header: "&9&lX&f&lTransfer &f&lHelp"
usage-transfer: "&7/xtransfer transfer &f<old-name> <new-name>"
usage-transferuuid: "&7/xtransfer transferuuid &f<old-uuid> <new-uuid>"
usage-list: "&7/xtransfer list &f[player]"
usage-reload: "&7/xtransfer reload"
usage-help: "&7/xtransfer help"
reload-success: "&a✓ Configuration reloaded!"
transfer-start: "&eStarting async transfer..."
looking-up: "&eLooking up UUIDs for &f{old} &eand &f{new}&e..."
uuid-not-found: "&cCould not find UUID for: &f{name}"
try-uuid: "&7Try using /xtransfer transferuuid with direct UUIDs"
invalid-uuid: "&cInvalid UUID format! Use: /xtransfer transferuuid <old-uuid> <new-uuid>"
uuid-example: "&7Example: 12345678-1234-1234-1234-123456789012"
source-data-missing: "&cSource player {name} ({uuid}) has no data file!"
transfer-from: "&7From: &f{name} &7({uuid})"
transfer-to: "&7To: &f{name} &7({uuid})"
transfer-file: "&7File: &f{file}"
backup-created: "&7Backed up existing file to: &f{file}"
transfer-success: "&a✓ Successfully transferred player data!"
transfer-stats: "&7✓ Transferred stats file"
transfer-advancements: "&7✓ Transferred advancements file"
transfer-error: "&cError during transfer: {error}"
folder-not-found: "&cPlayer data folder not found: {path}"
source-not-found: "&cSource file not found: {file}"
source-location: "&7Looked in: {path}"
player-online-warning: "&e⚠ Warning: Player {player} is online! Data may be overwritten when they log out."
player-kicked: "&e✓ Player {player} has been kicked for data transfer."
kick-message: "&cYour data is being transferred. Please rejoin in a few seconds."
no-files: "&eNo player data files found"
list-header: "&6=== Player Data Files ({count}) ==="
list-more: "&7... and {count} more"
list-entry: "&7{name} &8- {uuid}"
list-unknown: "&8{uuid} &7(unknown)"
files-header: "&6=== Files for {player} ==="
file-playerdata: "&7Player Data: {status}{size}"
file-stats: "&7Stats: {status}"
file-advancements: "&7Advancements: {status}"
# Other language...
Последние версии
Все версии →alpha
Improves
1.3-alpha13 мая 2026 г.212Minecraft: 1.8, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.8.5, 1.8.6, 1.8.7, 1.8.8, 1.8.9, 1.9, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 1.10, 1.10.1, 1.10.2, 1.11, 1.11.1, 1.11.2, 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2bukkit, folia, paper, purpur, spigot
Что нового
## Added
- Transactional file migration using a temporary staging directory to ensure all-or-nothing data transfer
- Non-blocking retry mechanism using `ScheduledExecutorService` with configurable delay between attempts
- Automatic rollback of backup files when the final atomic move operation fails
- Staging directory cleanup on transfer failure to prevent leftover temporary files
- `FilePair` helper class to encapsulate source, temporary destination, final destination, and critical/optional flag for each migrated file
## Fixed
- Thread pool blocking caused by recursive `copyWithRetry` consuming worker threads during retry waits
- Data inconsistency when some files succeed and others fail during a single transfer operation (partial transfer no longer possible)
- Backup file not being created before the main data copy, risking loss of the target player's original data
## Changed
- `copyWithRetry` now uses `ScheduledExecutorService` for delayed retries instead of recursive calls on the main executor pool
- `copyFile` now performs a single copy attempt and returns immediately, with retry logic handled externally
- `transferPlayerData` and related methods replaced by `transferAllFiles`, `copyAllToTemp`, and `moveTempToTarget` to support transactional migration
- Backup creation and optional file transfers (stats, advancements) integrated into the unified transactional pipeline
- `ExecutorService` renamed to `executor` for clarity; new `scheduler` field added for delayed retry scheduling
## Removed
- Recursive retry logic (`copyWithRetry` calling itself with `thenCompose`) that blocked worker threads
- Separate `backupIfNeeded`, `transferMainData`, `transferExtraData`, and `transferFile` methods, consolidated into `transferAllFiles` and supporting methods
- Direct file overwrite approach that allowed partial transfer states
release
Fixes...
1.2-rls27 февр. 2026 г.98Minecraft: 1.8, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.8.5, 1.8.6, 1.8.7, 1.8.8, 1.8.9, 1.9, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 1.10, 1.10.1, 1.10.2, 1.11, 1.11.1, 1.11.2, 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11bukkit, folia, paper, purpur, spigot
Что нового
### 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()` and `loadNameToUUIDs()` into single `loadPlayerData()` 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 `transfer` and `transferuuid` logic 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 `null` could 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 `async` parameter 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
beta
Another optimization!
1.2-beta26 февр. 2026 г.24Minecraft: 1.8, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.8.5, 1.8.6, 1.8.7, 1.8.8, 1.8.9, 1.9, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 1.10, 1.10.1, 1.10.2, 1.11, 1.11.1, 1.11.2, 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11bukkit, folia, paper, purpur, spigot
Что нового
### 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.
alpha
Optimization
1.2-alpha26 февр. 2026 г.24Minecraft: 1.8, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.8.5, 1.8.6, 1.8.7, 1.8.8, 1.8.9, 1.9, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 1.10, 1.10.1, 1.10.2, 1.11, 1.11.1, 1.11.2, 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11bukkit, folia, paper, purpur, spigot
Что нового
### Changed
- More stable and safe action!
- The code is shorter than the old one.
- The plugin runs faster.
release
Folia!
1.1-rls25 февр. 2026 г.20Minecraft: 1.8, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.8.5, 1.8.6, 1.8.7, 1.8.8, 1.8.9, 1.9, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 1.10, 1.10.1, 1.10.2, 1.11, 1.11.1, 1.11.2, 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11bukkit, folia, paper, purpur, spigot
Что нового
### Added
- Folia supported!
### Changed
- Optimized the size of JAR.
beta
1.8 ~ 1.12 Supports!
1.1-beta25 февр. 2026 г.19Minecraft: 1.8, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.8.5, 1.8.6, 1.8.7, 1.8.8, 1.8.9, 1.9, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 1.10, 1.10.1, 1.10.2, 1.11, 1.11.1, 1.11.2, 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11bukkit, paper, purpur, spigot
Что нового
### Added
- Supports 1.8.x ~ 1.12.x now!
alpha
Huge update!
1.1-alpha25 февр. 2026 г.17Minecraft: 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11bukkit, paper, purpur, spigot
Что нового
### Added
- **Full configuration system** - Now with proper config.yml support
- **Auto-config fixing** - Missing config entries are automatically restored
- **Beautiful console logo** - ASCII art on startup (can be disabled in config)
- **Colored version display** - Alpha (red), Beta (gold), Release (green)
- **Multi-language support** - Messages fully customizable in config
- **Player name tab completion** - Tab completes online players and players with data files
- **Kick online players option** - Prevents data overwrite (configurable)
- **Asynchronous file operations** - No more server lag during transfers
- **Backup system** - Automatically creates .old files before overwriting
- **/xtransfer reload command** - Reload configuration without restart
### Changed
- **Version display format** - Now matches XGamemode style (XTransfer V1.1-alpha)
- **Command output** - All messages now from config file
- **UUID detection** - Better handling of premium/offline players
- **File copying** - Using NIO for better performance
### Fixed
- **NullPointerException in loadMessages()** - Messages map now properly initialized
- **Null version in onDisable()** - Added DISPLAY_VERSION for reliable shutdown
- **Config corruption** - Auto-fixes missing config values
- **Online player data overwrite** - Kicks player before transfer (optional)
release
The first version!
1.0-rls25 февр. 2026 г.28Minecraft: 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11bukkit, paper, purpur, spigot
Что нового
Plugin done!
This is just a demo so it doesn't have multi language, config file and other extra features yet.
I will do it when I'm free and I want to code.