Minecraft server anti-cheat
A comparison of anti-cheat systems: Vulcan, Grim, Matrix and Spartan. How to pick, install and configure protection against cheaters.
Types of cheats in Minecraft
Before you pick an anti-cheat, it helps to know what you're fighting. Cheats (hacks) in Minecraft fall into a few categories:
Movement cheats
- Fly: flying without an elytra or creative mode
- Speed: moving faster than the game allows
- NoFall: taking no fall damage
- Spider: climbing walls
- Step: walking up blocks without jumping
- Jesus/WaterWalk: walking on water
- NoSlowdown: no slowdown in cobwebs or on soul sand
Combat cheats
- KillAura: automatically attacking players in range
- Reach: a longer attack range
- AutoClicker: automatic clicking at an unnaturally high rate
- Velocity/AntiKnockback: reduced or zero knockback
- Criticals: every hit is a critical hit
- AimBot: automatically aiming at the head or body
Other cheats
- X-Ray: seeing ores and blocks through walls
- Nuker: instantly mining many blocks
- Scaffold: automatically placing blocks under your feet
- ChestStealer: emptying chests instantly
- FreeCam: a free camera detached from the character
No anti-cheat catches 100% of cheats. X-Ray is especially hard to detect on the server side. The best fix is Paper Anti-XRAY (built into Paper), which swaps ores you can't see for stone on the server side.
How does anti-cheat work?
An anti-cheat analyzes the network packets the client sends and compares them with the behavior it expects. If a player moves faster than the game allows, hits from a longer range or takes no fall damage, the anti-cheat counts violations.
Every violation raises the player's VL (Violation Level) counter. Once the VL crosses a threshold, the anti-cheat takes action:
| VL level | Typical action | Description |
|---|---|---|
| Low (1-10) | Logging | Written to the log, admins notified |
| Medium (10-30) | Setback | The player is teleported back to their previous position |
| High (30-50) | Kick | The player is removed from the server |
| Very high (50+) | Ban | A temporary or permanent ban |
The admin configures the VL thresholds and actions. Thresholds that are too aggressive cause false positives (wrongly flagged players), and thresholds that are too lenient let cheaters through.
Anti-cheat comparison
| Feature | Vulcan | Grim | Matrix | Spartan |
|---|---|---|---|---|
| Price | ~20 USD | Free (open-source) | ~15 USD | ~25 USD |
| Movement detection | Excellent | Excellent | Good | Good |
| Combat detection | Excellent | Very good | Good | Good |
| False positives | Few | Few | Medium | Medium |
| CPU load | Low | Low to medium | Low | Medium |
| Updates | Frequent | Frequent (open-source) | Regular | Less frequent |
| Documentation | Very good | Good (GitHub wiki) | Good | Basic |
| 1.21+ support | Yes | Yes | Yes | Yes |
Recommendation: Vulcan is the best paid anti-cheat, and Grim is the best free one. If the budget allows, go with Vulcan. If not, go with Grim. Some servers run both at once. That's not recommended because of potential conflicts, but it is possible.
Vulcan
Vulcan is a paid anti-cheat available on SpigotMC. Many large servers use it for its excellent detection and low false positives.
Key features
- 100+ checks: detects fly, speed, reach, killaura, velocity, scaffold, timer and many more
- Setback system: instead of kicking, it moves the player back to their previous position
- Admin alerts: chat notifications about suspicious players
- Logs: a full record of violations in a file
- LiteBans integration: automatic bans through LiteBans
- Low CPU usage: optimized for large servers
Installation: download the JAR file from SpigotMC, put it in plugins/ and restart the server. Vulcan works out of the box with the default configuration, but you should adjust the thresholds to fit your server.
Grim AntiCheat
Grim is a free, open-source anti-cheat available on GitHub. It takes an unusual approach: it predicts the player's movement on the server side and compares it with what it gets from the client.
Key features
- Prediction engine: simulates player physics on the server and compares the result with the client's data
- Latency tolerance: compensates for network lag, which cuts false positives at high ping
- Open-source: the source code is public, so you can audit and modify it
- Active community: frequent updates from the community
- Setback system: moves the player back instead of kicking
Installation:
# Download the latest build from GitHub Releases
# Put the .jar file in plugins/
# Restart the server
# Configuration is in plugins/GrimAC/config.yml Grim requires PacketEvents (a library for intercepting network packets). Install it before Grim.
Matrix AntiCheat
Matrix is a paid anti-cheat from the middle of the price range. It offers solid detection and built-in tools for analyzing suspicious players.
Key features
- Built-in violation database: an alert history for every player
- The /matrix verbose command: shows violations in real time
- Configurable thresholds: easy to adjust the sensitivity
- Bedrock support: works with Geyser (the Java-Bedrock bridge)
Matrix is a good choice for servers that need a solid anti-cheat at an affordable price, with support for Bedrock players.
False positives
A false positive (a false alarm) is when the anti-cheat wrongly flags a legit player as a cheater. The most common causes:
- High ping: players with network lag can trigger movement checks
- Map features: slime block trampolines, elytra launchers, ender pearl stasis chambers
- Plugins: plugins that change movement (MCMMO, Jobs with speed boosts, Elytras+)
- Client version: players on older versions (through ViaVersion) may behave differently
- Trident Riptide: fast movement with a trident can trigger speed or fly checks
How to minimize false positives
- Start with lenient thresholds: use the default configuration and watch the alerts for a week
- Monitor alerts: use the
/vulcan alertsor/grim alertscommand - Disable problem checks: if a check produces a lot of false positives, turn it off or raise its threshold
- Test with different client versions: make sure players on 1.20 and 1.21 don't trigger alerts
- Don't automate bans right away: ban by hand for the first few weeks, then switch to automatic bans
Configuration and tuning
Recommended rollout strategy
- Week 1: Install the anti-cheat with the default configuration. Action: logging and alerts only (no kicks or bans)
- Week 2: Analyze the logs. Disable the checks that produce false positives. Adjust the thresholds
- Week 3: Turn on setback and kick for the checks you've confirmed (fly, speed, reach)
- Week 4+: Turn on automatic bans for the most obvious cheats. Keep monitoring and adjusting
Paper Anti-XRAY configuration
Paper has built-in X-Ray protection. Edit config/paper-world-defaults.yml:
anticheat:
anti-xray:
enabled: true
engine-mode: 2
hidden-blocks:
- diamond_ore
- deepslate_diamond_ore
- gold_ore
- deepslate_gold_ore
- iron_ore
- deepslate_iron_ore
- emerald_ore
- deepslate_emerald_ore
- ancient_debris
- lapis_ore
- deepslate_lapis_ore
replacement-blocks:
- stone
- deepslate
- netherrack Engine mode 2 replaces hidden blocks with random ores, so an X-Ray user sees ores everywhere and can't tell the real ones from the fake ones. It costs more performance than mode 1, but it works much better.
Supporting plugins
| Plugin | Function |
|---|---|
| LiteBans | A ban system with anti-cheat integration (automatic bans) |
| AdvancedBan | A free alternative to LiteBans |
| CoreProtect | Action logging: you can check whether a player mined ores with suspicious accuracy |
| ViaVersion | Compatibility with many versions (important for anti-cheat) |
Summary
An anti-cheat is essential on any public Minecraft server. Pick Vulcan (paid, the best) or Grim (free, open-source), roll it out gradually and check the alerts regularly. Add Paper Anti-XRAY and a ban system on top.
Related guides:
- Server protection - firewall, DDoS, security
- Server plugins - the essential plugins
- Minigame server - anti-cheat is key on PvP servers
- Player management - ranks and moderation
- Optimization - performance with an anti-cheat
- Lag diagnostics - if the anti-cheat overloads the server