XTransfer

A tool that help you transfer players' data between names or UUIDs.

76

Quick challenge

How far can you run before the mobs catch you?

XTransfer

XTransfer Logo

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...

```

ADS