Built-in leniency gates, per-check exemption permissions that heal live, the honest staff routine from alert to action, and what to do when a check still misfires.
The detectors were built around a single question: will legitimate players get falsely flagged? The answers are structural, not aspirational: real human flicks sit far below the ≥85° snap band KillAuraA watches, lag spikes arm bounded catch-up windows instead of producing flags, unreliable clients are skipped by the bow checks rather than measured, and the setback engine only acts on fresh flags so stale violations cannot rubber-band anyone. Recent release history is itself the proof — dedicated fixes eliminated NoFall, placement and aim-check false flags, and duplicate rotations that carry position changes are explicitly exempted.
Several situations that look suspicious to simpler anticheats are explicitly handled. This table is the map your staff need when reviewing an alert:
| Situation | How the plugin handles it |
|---|---|
| ViaVersion clients on the 1.8.8 target | ViaVersion, ViaBackwards and ViaRewind are supported with a dedicated compatibility layer — newer-protocol clients are judged against their own version's guarantees, not 1.8.8's |
| Lag spikes | Bounded catch-up windows arm instead of flags; setbacks respect a one-second flag-freshness window so stale violations never teleport a player |
| Human flick attacks | Fall below the ≥85° snap band — the rotation model knows what real hands do |
| Unreliable clients on bow shots | BowAimbot and FastBow skip unreliable clients instead of measuring noise |
| Ghost blocks after block updates | A ghost-block detector models the desync instead of punishing the player who sees the wrong world |
When a specific player legitimately needs a check relaxed — a rank perk, a mod, an event mechanic — the answer is a permission, not a config edit. Global nodes exist (anticheat.exempt, anticheat.nosetback, anticheat.nomodifypacket, and anticheat.disabled which switches checks off while keeping tracking), and each has a per-check variant: anticheat.exempt.<check> exempts exactly one check, named by its config name. Exemptions re-evaluate every 40 ticks, so granting or revoking a node takes effect within two seconds and heals without a reconnect — and a reload can never accidentally leave your online players permanently exempted.
/anticheat alerts — each staff member controls their own alert stream; enable-on-join and .silent variants exist for teams that want a quiet default./anticheat verbose — the raw per-check decision stream, with offsets, for exactly the situation you are watching./anticheat debug <player> for prediction-level debug output (the console can run its own debug toggle).violations/<uuid>.json decay linearly over each group's window, so a relog never launders history, and the auto-kick needs violations across ≥2 check families.Open a ticket on the official Discord server — https://discord.gg/kEPvGp8Yz7, available 24/7, and configuration guidance is part of the license. Name the check that fired (the alert hover tells you exactly which) and describe the situation; that turns the fix into a threshold conversation instead of a guessing game. This is the practical advantage of a 1:1 product: the person who wrote the check is the person who tunes it with you.
Warning:Resist tuning by deletion — disabling an entire check family to silence one noisy check trades real coverage for quiet. Tighten the specific check instead; verbose mode shows you exactly which one is firing.
Tip:Exemptions are permission-driven, so there is no whitelist file to maintain or leak — and because they re-evaluate live, revoking a node takes effect before the player's next flag, not their next login.