Compatibility
Minecraft: Java Edition
Platforms
Links
Tags
Creators
Details
ApolloPlayerTransfer
Stop losing your Lunar Client players every time a proxy restarts.
On a modern Velocity network, when a proxy shuts down (restart, maintenance, scaling), players are automatically moved to another proxy without noticing a thing… but only recent clients.
Velocity's native transfer relies on a packet introduced in Minecraft 1.20.5. Every player on an older version, including a large share of Lunar Client users, does not understand that packet and is therefore simply disconnected instead of being moved.
ApolloPlayerTransfer fills that gap. It's not "yet another transfer plugin": it's the extension that brings transfers to Apollo-compatible legacy players, so a proxy restart no longer drops them from your server.
The problem, concretely
Picture a network with several Velocity proxies. One of them needs to restart or be replaced:
| Player type | Without this plugin | With this plugin |
|---|---|---|
| 1.20.5+ client (any client) | ✅ Transferred natively, no interruption | ✅ Transferred natively (unchanged) |
| Older client + Lunar Client (Apollo) | ❌ Disconnected | ✅ Transferred via Apollo, no reconnection |
| Older client without transfer support | ❌ Disconnected | ❌ Disconnected (cannot be transferred) |
In short: recent players keep being moved as usual, and your Lunar Client players on older versions now are too, instead of falling off the server.
A real-world scenario
You run a network with 3 Velocity proxies behind a single domain. One evening you push an update and proxy #2 needs to restart:
- Velocity instantly moves every 1.20.5+ player to proxies 1 and 3.
- ApolloPlayerTransfer takes over for your Lunar Client players on an older version and sends them to the exact same fallback proxy chosen for everyone else.
- Your players keep playing. Nobody had to reconnect, no queue, no "you were disconnected".
This is exactly the situation where, before, part of your community would drop on every restart. This plugin keeps them online.
Compatibility "will it work with my setup?"
Before installing anything on your proxy, here's what matters:
- ✅ Proxy: requires Velocity-CTD (it's CTD that determines the fallback proxy to use).
Plain Velocity is not supported, since the fallback selection relies on CTD's
[proxy-addresses]machinery. ApolloPlayerTransfer reinvents nothing: it reuses the proxy-selection logic already present in your configuration. - ✅ Client side: requires Lunar Client with Apollo installed on the proxy and the Transfer module enabled. Apollo players are the ones that can be transferred.
- ✅ Minecraft versions: designed for players below 1.20.5 (1.20.5+ are already handled natively, the plugin leaves them alone).
- ✅ Multi-proxy network: built for a network with several proxies (typically with Redis,
required for the
MOST_EMPTY/LEAST_EMPTYfallback filters). That's where the transfer really makes sense. - ✅ Java 21+, like a modern Velocity proxy already runs.
- ✅ Zero config to maintain: the plugin adds no config file. It reads your existing
velocity.toml. There's nothing new to tweak for it to do its job.
If your network looks like this, this plugin is made for your case.
Installation
- Drop both plugins into your proxy's
plugins/folder:- Apollo-Velocity : download
- ApolloPlayerTransfer (the
.jarfrom this page)
- Make sure the Transfer module is enabled in Apollo's configuration.
- Restart the proxy. That's it, the plugin uses the Velocity-CTD configuration you already have.
For a truly invisible transfer (optional but recommended)
These settings are not required for the transfer to work, but they make it fully transparent to the player:
- Skip the Lunar Client confirmation popup by adding a
mc_transfer_accept_fromTXTDNS record on your domain, to auto-accept transfers between your own servers. - Avoid the "already connected to a remote proxy!" message by enabling session takeover in
velocity.toml(kick-existing-players/kick-existing-players-check-ip).
The details of both settings, along with the plugin's internals, are documented on the project's GitHub page.
What the plugin CANNOT do
To avoid any surprises, let's be clear:
- It does not magically make every old client compatible. A player with neither the vanilla transfer (< 1.20.5) nor Apollo/Lunar Client cannot be transferred, they'll be disconnected just like today. That's a protocol limitation, not a plugin one.
- It only acts on a graceful proxy shutdown. On a hard crash or power loss, no code runs: nobody can be transferred in that case, whatever the plugin.
- It does not replace Velocity's native transfer: it complements it for the category of players it used to leave behind.
In short
If you run a multi-proxy Velocity network and part of your Lunar Client players drop on every proxy restart while the others are moved cleanly: that's exactly the problem this plugin solves.
Open-source plugin under the GNU GPL v3.0 license. Source code, technical documentation, and release tracking on GitHub.


