Minecraft anticheat guide

Choosing a Java Runtime for a Minecraft Anticheat Server

How to pick the Java runtime for a Minecraft server with an anticheat: find each documented minimum, match the start script, and verify before going live.

Which Java runtime should an anticheat server use?

Use the Java runtime that your server software documents for the Minecraft version you run. Then check the anticheat and PacketEvents release notes for their own minimums, and follow the higher one. Finally, confirm that your start script or panel template launches that exact runtime, because the Java on your PATH is not always the one a service uses.

Find each documented minimum

Each component may publish its own requirement. Read the current documentation for each one and write the value down with its source link and the date you checked. Do not copy a minimum from an old forum thread.

Check which Java the start script actually runs

Run these commands as the same user that starts the server. Compare their output with the runtime path in your start script, service file, or panel template. A mismatch here is one of the most common reasons a correct install behaves like a broken one.

Run as the server's service user. Compare the output with the runtime path in your start script or panel template.
java -version
which java
readlink -f "$(which java)"

How do the components compare?

Keep one row per component. The point of the table is to find the strictest requirement and the source you used to set it.

Java requirement record for one server
ComponentWhere to find the requirementWhat to record
Server softwareOfficial documentation for the build you runBuild name, version, and check date
AnticheatRelease notes for the exact installed buildBuild version and minimum runtime stated
PacketEventsOfficial release page for the expected versionVersion string and minimum runtime stated
Other pluginsEach plugin's documentationPlugin name, version, and any runtime note
Start script or host imageYour panel template or service fileRuntime path and output of java -version

Does a Minecraft upgrade change the runtime requirement?

It can. A new Minecraft version can change the server software's documented runtime, and a plugin update can raise its own minimum. Treat the runtime as part of the upgrade, not a separate step. Check the new requirement before you replace any jar, and test the new runtime in staging with the full plugin set.

For version change planning, see the staging checklist for Minecraft version updates.

What does a runtime mismatch look like in the log?

A plugin built for a newer runtime can fail to load on an older one with a class-version error. A runtime that does not match the start script can also leave you with a server that behaves differently after a restart. Save the log first, then compare the runtime path in the log's startup lines with the path you expected.

How do you change the runtime safely?

Change one thing at a time. Record the current runtime, make the change on a staging copy, start the server, and check the startup log. Only after the staging run is clean should you change production, and keep the old runtime path so you can roll back in one edit.

Who owns the runtime decision?

One person should own the runtime choice and its record, even on a team. When an anticheat, a plugin, and the host each have a separate runtime setting, the most recent change can silently win. Name the owner in the change log and require that owner to sign off on any runtime change, including changes made by a host.

FAQ

Can a newer Java run an older server?

Often, but the server software's documentation decides what is supported. Test the newer runtime on staging with your full plugin set. Do not assume every plugin accepts it.

Why does my server start over SSH but not from the panel?

The panel usually launches a different runtime path or a container image with its own Java. Compare the output of java -version in both places, then point the template at the runtime you verified.

Is the newest Java always the right choice for an anticheat?

No. Choose the version that the server software and each plugin document. A newer runtime that is not in a plugin's tested list is a risk you should test before you adopt it.

What should go in the change log for a runtime change?

The runtime vendor, the version string from java -version, the runtime path in the start script, and the date you tested it on staging.

Related sources and official pages

Browse all anticheat guides