A lightweight, modular, and resource-friendly anti-cheat plugin for Spigot and Paper
KroshAntiCheat
KroshAntiCheat v1.1.6 — Full Feature List
Movement Checks
Speed — detects players moving faster than the allowed horizontal speed per tick. Threshold is configurable in config.yml.
Fly — detects players rising into the air without a valid reason. Checks vertical delta per tick against a configurable max-rise value.
NoFall — detects players who fall a significant distance without taking fall damage, a common exploit used by cheat clients.
Timer — detects players sending movement packets faster than the server tick rate, giving them a speed advantage without technically moving fast.
Combat Checks
KillAura — detects abnormal CPS (clicks per second) during combat. When enough preliminary flags are accumulated, triggers the Fake Entity verification system.
Fake Entity Verification — when KillAura is suspected, an invisible silent ArmorStand is spawned directly behind the player where they cannot see it. A legitimate player never hits it. A KillAura client automatically targets it and gets confirmed with a high-weight flag labeled "Fake-Entity" in alerts.
AutoClicker — detects inhuman clicking speed independent of KillAura, focused on raw attack packet rate.
Reach — detects players hitting entities from beyond the allowed distance. Uses a ping-compensated formula based on the player's real server-side ping (from keep-alive packets, not client-reported). Also keeps a 4-tick position history for both attacker and target to backtrack and eliminate false positives caused by latency. Stationary targets are handled correctly.
World Checks
Scaffold — detects players placing blocks too rapidly beneath themselves, a common bridging cheat behavior.
InventoryMove — detects players moving horizontally while a container screen (chest, furnace, anvil, etc.) is open. Legitimate clients freeze movement input when a GUI is open. Knockback and explosion movement are ignored to prevent false positives.
Packet Layer (Pre-Server Core)
All checks above run at the Bukkit level after the server processes packets. The packet layer runs on the Netty I/O thread before the server core ever sees the packet.
PacketTimer — counts raw movement packets per second at the Netty level. Catches clients that flood packets to gain speed without Bukkit ever seeing the surplus.
PacketValidator — validates packet field values before the server processes them. Detects NaN or Infinity in coordinates, coordinates beyond world boundaries, and abnormally rapid attack packets at the raw level.
Violation System
- Every check has its own configurable violation threshold and action (WARN / KICK / BAN)
- Violations decay every 30 seconds to prevent unfair accumulation from minor lag spikes
- High-confidence detections (like Fake Entity hits) add weighted violations instead of just +1
- Alerts show the check name, player name, current VL, and an optional tag like "Fake-Entity" or "PacketLayer"
Commands
| Command | Description |
|---|---|
/kac version |
shows plugin version and status |
/kac reload |
reloads config.yml without restart |
/kac check <player> |
shows all current violations for a player |
/kac checks |
lists all registered checks with category and enabled status |
/kac alerts |
toggles alert messages on/off for the sender |
/kacalerts |
shortcut to toggle alerts |
Permissions
| Permission | Default | Description |
|---|---|---|
kac.admin |
op | full access to all commands |
kac.alerts |
op | receive violation alerts |
kac.bypass |
false | bypass all checks |
Compatibility
- Paper 1.19.x — 1.20.4
- Java 17 or higher
- Not compatible with Paper 1.20.5+ (requires reflection update for Mojang mappings)