Minecraft anticheat guide

ViaVersion and Anticheat Version Mismatch Explained

Why ViaVersion multi-version clients can trigger anticheat alerts, which symptoms to watch for, what to test on staging, and a safe plugin install order.

Why do multi-version clients cause anticheat problems?

A version mismatch happens when clients on a protocol other than the server's native one join through a translation layer such as ViaVersion. The anticheat then reads packets that were rewritten compared with what a native client sends. A check tuned for one protocol can flag legitimate play on another. Test every client version you allow before you open the server.

ViaVersion's project documentation describes how it translates protocols on the server. This article does not measure how any anticheat handles translated packets. Your staging results are the evidence that matters.

Which symptoms point to a version mismatch?

A mismatch rarely shows up as one clear error. Look for patterns tied to a single client version.

Why does the same action look different per version?

Translation can change timing, position updates, and the order of packets a client sends. A movement check that expects one sequence may read a translated sequence as an impossible jump or a delayed response. The mismatch is in the input the check receives, not in the player's behavior.

This is why a single test account on one client does not settle the question. Repeat the same action on each version and compare the packet-driven values the anticheat reports, such as latency, transaction state, and velocity context.

What should I test before I allow a version?

Build a small matrix and run the same actions on each version. Use clean accounts, and repeat each test at least once. Replace the version rows with the exact clients your players use.

Minimum staging matrix for each client version you allow.
Client versionJoinMovementCombatBlock and inventoryAlerts
Native server versionStay connected 10 minutesWalk, sprint, jump, fallLegit duel with a second accountPlace, break, open a chestZero alerts from clean play
Oldest translated version you allowStay connected 10 minutesWalk, sprint, jump, fallLegit duel with a second accountPlace, break, open a chestZero alerts from clean play
Newest translated version you allowStay connected 10 minutesWalk, sprint, jump, fallLegit duel with a second accountPlace, break, open a chestZero alerts from clean play

In what order should I install the plugins?

Install in a fixed order on a clean staging copy. Each startup error then points to one new plugin. This is a testing practice, not a rule from any vendor.

What should I do when one version floods alerts?

Do not disable every check to stop the noise. Find the check that fires on that version and decide whether to tune it in staging, move it to observation, or restrict that version.

Write down the decision and the evidence behind it. If a staff member later asks why a version is restricted, the matrix results and alert counts answer the question without guesswork.

FairPlay's per-check settings are described in its configuration reference. Change one check at a time, and record the before and after alert counts for each client version.

How do I update ViaVersion and the anticheat safely?

Treat a ViaVersion update as a change to the packets your anticheat reads. Rerun the full matrix after every update, even if the anticheat release did not change.

Keep the previous ViaVersion and anticheat jars. If the matrix fails after an update, you can roll back one plugin at a time and see which change introduced the alerts.

What have we not verified?

We have not tested any combination of ViaVersion release, anticheat release, and client version. This article makes no compatibility or accuracy claim for any of them, and it does not state which client versions FairPlay supports beyond what its own documentation says.

FAQ

Is a native client test enough to prove a multi-version setup is safe?

No. A native client test covers only the native path. Run each translated version separately, because each one produces its own packet pattern.

Why do alerts stop when I drop an old client version?

Often those players were the only source of the flag. Check whether the same check fires on a version you still support before deciding it was a false positive.

How often should I retest after a ViaVersion update?

Retest after each update you run in production. A translation change can alter the packets the anticheat reads, even when the anticheat itself did not change.

What if the anticheat fails to start after I add ViaVersion?

Remove the newest plugin, restart, and read the first error. Then compare the release notes for both plugins. The startup troubleshooting article covers the log steps.

Related sources and official pages

Browse all anticheat guides