Check Catalog
Every check has a stable ID, a fixed evidence class (how strong its proof is: ANOMALY <
HEURISTIC < PROTOCOL_INVALID < SERVER_IMPOSSIBLE), and a default state. Experimental checks
are always alert-only and disabled by default — enabling one in production is a deliberate opt-in,
not a recommendation.
Economy and inventory — 6 checks, all enabled
| Check |
Evidence class |
Purpose |
economy.item_gain_rate.a |
ANOMALY |
Soft per-material gain-rate anomaly (notify only) |
economy.item_gain_rate.b |
HEURISTIC |
Hard per-material gain-rate ceiling |
inventory.reconciliation.a |
HEURISTIC |
Unexplained inventory balance delta after settlement |
inventory.illegal_stack.a |
SERVER_IMPOSSIBLE |
Stack size exceeding what the item allows |
inventory.illegal_item.a |
SERVER_IMPOSSIBLE |
Denylisted material (command blocks, barriers, etc.) in a player's inventory |
inventory.transaction_burst.a |
HEURISTIC |
Abnormal inventory-transaction rate |
Movement — 8 checks (4 enabled, 4 experimental)
| Check |
Evidence class |
Default |
Purpose |
movement.speed.a |
ANOMALY |
enabled |
Excess horizontal speed beyond a mechanics-aware envelope |
movement.flight.a |
HEURISTIC |
enabled |
Sustained unsupported airborne movement |
movement.nofall.a |
HEURISTIC |
enabled |
Fall distance/damage sequence inconsistency |
movement.timer.a |
HEURISTIC |
enabled¹ |
Movement packet rate inconsistent with server time |
movement.step.a |
ANOMALY |
experimental |
Invalid instant upward step |
movement.phase.a |
SERVER_IMPOSSIBLE |
experimental |
Movement through solid collision |
movement.waterwalk.a |
ANOMALY |
experimental |
Invalid sustained support over fluid |
movement.elytra.a |
ANOMALY |
experimental |
Impossible elytra acceleration |
Combat — 9 checks (4 enabled, 5 experimental)
Player-vs-player only — see Known Limitations.
| Check |
Evidence class |
Default |
Purpose |
combat.reach.a |
ANOMALY |
enabled |
Attack distance beyond a latency-compensated envelope, measured to the closest point on the target's real hitbox |
combat.attack_rate.a |
HEURISTIC |
enabled |
Sustained attack rate beyond a conservative ceiling |
combat.multitarget.a |
HEURISTIC |
enabled |
Two distinct targets hit from opposite directions within a short interval |
combat.bad_order.a |
PROTOCOL_INVALID |
enabled |
Attack landed with no preceding arm-swing animation |
combat.rotation.a |
HEURISTIC |
experimental |
Repeated instant snap-onto-target rotation |
combat.autoclicker.a |
HEURISTIC |
experimental |
Unusually regular click-timing statistics |
combat.velocity.a |
ANOMALY |
experimental |
Horizontal movement far below the server's own applied knockback ("anti-knockback"/no-KB) |
combat.totem_swap.a |
ANOMALY |
experimental |
Totem re-equipped into the offhand implausibly soon after the previous one popped ("auto-totem" macro) |
combat.line_of_sight.a |
ANOMALY |
experimental |
Attack landed with no clear line of sight to the target (hit through a wall) |
World and interaction — 8 checks (5 enabled, 3 experimental)
| Check |
Evidence class |
Default |
Purpose |
world.fastbreak.a |
SERVER_IMPOSSIBLE |
enabled |
Block broken faster than the server's own computed minimum |
world.nuker.a |
HEURISTIC |
enabled |
Sustained multi-block break rate |
world.fastplace.a |
HEURISTIC |
enabled |
Sustained block-placement rate |
world.interaction_reach.a |
ANOMALY |
enabled |
Block break beyond a conservative reach envelope |
world.impossible_action.a |
SERVER_IMPOSSIBLE |
enabled |
Block placement beyond a hard, non-latency-adjustable ceiling |
world.scaffold.a |
HEURISTIC |
experimental |
Bridging while looking straight down and moving |
world.pearl_clip.a |
ANOMALY |
experimental |
Ender pearl teleport left the player embedded in solid block geometry ("wall clip" glitch) |
world.tnt_prime_rate.a |
HEURISTIC |
experimental |
Implausible rate of directly player-triggered TNT priming (server-load protection, not a cheat signature - cannons are legitimate) |
Packet/protocol — 4 checks (3 enabled, 1 experimental)
| Check |
Evidence class |
Default |
Purpose |
packet.rate.a |
HEURISTIC |
enabled¹ |
Combat/interaction packet flood |
packet.sequence.a |
PROTOCOL_INVALID |
enabled¹ |
Attack packet targeting an entity ID the server never disclosed |
packet.payload.a |
SERVER_IMPOSSIBLE |
enabled |
NaN/infinite movement coordinates (the one check with a real, working cancel) |
packet.inventory_state.a |
HEURISTIC |
experimental |
Inventory click Bukkit itself cannot classify |
¹ Requires the optional PacketEvents plugin (see
Getting Started); registers but stays inert with no error if
it's absent.