Minecraft anticheat guide

Writing an Anticheat Requirements Document

A requirements document template for choosing a Minecraft anticheat: server profile, Must and Should requirements, acceptance tests, sign-off, and a change log.

Short answer

An anticheat requirements document lists what your server must get from an anticheat, what it should have, and how you will test each item. Give every requirement an ID, a priority, an owner, and an acceptance test you can run on staging. Judge each option against this document, not against its feature list. An option that fails a Must requirement is out, whatever else it offers.

Start with the server profile

Write the profile in plain terms. A requirement such as works for our players cannot be tested. A requirement that names your Minecraft versions, your server software, and your proxy can be.

Write each requirement as a testable statement

Each row has one requirement and one test. Keep the test concrete enough that two staff members would reach the same result.

Requirement format with examples
IDRequirementPriorityAcceptance test
REQ-01Loads on our server software and version rangeMustStaging starts with no plugin errors on each listed version
REQ-02Does not punish our scripted Bedrock routeMustBedrock test account runs the route three times without a punishment
REQ-03Sends alerts to the staff channelMustA test alert appears in the channel within the time you set
REQ-04Reloads configuration without a restartShouldChange one value, reload, and confirm the change in the log
REQ-05Exports alert history for appealsShouldExport one test record and open it

Set priorities before you read vendor pages

Priorities set after reading vendor pages tend to follow the marketing. Setting them first keeps the decision tied to your server.

Use this document skeleton

Keep the document short. The skeleton below fits on two pages once filled in. Replace each bracketed field with your own value.

Requirements document skeleton
Title: Anticheat requirements, [server name], version [n], date [YYYY-MM-DD]
Owner: [name, role]
Approvers: [names]
1. Server profile: [summary, versions, proxy, plugin list]
2. Requirements:
   REQ-01 | [statement] | Must | [acceptance test] | Owner: [name]
   REQ-02 | [statement] | Should | [acceptance test] | Owner: [name]
3. Scoring: [scale and weights]
4. Out of scope: [items]
5. Change log: [date, change, reason, approver]

Write acceptance tests you can run

An acceptance test names the input, the place it runs, and the observable result. Avoid results that depend on opinion, such as the plugin feels fine.

Make each test repeatable

A test you cannot repeat tells you nothing when the next update arrives. Store the script, the server copy, and the expected output together, so the same check runs again after each change.

Review and sign off

Sign-off is a short review, not a formality. The approver should be able to point to the test record behind each Must requirement.

What a requirements document cannot do

A requirements document does not test detection quality. It makes your test plan explicit. Keep any claim about detection rates out of the document unless you have your own staging data. FairPlay can be scored like any other option. Its checks are listed in the FairPlay reference, and its claims need the same acceptance tests as everyone else's.

FAQ

How long should the requirements document be?

Two pages is a good target. If you have more than about twenty requirements, many of them are probably wishes rather than requirements. Move the wishes to a Could list.

Who should approve it?

The server owner, the lead staff member who reviews alerts, and whoever maintains the server software. One approver is weaker, because that person may not see the staff workload.

Should we share the document with vendors?

Yes. Ask each vendor to respond to each requirement in writing. Record any vendor that answers with general marketing text instead of a clear response to each requirement.

What changes after we sign it?

Version the document. Each change needs a date, a reason, and an approver, so a later decision can be traced to the requirement it relied on.

Related sources and official pages

Browse all anticheat guides