Setup
How to install Counter and set it up for your server.
Requirements
- Spigot, Paper, Purpur or Folia on Minecraft 1.20 or newer
- Java 21
- The latest PacketEvents
Install
First week
Out of the box, 68 checks punish, 46 only alert and 1 is off. The checks page shows which is which.
-
Watch the alerts
Turn them on with
/counter alerts. Hover an alert to see why it fired. -
Decide what punishes
Each check has a
punish-vlin config.yml. Setalert-only: trueon any check you don't trust yet. Newer parts of some checks are listed underwatchand only alert until you remove them. -
Tune it
After a few days,
/counter tuneshows which checks false flag on your server and/counter tune applyloosens them.
checks:
flya:
enabled: true
alert-only: false
punish-vl: 20
watch: [boost, early, lowgrav]
Commands
Everything starts with /counter, or /c and /anticheat for short.
/counterOpen the main menu/counter alertsTurn alerts on or off/counter verboseShow the raw info on alert lines/counter check <name> [player]What a check does and its violation level/counter info <check>Check details/counter toggle <name>Turn a check on or off/counter status [player]Server or player info/counter vl <player>Every violation level of a player/counter history <player>Stored flag history/counter client <player>Client, version and mods/counter topTop online violators/counter suspectsOnline players ranked by violation level/counter recent [page]Recent flags across the server/counter logs [page]Recent flag logs/counter inspect <player>Staff view of a player/counter freeze <player|list>Freeze or unfreeze a player, or list who is frozen/counter spectate [player]Spectate a player/counter backReturn from spectating/counter exempt <player> [check] [time]Exempt a player from one check or all/counter reset <player>Reset a player's data/counter replay [id|list|save|...]Watch, save and share replays/counter banwaveQueued bans and when the next wave runs/counter world [world]Turn checks off or alert only in a world/counter region <id>The same for a WorldGuard region/counter tune [apply]Tune checks from your flag data/counter shadowCompare the newer prediction model/counter networkLinked servers and their status/counter discordDiscord bot status/counter shieldBase shield status/counter lang [code|auto]Pick your own language/counter debug [player]Toggle debug/counter versionPlugin, server and hook info/counter dumpWrite a support file for bug reports/counter clearWipe all violation data/counter reloadReload the configPermissions
counter.adminFull accesscounter.staffFreeze, spectate, inspect and replayscounter.alertsReceive alertscounter.guiOpen the menucounter.useUse /counter at all. Each subcommand still checks its own permissioncounter.freezeFreeze and unfreeze playerscounter.spectateSpectate and teleport to playerscounter.inspectInspect players, suspects and recent flagscounter.replaySave, list and watch replayscounter.replay.deleteDelete saved replayscounter.networkSee network statuscounter.debugUse debug modecounter.shield.seeSee everything the base shield would hidecounter.freeze.bypassCan't be frozencounter.exemptExempt from checkscounter.bypassBypass every check. Narrow it with counter.bypass.move, .combat or .player, a group like counter.bypass.fly, or one check like counter.bypass.flyaPlaceholders and API
With PlaceholderAPI installed, these work anywhere placeholders do.
%counter_vl%Total violation level%counter_vl_<check>%Violation level on one check, like %counter_vl_flya%%counter_top_check%The check with the highest violation level%counter_flags%Total flags%counter_offenses%Punishment offenses%counter_ping%Ping%counter_cps%Clicks per second%counter_client%Client name%counter_bedrock%yes or no%counter_device%Bedrock device, or Java%counter_frozen%yes or no%counter_alerts%Whether alerts are on%counter_tps%Server TPSPlugins can get CounterApi from the Bukkit services manager to read and reset violation levels, and check a player's client, ping and Bedrock status. FlagEvent, PunishEvent and SetbackEvent fire as they happen, and all three can be cancelled.
Networks
Install Counter on every backend server, then turn on network in each config. Give every server its own name and the same secret. Use Redis, or set transport: proxy to go through BungeeCord or Velocity plugin messaging instead.
network:
enabled: true
transport: redis
server: survival
secret: "same-on-every-server"
redis:
host: 127.0.0.1
port: 6379
Storage
Violations and flag history are kept in SQLite with nothing to set up. For MySQL or MariaDB, create the database and Counter makes the table.
database:
enabled: true
type: mysql
mysql:
host: localhost
port: 3306
database: counter
Older clients
- For 1.8 and 1.9 to 1.16 players, some tick checks need
handle-pings-as-inv-acknowledgements: truein the ViaBackwards config. - If ViaVersion runs on your proxy, leave
post_tickandmultiout of theprooflist underaurab. They are off by default.