Skip to main content
← All Guides
Server Admin · 7 min read

How to Transfer Player Inventories Between Servers

Move player inventories, economy balances, ranks, and plugin data between Minecraft servers without losing progress or breaking UUID links.

When You Need to Transfer Player Data

Transferring player data comes up in several scenarios: you are merging two servers into one, splitting a multi-world server into separate instances behind a Velocity or BungeeCord proxy, migrating to a new host with a different server setup, or replacing your survival world while preserving player progression. The challenge is that player data in Minecraft is spread across multiple systems, and moving one piece without the others creates mismatches that frustrate players.

Understanding Player Data Storage

Vanilla Player Files

Minecraft stores core player data in the world/playerdata/ folder. Each player has a file named with their UUID, like 550e8400-e29b-41d4-a716-446655440000.dat. This NBT file contains the player's inventory, ender chest contents, XP level, health, hunger, active potion effects, position, and selected hotbar slot. These are the files you need to move for basic inventory transfers.

Advancements are stored separately in world/advancements/UUID.json and statistics in world/stats/UUID.json. If you want a complete transfer of player progression, include all three locations.

Plugin Data

Most plugins store their own player data independently of vanilla files. EssentialsX keeps player homes, mail, nicknames, and last login in plugins/Essentials/userdata/UUID.yml. LuckPerms stores permissions and groups in its own database. Economy plugins store balances through Vault, backed by whatever storage the economy provider uses. Each plugin is its own island of data.

The UUID Problem

Everything in modern Minecraft is keyed by UUID, not by player name. This creates a critical constraint: both the source and destination servers must use the same online-mode setting. If the source server runs in online mode (authenticating with Mojang), players have their official Mojang UUID. If it runs in offline mode (cracked), the server generates a different UUID based on the player's name.

Copying player data files from an online-mode server to an offline-mode server (or vice versa) will not work because the UUIDs will not match. The server will not find the data for any player. If you must switch online-mode settings during the transfer, you need to rename every player data file to use the correct UUID format, and update every plugin database entry. This is painful and error-prone. Avoid it if possible.

Transferring Vanilla Player Data

For a basic inventory and progression transfer:

  1. Stop both servers.
  2. Copy the contents of world/playerdata/ from the source to the destination server's world folder.
  3. Copy world/advancements/ and world/stats/ if desired.
  4. Start the destination server.

Players will log in with their inventory, XP, and health intact. Their position will reset to the world spawn (since position coordinates are relative to the world, and a different world means different terrain), but everything in their inventory and ender chest will be there.

Transferring EssentialsX Data

Copy the entire plugins/Essentials/userdata/ folder to the destination server. This preserves homes, balances (if using EssentialsX Economy), nicknames, and other per-player data. Make sure both servers run the same version of EssentialsX, older versions may store data in different formats, and loading new-format files in an old version can cause data loss.

If you only want to transfer economy balances, you can edit the individual YAML files and copy just the money: field, though this is tedious for more than a handful of players.

Transferring LuckPerms Data

LuckPerms has built-in export and import commands that make this easy:

# On the source server:
/lp export luckperms-export.json

# Copy the file to the destination server's LuckPerms folder

# On the destination server:
/lp import luckperms-export.json

This exports all users, groups, tracks, and permissions, and imports them on the other end. If both servers point to the same MySQL database for LuckPerms, you do not need to do anything, the data is already shared. This is the recommended setup for networks running behind a proxy.

MySQL-Backed Plugins

If your plugins use MySQL or MariaDB for storage, transferring data is as simple as pointing the destination server's plugin configs at the same database. For servers on the same network, both can connect to the same MySQL instance. For servers on different hosts, either migrate the database (see the migration guide) or set up the destination plugin to connect to the source database remotely.

Plugins commonly using MySQL include LuckPerms, CoreProtect, Plan, CMI, and many economy providers. Check each plugin's config for database connection settings.

Multiverse-Inventories Considerations

If you use Multiverse-Inventories (which maintains separate inventories per world group), player data is stored in plugins/Multiverse-Inventories/ rather than the standard playerdata folder. When transferring to a new server, copy this entire plugin data directory and make sure the world group names on the destination server match the source. If you are restructuring your worlds during the move, you may need to edit the group configuration to map old world names to new ones.

NBT Editing Player Files

For targeted modifications, maybe you want to transfer inventories but clear positions, or merge items from two server profiles, you can use NBTExplorer to open the .dat files and manually edit them. Each player file is an NBT compound containing tags like Inventory, EnderItems, XpLevel, and Pos. You can copy specific tags from one file to another, delete tags you do not want to transfer, or modify values.

This is advanced and time-consuming for large player bases, but it gives you complete control over exactly what transfers and what does not.

Economy Balance Transfers

Economy data lives wherever your Vault economy provider stores it. EssentialsX Economy keeps balances in each player's YAML file under the money: key, so copying the userdata folder handles it. Other economy plugins like CMI Economy or a dedicated plugin may use MySQL, flatfile, or their own storage format. Check your economy plugin's documentation for export and import procedures. If both servers can connect to the same MySQL database, switching the economy storage to MySQL before migration simplifies the process, no files to copy, just a database connection string to update.

Limitations and Gotchas

  • Plugin version mismatches can break data, a playerdata file saved by CMI 9.5 may not load correctly in CMI 9.2.
  • Different world setups mean homes and warps may point to invalid locations. Review EssentialsX home data if your world names changed.
  • Conflicting data, if a player has data on both the source and destination, you need to decide which takes priority. There is no automatic merge.
  • Mod or datapack differences, if the source server runs mods or datapacks that add custom items and those are not present on the destination server, the items in player inventories will become invalid and usually turn into air. Always make sure both servers support the same item types before transferring.
  • Testing, always test with a few accounts before doing a mass transfer. Have players verify their data after migration.

Looking for reliable hosting? Astroworld Hosting runs NVMe SSD, Pterodactyl panel, daily backups, and DDoS protection. See features , plans from €6.39/mo.

Related Tools & Resources

🔧

Minecraft Tools

Calculators, generators & server tools

🧱

Item Database

Browse all Minecraft items, stats & recipes

⚒️

Crafting Recipes

Visual crafting guides for every recipe