Minecraft anticheat guide

Hitbox False Positives From Combat Packet History

Why FairPlay's reach and occlusion checks can disagree on attacker position, and how a frozen attack snapshot fixes it without stricter validation.

What caused the hitbox false positives?

Per FairPlay engineering notes dated 2026-10-19, some attacks were judged against the wrong attacker position. Prior rotations were dropped too early, yaw and position came from separate lookups, and reach re-sampled movement after the attack arrived. The reported false positive during rapid up and down aiming was not reproduced on a deployed server. The fix keeps one attack-time snapshot and only allows corrections that pass more attacks.

The notes describe the earlier false fails as a missing-compensation symptom rather than proof that a block intersection was wrong.

Why did the attacker position disagree?

How does the fix avoid stricter validation?

The fix only adds passes. Reach still evaluates its legacy state first, and a legacy pass stays a pass. Only a legacy fail triggers a second evaluation against the frozen attack pose. If that second evaluation confirms a genuine pass, the final result becomes a pass. Otherwise the original fail stands.

The reach distance limit and target boxes were not raised. Occlusion takes position and rotation from the same movement event, and never mixes a position from one packet with a yaw from another. Unknown or future events do not produce a clear.

How the frozen attack snapshot changes results. Only pass outcomes can change.
ScenarioResult beforeResult after
Legacy reach pass, frozen pose failPASSPASS, unchanged
Legacy reach fail, frozen pose passFAILPASS
Legacy reach fail, frozen pose failFAILFAIL, unchanged
Both rays cross a known cobweb before the targetFAILFAIL, no geometry change
Prior event was not a rotationNo prior directionNo direction invented

What does the regression coverage check?

The regression set covers boundary timing on both sides of the prior-rotation window, a missing resolver neighbor where the exact movement still exists in history, and a resolver that returns a different time than the rotation event. In that last case, the notes require using the rotation event's own position.

Other cases check that a movement packet arriving after the attack does not change the frozen candidate, and that a legacy clear remains a clear. The tests use ordered movement history and real evaluator functions. They do not replay raw packets, and the notes say so directly.

How does this compare with GrimAC's approach?

Per the FairPlay notes' reading of GrimAC's public source, Grim's reach check separates a fast packet-time gate from a later look-aware evaluation, uses client-compensated target boxes, and reasons about packet order. FairPlay adopted the data ownership and ordering principles. It did not adopt an unbounded rewind, expanded hitboxes, or copied code.

This is an architectural difference, not a ranking. Both designs are meant to pass honest hits and fail confirmed violations. The same trade-off applies to any combat check: a rewind is an estimate of where a target was, so it should be trusted to pass a hit, not to convict a player.

What evidence is still missing?

FAQ

Does this fix lag or high ping false positives?

Not directly. The notes state that last-movement age is a wall-clock value, not round-trip time. The fix is about attacker position consistency within one attack snapshot, so a high-ping report should be checked against its own debug data.

Does this make FairPlay more lenient?

Only for the paths described here. A legacy reach fail can become a pass when the frozen pose confirms one. The reach distance limit, target expansion, and cobweb geometry did not change, and confirmed web blocking still fails.

Why was the false positive not reproduced?

The notes say it was not reproduced on a deployed patched server. Earlier captures showed a current cobweb ray crossing a known web while only one attacker pose was recorded, which the notes read as missing compensation rather than a wrong intersection.

What should I send if a legitimate player is flagged this way?

Send the attack time, the nearby movement timing and flags, the number of attacker poses used, and the reach distances from debug output. Leave out full packet payloads and personal data, as the notes advise.

Related sources and official pages

Browse all anticheat guides