A packet-level simulation anticheat for Minecraft, built for accuracy under real-world latency.
Movement prediction, combat and world checks, latency-compensated — Bukkit/Paper/Folia and Fabric, 1.8 through 1.21+.
Important
CometAC is an open-source anticheat that runs on the packet layer. It fully exempts Geyser/Bedrock players to avoid false positives, and supports Minecraft 1.8 through 1.21+ on Bukkit/Paper/Folia, plus Fabric 1.16.1+.
| 🧭 Movement simulation A 1:1 replay of every legal player movement — walking, swimming, knockback, cobwebs, bubble columns, and vehicles. |
⚔️ Combat checks Reach, hitbox, aim, autoclicker, and triggerbot detection driven by reconstructed client state. |
🌐 Per-player world replica Each player gets a compressed world copy, so fake blocks and block glitching never cause false flags. |
| ⏱️ Latency compensation World changes, velocity, and flying state are queued until they actually reach the player. |
🧵 Async, netty-thread design Movement checks and most listeners run off the main thread and scale to hundreds of players. |
🎨 Configurable alerts Gradient prefix, verbose mode, proxy alert sharing, Discord webhooks, and 11 bundled languages. |
- Movement cheats — fly, speed, no-fall, timer, elytra, jesus, phase, and prediction offsets
- Combat cheats — killaura, reach, hitbox, autoclicker, triggerbot, aimbot, autoblock
- World cheats — scaffold, nuker, fast-place/break, baritone, ghost-block abuse
- Packet and protocol abuse — bad packets, crashers, post checks, packet-order violations
- One drop-in plugin with PacketEvents bundled (or use a standalone PacketEvents)
- A tunable violation and punishment pipeline (thresholds, decay, setback control)
- Verbose debugging, session history, and per-check enable/disable via
checks.yml - Folia support and proxy alert forwarding out of the box
flowchart TB
Packets["Incoming client packets"] --> Player["Per-player state + world replica"]
Player --> Predict["Movement prediction engine"]
Player --> Checks["Combat / world / packet checks"]
Predict --> Flag{"Violation?"}
Checks --> Flag
Flag -->|below threshold| Track["Track VL, decay over time"]
Flag -->|above setbackVL| Setback["Shared setback / rollback"]
Flag -->|above punish threshold| Punish["Alerts, webhooks, commands"]
Setback --> Board["Corrected player position"]
Punish --> Staff["Staff alerts + logs"]
| Component | Requirement |
|---|---|
| Server software | Spigot, Paper, Folia, or Fabric |
| Minecraft | 1.8–1.21+ (Bukkit) · 1.16.1+ (Fabric) |
| Runtime | Java 17 or newer |
| Packets | PacketEvents — bundled in the release, or install standalone |
- Download the latest CometAC release for your platform (Bukkit or Fabric).
- Drop the jar into your server's
plugins/folder (ormods/for Fabric). - If you run a proxy with Geyser, install Floodgate on the backend server where CometAC runs.
- Start the server once to generate the config, then restart or reload after editing.
- Give staff the
cometac.alertspermission and join to confirm alerts work.
Expected layout on Bukkit:
plugins/
`-- CometAC/
|-- config/ # language configs (en, de, es, ...)
|-- messages/ # alert + command strings (gradient prefix lives here)
|-- checks.yml # per-check enable/disable + thresholds
`-- punishments.yml # violation thresholds -> commands
The base command is /cometac (alias /comet). Every subcommand keeps the cometac.* permission structure.
| Command | Permission | Description |
|---|---|---|
/cometac alerts |
cometac.alerts |
Toggle violation alerts for yourself |
/cometac verbose |
cometac.verbose |
Toggle verbose (every-flag) output |
/cometac brands |
cometac.brand |
Toggle client-brand-on-join messages |
/cometac profile <player> |
cometac.profile |
Show a player's violation profile |
/cometac history |
cometac.list |
Browse stored violation sessions |
/cometac performance |
cometac.performance |
Show anticheat performance metrics |
/cometac reload |
cometac.reload |
Reload config, messages, and checks |
/cometac spectate <player> |
cometac.spectate |
Spectate a suspected player |
/cometac version |
cometac.version |
Show the running CometAC version |
Useful exemption nodes: cometac.exempt (all checks), cometac.exempt.<check> (one check), cometac.nosetback, and cometac.nomodifypacket.
The alert prefix is a dark-to-light blue CometAC gradient, defined in messages/<lang>.yml:
prefix: "<gradient:#1565c0:#5cd6ff><bold>CometAC</bold></gradient> &8»"
Prefixes and messages support both legacy & color codes and full MiniMessage tags, so you can re-theme the whole plugin from one file.
| Problem | Check this |
|---|---|
| Plugin does not load | Java 17+, PacketEvents present (or bundled build), correct platform jar |
| No alerts appear | You have cometac.alerts and alerts are toggled on (/cometac alerts) |
| Bedrock players get flagged | Confirm Floodgate is on the backend server so Geyser players are exempt |
| Everyone gets false setbacks | Review checks.yml thresholds; raise setbackvl for the noisy check |
| ViaVersion issues on a proxy | Install ViaVersion on the backend only, never on the proxy |
| Prefix shows raw tags | Make sure messages/<lang>.yml was regenerated after updating |
git clone [https://github.com/CometAC/CometAC-Java.git](https://github.com/CometAC/CometAC-Java.git)
cd CometAC-Java
./gradlew build # or: ./gradlew :bukkit:shadowJar
Built jars land in bukkit/build/libs/ and fabric/build/libs/ as cometac-<platform>-<version>.jar.
Distributed under the GPL-3.0 License. Copyright and license notices are preserved in the source tree; any redistributed or modified build must remain GPL-3.0 with source available.