XTransfer
A tool that help you transfer players' data between names or UUIDs.
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
XTransfer

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
```markdown - /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
```markdown - xtransfer.manage - Allows using all XTransfer commands (default: op) ```
3 Config
```yaml
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...
```