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.
| ID | Requirement | Priority | Acceptance test |
|---|---|---|---|
| REQ-01 | Loads on our server software and version range | Must | Staging starts with no plugin errors on each listed version |
| REQ-02 | Does not punish our scripted Bedrock route | Must | Bedrock test account runs the route three times without a punishment |
| REQ-03 | Sends alerts to the staff channel | Must | A test alert appears in the channel within the time you set |
| REQ-04 | Reloads configuration without a restart | Should | Change one value, reload, and confirm the change in the log |
| REQ-05 | Exports alert history for appeals | Should | Export 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.
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.