Minecraft anticheat guide
Recording Global Aim Rotations for Reviewed ML Training
How to record aim rotations with FairPlay's global window command, what the raw files contain, which files to exclude, and how to review them before training.
Short answer: what global aim recording does
Global aim recording writes yaw and pitch changes from every online player, plus players who start rotating later, into one JSON file per player per session. An operator starts it with an explicit command. Per FairPlay engineering notes, the output is raw, reviewable data rather than labeled training samples, so review which players were legitimate before any conversion.
Start, stop, and check a recording
The three commands below control the recorder. Run them from the console or as a player who holds the required permission. The alias windows also works.
/fp ml aim window record GLOBAL
/fp ml aim window stop
/fp ml aim window statusKnow what the files contain
Files are written under the plugin data folder, in a per-player directory. The name starts with the UTC recording-start time, including milliseconds, and ends with a session prefix. A new session never overwrites an earlier recording from the same day.
Each file holds the rotation samples for one observed player. Players online when recording begins get a file even if they never rotated, and late joiners get a file once they rotate. The table lists the fields an admin is most likely to check.
| Field | Meaning |
|---|---|
| reviewStatus | Starts as UNREVIEWED. Change it only through your own review process. |
| player and uuid | The observed player's name and UUID. |
| rotations | Chronological yaw and pitch samples with a millisecond timestamp. |
| droppedRotations | Samples dropped for this player during the session. |
| globalQueueDropped | Samples dropped across the whole capture, reported in the completion summary. |
| stoppedAt | The time the recording stopped for this file. |
What is not recorded
The recorder stores rotations, timestamps, usernames, and UUIDs. It does not store IP addresses, chat messages, or world positions. That is narrower than a full movement log, but it is still personal data tied to a player account, so disclosure and retention still apply.
Long sessions can produce large files. Watch free disk space while a recording runs, and plan a deletion date for raw files once they have been reviewed and converted.
Decide which files you can use
A file that exists is not automatically usable. The file state and the drop counters decide whether it belongs in a training set. Use the table as your review gate before any import.
| File condition | Decision |
|---|---|
| .json.part extension | Do not use. The file is not finalized and is not ready for sharing. |
| Any dropped-rotation count above zero | Exclude from timing-sensitive training. Keep it for other analysis only if you note the gap. |
| Player not confirmed legitimate | Hold. Do not convert it, and do not treat the player's presence online as proof. |
| Finalized, complete, and approved by a reviewer | Candidate for conversion into normalized training windows. |
Review before anything reaches training
The raw files are chronological rotation samples. They are not the training database format, and they are not labeled. The operator decides which files represent confirmed legitimate players, then converts them. Do not assume that every online player was legitimate, and do not let captured data change live predictions without review.
Keep a written record of who approved each file and why. If a player later appeals, that record is the evidence you will need.
What we have not verified
The FairPlay engineering notes report unit tests for capture, late joins, stop and drain behavior, file naming, and invalid values. They also report that the full Maven build and integration tests were not verified in the packaging environment. Treat the recorder as runtime-evidence-pending until your own server builds and runs it.
Before relying on it, record a short staging session with two test accounts, stop it, and check that the files finalize, the names are unique, and the drop counters are zero. This page makes no claim about the cost of recording on your server. Measure that with your own profiler, for example the procedure in the spark timings article.
FAQ
Can I schedule global recording to run every evening?
FairPlay's notes say there is no default collection and that capture starts only on an explicit command. A scheduled start would be your own script, outside what the notes describe, so review it with your privacy policy first.
Why does a file still end in .json.part?
The file has not been finalized. Wait for the completion message, or check status, and do not copy or share the file until the extension changes.
Is this the same as the ML training database?
No. The recording is raw, unlabeled, and reviewable. Conversion into normalized training windows is a separate step that the operator performs after review.
Does recording change how aim checks decide?
The notes say captured data must not change live predictions without review. Recording and live detection are separate, so approve any model change through your own process.