Transferring Players Between Servers on a Network (Step by Step)
Transferring players between different Minecraft servers within a network is a fundamental aspect of creating complex and engaging multiplayer experiences. Whether building a vast minigame network, a survival world with dedicated creative or resource gathering realms, or offering seamless transitions between game modes, understanding player transfer mechanisms is crucial. This guide will explore the primary methods available, from robust proxy solutions to built-in vanilla commands, enabling efficient player movement across your Minecraft network.
![]()
Key Mechanics for Player Transfer
Several distinct approaches facilitate player movement between servers, each with its own advantages and operational requirements. The choice largely depends on the network’s scale and complexity, along with the desired level of player data persistence.
-
Proxy Servers (BungeeCord/Velocity)
Proxy servers form the core of large Minecraft networks, acting as an intermediary between a player’s client and multiple backend game servers. Players connect to the proxy, which then seamlessly redirects them to various backend servers based on commands or rules, eliminating the need for manual disconnection and reconnection.
- Proxies handle player authentication, verifying legitimate Minecraft accounts. This allows backend servers to run in `offline-mode` for enhanced security and performance, as they offload authentication responsibilities to the proxy.
- They also manage player data forwarding, transmitting crucial information like IP addresses, UUIDs, and skin data to backend servers.
- Forwarding methods differ: BungeeCord uses a legacy approach, while Velocity offers a more secure “modern forwarding” option, generally recommended for its enhanced security.
-
Vanilla
/transferCommand (Minecraft 1.20.5+)For simpler setups or specific use cases, Minecraft 1.20.5 and newer versions include a built-in
/transfercommand. This command provides a direct way to send a player from their current server to another by specifying its hostname and port, initiating a client-side action from the server.- Executing the
/transfercommand disconnects the player’s client and automatically reconnects them to the new specified address. - The destination server must have
accepts-transfers=truein itsserver.propertiesfile; otherwise, the transfer will fail. - This method does not require proxy software but significantly, it does not transfer player data like inventories or advancements across servers, treating each as a separate entity.
- Executing the
-
Player Data Transfer
A common challenge when moving players between servers is the persistence of their personal data. When moving between entirely separate servers (without a proxy handling data), player data such as inventories, advancements, and statistics generally does not transfer automatically, potentially leading to lost progress.
- To achieve comprehensive player data transfer, specific mods or manual file manipulation are often required.
- Mods like PlayerTransfer can export and import complete player data (inventories, ender chests, advancements, statistics, and some modded data) as ZIP archives, allowing robust profile transfer between servers.
Step-by-Step Process: Setting Up a Proxy Network (BungeeCord/Velocity)
Implementing a proxy network is the most comprehensive way to manage player transfers and create a unified network experience. This process involves setting up a central proxy server and configuring your backend game servers to work with it seamlessly.
-
Prepare Your Servers
Before beginning, ensure you have the necessary server infrastructure:
- One server dedicated to running the proxy software (BungeeCord or Velocity).
- Two or more backend servers (typically Spigot or Paper) that players will connect to through the proxy.
-
Install Proxy Software
Download the BungeeCord or Velocity JAR file and upload it to your designated proxy server. Set your server type to BungeeCord or Velocity and start it once to generate its configuration files.
-
Configure Your Proxy
The core of your network configuration lies within the proxy’s configuration file:
- Edit `config.yml` (BungeeCord) or `velocity.toml` (Velocity) to list all your backend servers with their IP addresses and ports.
- Set
ip_forwardtotrue(BungeeCord) orplayer-info-forwarding-modetomodern(Velocity) to ensure correct player data forwarding. - Define a default server that players will join upon first connecting to your network.
-
Configure Backend Servers
Each backend server requires specific settings for proper proxy integration:
- In each backend server’s
server.propertiesfile, setonline-mode=false. This is crucial as the proxy handles all player authentication. - Enable BungeeCord/Velocity forwarding in your backend server’s configuration (e.g., `spigot.yml` or `paper-global.yml`). If using Velocity modern forwarding, ensure the secret key matches the proxy’s configuration.
- If using Velocity modern forwarding, disable any BungeeCord forwarding settings on your backend servers to prevent conflicts.
- In each backend server’s
-
Restart and Test Your Network
After all configurations, restart all your servers (proxy first, then backend). Connect to the proxy server’s IP address in Minecraft. Once connected, use the command
/server <server_name>(as defined in your proxy config) to seamlessly switch between your connected backend servers.
Step-by-Step Process: Using the Vanilla /transfer Command (Minecraft 1.20.5+)
For simpler, non-proxy setups where players need to move between distinct servers, the built-in /transfer command offers a straightforward solution, though with limitations regarding player data.
-
Enable Transfers on Destination Server
On the destination server, open its
server.propertiesfile and setaccepts-transfers=true. Save the file and restart the server for the change to take effect. This setting explicitly allows the server to accept connections initiated by the/transfercommand. -
Execute the Command
From the server where the player currently resides, execute the
/transfercommand as an operator or from the server console. The basic syntax is/transfer <hostname> [<port>] [<players>].<hostname>: The IP address or hostname of the target server.[<port>]: Optional. The port number of the target server (defaults to 25565 if omitted).[<players>]: Optional. Specifies which player(s) to transfer (e.g., `@s` for self, `@a` for all).
-
Example Usage
To transfer all players to “play.example.com” on port 25565, you would use:
/transfer play.example.com 25565 @a.
Important Tips for Player Transfers
Regardless of the method chosen, keeping these best practices in mind will help ensure a smooth and secure player transfer experience.
- Always Create Backups: Before making any significant changes or migrations, always create full backups of your server files (worlds, plugins, configurations). Backups are your safety net.
-
Understand
online-modeSettings: For proxy networks, the proxy server should haveonline-mode=true, while all backend servers should haveonline-mode=false. This prevents re-authentication issues and enhances security. - Configure Your Firewall: Ensure your firewall allows traffic on the proxy’s main port and between the proxy and backend servers on their respective ports.
- Player Data Migration (Manual/Modded): If transferring player data (inventories, achievements) between servers without a proxy, you may need to manually move player data files (UUID.dat in the `playerdata` folder) or use specific mods like PlayerTransfer.
- Resource Allocation: Allocate sufficient RAM to your proxy server. A guideline is around 512MB for every 500 concurrent players, plus overhead for plugins. Insufficient RAM can lead to instability.
Common Mistakes to Avoid
Preventing these common pitfalls will save you significant troubleshooting time and improve the stability of your player transfer system.
-
Incorrect
online-modeSettings: Settingonline-mode=trueon backend servers behind a proxy is a frequent error, causing authentication issues. - Not Enabling IP Forwarding/Modern Forwarding: Failing to configure this on the proxy and backend servers means backend servers won’t receive correct player IP addresses or UUIDs, breaking plugins and causing conflicts.
-
Expecting Data Transfer with
/transfer: The vanilla/transfercommand moves players but does not transfer their inventory, advancements, or other player-specific data between servers. - Direct Connection to Backend Servers: Players should only connect to the proxy server’s IP when using a proxy network. Direct connections to backend server IPs bypass proxy security and can cause inconsistencies.
- Insufficient RAM for Proxy: Under-allocating RAM to your proxy server can lead to significant performance bottlenecks, causing lag and disconnections, especially with high player counts.
By carefully following these guidelines and understanding the underlying mechanics, you can effectively implement player transfer systems on your Minecraft network, creating a seamless and enjoyable experience for your players.