Why Do You Need an Anti-Cheat System?
Cheating on Minecraft servers seriously damages the player experience. Cheats such as KillAura, Fly, Speed, Reach and X-Ray drive honest players off your server. An anti-cheat system detects these cheats automatically and acts on them.
- Prevents player loss — Cheaters scare honest players away
- Protects economic balance — Cheats like X-Ray and duping wreck the economy
- Keeps PvP fair — KillAura and Reach destroy PvP balance
- Improves server reputation — Well protected servers attract more players
- Reduces staff workload — An automatic system instead of manual cheat checks
Comparison of Popular Anti-Cheats
Four main anti-cheat solutions stand out in the Minecraft ecosystem. Each has its strengths and weaknesses:
| Feature | NoCheatPlus | Vulcan | Grim | Spartan |
|---|---|---|---|---|
| Price | Free | 20 USD | Free | 22 USD |
| Open Source | Yes | No | Yes | No |
| Version Support | 1.8 - 1.21+ | 1.7 - 1.21+ | 1.8 - 1.21+ | 1.8 - 1.21+ |
| KillAura Detection | Average | Very Good | Very Good | Good |
| Fly/Speed Detection | Good | Very Good | Very Good | Good |
| Timer Detection | Weak | Very Good | Very Good | Average |
| False Positives | Average | Low | Low | Average-High |
| Performance Impact | Low | Average | Low | Average |
| Configurability | High | High | Average | Average |
| Bedrock Support | No | No | Yes (Geyser) | No |
| Active Development | Slow | Active | Very Active | Active |
Installing Grim (GrimAC)
GrimAC is a modern, prediction-based anti-cheat. It simulates player movement server-side and detects deviations from the prediction.
Installing GrimAC
cp GrimAC-2.3.jar /opt/minecraft/plugins/
systemctl restart minecraftAfter the first start, the configuration files are created in the plugins/GrimAC/ folder.
# plugins/GrimAC/config.yml
prefix: "&8[&cGrim&8] "
alerts:
enable-verbose: true
verbose-format: "%player% failed %check% VL: %vl%"
checks:
simulation:
# Movement prediction - the most important check
threshold: 0.001
decay: 0.02
timer:
# Timer hack detection
decay: 0.01
ground-spoof:
enabled: true
vehicle:
enabled: trueInstalling and Configuring Vulcan
Vulcan is a premium anti-cheat based on packet analysis. Installation is simple, but reducing false positives requires detailed tuning.
Installing Vulcan
cp Vulcan-2.8.0.jar /opt/minecraft/plugins/
systemctl restart minecraft# plugins/Vulcan/config.yml - Key settings
settings:
prefix: "&8[&cVulcan&8] &7"
alert-permission: vulcan.alerts
verbose-permission: vulcan.verbose
bypass-permission: vulcan.bypass
max-ping: 1000
tick-rate: 20
punishments:
enabled: true
commands:
combat:
min-vl: 20
commands:
- "litebans:ban %player% 7d [Vulcan] Combat cheat detected"
movement:
min-vl: 15
commands:
- "litebans:ban %player% 7d [Vulcan] Movement cheat detected"
misc:
min-vl: 10
commands:
- "litebans:kick %player% [Vulcan] Suspicious activity"Reducing False Positives
A false positive is a legitimate player being flagged unfairly. It hurts the player experience. You can minimise the false positive rate with the following methods:
General Tuning Principles
- Apply graduated punishments: a warning on the first violation, a kick for repeats, a ban for persistent offenders
- Raise the VL (Violation Level) thresholds: low thresholds increase false positives
- Add ping-based exemptions: loosen the checks for players with 200ms+ ping
- Tune mechanics such as elytra and trident: new mechanics can trigger old checks
- Try it on a test environment: test before applying it to the production server
Vulcan False Positive Settings
# Vulcan checks.yml — checks that often produce false positives
checks:
aim:
A:
enabled: true
max-vl: 25 # Default 15, raise it to reduce FPs
B:
enabled: true
max-vl: 30
speed:
A:
enabled: true
max-vl: 20 # Raise for fast movement FPs
scaffold:
A:
enabled: true
max-vl: 15 # For players who bridgeBan System Integration (LiteBans)
To turn anti-cheat detections into automatic punishments, we recommend using a ban management plugin such as LiteBans.
Installing LiteBans
Download LiteBans and place it in the plugins/ folder. It requires a MySQL/MariaDB database:
# plugins/LiteBans/config.yml
sql:
driver: MySQL
address: 127.0.0.1:3306
database: litebans
username: litebans
password: 'strong-password-here'
prefix: litebans_Connecting the Anti-Cheat to LiteBans
You can use LiteBans commands inside Vulcan's punishment commands:
| Action | Command | Description |
|---|---|---|
| Temporary Ban | litebans:tempban %player% 7d [Anti-Cheat] Reason | 7 day ban |
| Permanent Ban | litebans:ban %player% [Anti-Cheat] Reason | Ban with no expiry |
| Kick | litebans:kick %player% [Anti-Cheat] Reason | Removes from the server |
| Mute | litebans:tempmute %player% 1h Spam | 1 hour mute |
| IP Ban | litebans:banip %player% [Anti-Cheat] Reason | IP-based ban |
Preventing Bypasses
Some cheaters will try to bypass the anti-cheat. You can take extra measures to make that harder:
- Do not run more than one anti-cheat — it causes conflicts and performance problems. One well configured AC is enough.
- If you use Geyser — prefer Grim for Bedrock players, it has Bedrock support.
- Add a packet limiter — use
PacketLimiteror a similar plugin to block forged packets. - Keep up with updates — always keep your anti-cheat on the latest version.
- Take player reports seriously — review player reports alongside the automatic system.
Blocking VPNs and Proxies
To stop banned players from coming back through a VPN, you can use a VPN/proxy detection plugin.
Anti-VPN Plugins
| Plugin | Price | API | Description |
|---|---|---|---|
| Anti-VPN (egg82) | Free | Multiple APIs | Open source, uses several VPN APIs |
| LiteBans (built-in) | Premium | Built-in | LiteBans already supports IP-based bans |
| IPQualityScore | Freemium | IPQualityScore | Advanced VPN/proxy/bot detection |
| AntiVPN Premium | 8 USD | Multiple | Easy setup, webhook support |
# Anti-VPN (egg82) config.yml
kick:
enabled: true
message: "VPN/Proxy usage is not allowed on our server."
sources:
order:
- iphub
- proxycheck
- ipqualityscore
iphub:
enabled: true
key: 'API-KEY-HERE'Performance and Monitoring
Anti-cheat plugins can affect server performance. Check their impact regularly:
Performance analysis with Spark/Timings
/spark profiler start
# wait 5 minutes
/spark profiler stopIn the Spark profiler report you can see how many ms per tick the anti-cheat plugin consumes. A healthy value is in the 1-3 ms/tick range. If it is higher, optimise the configuration.