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.

Global aim window commands
/fp ml aim window record GLOBAL
/fp ml aim window stop
/fp ml aim window status

Know 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.

Main fields in a global aim recording file
FieldMeaning
reviewStatusStarts as UNREVIEWED. Change it only through your own review process.
player and uuidThe observed player's name and UUID.
rotationsChronological yaw and pitch samples with a millisecond timestamp.
droppedRotationsSamples dropped for this player during the session.
globalQueueDroppedSamples dropped across the whole capture, reported in the completion summary.
stoppedAtThe 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.

Review gate for recorded files
File conditionDecision
.json.part extensionDo not use. The file is not finalized and is not ready for sharing.
Any dropped-rotation count above zeroExclude from timing-sensitive training. Keep it for other analysis only if you note the gap.
Player not confirmed legitimateHold. Do not convert it, and do not treat the player's presence online as proof.
Finalized, complete, and approved by a reviewerCandidate 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.

Related sources and official pages

Browse all anticheat guides