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.