Guidefor server owners3 min read
Letting many Minecraft versions join one server with ViaVersion
One server, clients from 1.8 to the newest release. How the translation layer works, which plugin covers which direction, and what it genuinely cannot do.
The problem it solves
A Minecraft server speaks one protocol. A client speaking a different one is refused before anything else happens, which is why a 1.21.4 player cannot join a 26.2 server and gets "Outdated client" for their trouble.
For a public server that is expensive. Every player who has not updated, and every player on a launcher pinned to an older version, simply bounces off.
The Via family sits inside the server and translates packets between protocols, so those players get in. They install nothing and mostly never know it is happening.
Which plugin does which direction
This is the part people get backwards, and installing the wrong one produces no improvement at all.
| Plugin | Direction | Use it when |
|---|---|---|
| ViaVersion | newer client → older server | Your server is behind your players |
| ViaBackwards | older client → newer server | Your server is ahead of your players |
| ViaRewind | very old clients (1.8, 1.7) | You want the classic PvP crowd |
The common case for a well-maintained server is all three: you run the newest version, and you want everyone from 1.8 upward to be able to join.
ViaBackwards and ViaRewind both depend on ViaVersion. Install ViaVersion first.
Installing
- Drop the jars into
plugins/. On a network, install them on the proxy, not on each backend, so translation happens once at the edge. - Restart. The defaults are sensible and most servers never change them.
- Check the console. Via reports which protocol ranges it now accepts, which is the fastest confirmation that it is working.
That is genuinely all of it for most servers.
What survives translation and what does not
Via translates the wire format. It cannot invent content that does not exist in the client.
Works well:
- Movement, physics, block placing and breaking
- Chat, commands, tab list, scoreboards
- Combat, damage, health and hunger
- Inventories and most container interfaces
- Almost every plugin, because plugins talk to the server rather than to the client
Degrades:
- New blocks and items. A block added after the client's version is shown as a substitute, because there is nothing else it could be shown as.
- New mobs. Same problem, more visible.
- New particles and sounds. Silently dropped.
- Custom interfaces built on newer features. Menus that rely on components an older client cannot render will look wrong.
- Resource packs. Pack format numbers changed over the years; one pack cannot satisfy every client version.
So: a survival or minigame server works well across a wide range. A server built around brand-new blocks disappoints old clients, and no configuration fixes that, because the information is not there to send.
Set expectations with players
The most common complaint is not that something is broken, it is that something looks wrong on an old client and the player assumes the server is at fault.
Two things prevent nearly all of it:
- Say which version is best. "Any version from 1.8 works, 26.2 recommended" on your server list entry and in your Discord.
- Say what old clients miss. One line is enough. Players are reasonable about it when they know in advance.
Deciding whether to bother
Worth it when:
- You run a public server and want the biggest reachable audience
- Your player base is spread across versions and always will be
- You want to update the server without waiting for everyone else
Not worth it when:
- It is a small private server where everyone can just update
- Your server is built around brand-new mechanics, in which case old clients get a broken experience rather than a limited one
- You are modded. Via handles vanilla protocols; a modded server has its own handshake and its own mod-set matching, which is a different problem
Checking before you install
Work out whether you have a problem at all first. The connection checker compares the protocol numbers of any two versions and tells you which direction the gap runs, which is what decides which of the three plugins you actually need.