Grim Anticheat — anti-cheat-plugin for Minecraft
Grim Anticheat (GrimAC) er en open source (GPL-3.0) anti-cheat for Minecraft 1.8–26.1.2 som predikerer bevegelse i stedet for mønstre…
Grim Anticheat (GrimAC) er en open source (GPL-3.0) anti-cheat for Minecraft 1.8–26.1.2 som predikerer bevegelse i stedet for mønstre; sjekker Reach og Timer, med Discord-varsler og SQLite-historikk.
Grim Anticheat — anti-cheat-plugin for Minecraft
Java: 17 eller nyere
Støttede Minecraft-versjoner: 1.8 – 26.1.2
Plugin-versjon: 2.3.74
Grim Anticheat (GrimAC) er en serverbasert anti-cheat for Minecraft med åpen kildekode under GPL-3.0-lisensen. Pluginen fungerer ved å simulere spillerbevegelser, i stedet for å sammenligne med faste atferdsmønstre, noe som skiller den fra de fleste gratis alternativer.
Hovedoppgaven er å oppdage ulovlige klientmodifikasjoner som gir en urettferdig fordel i kamp, bevegelse eller ved interaksjon med blokker. Selve pluginen utestenger ikke spillere — den registrerer brudd og overlater straffen til en annen plugin (LiteBans, AdvancedBan eller en hvilken som helst tilpasset kommando via konfigurasjonen).
Tilnærming: bevegelsesprognose i stedet for mønstre
Klassiske gratis anti-cheats fungerer etter forhåndsregistrerte atferdsmønstre. Denne metoden har en åpenbar begrensning — hver oppdatering av modifikasjonen omgår potensielt deteksjonen inntil et nytt mønster legges til databasen.
GrimAC inneholder i stedet Movement Simulation Engine. Serveren beregner selv hvor spilleren kunne befinne seg i en bestemt spill-tick, tatt i betraktning blokker rundt, eleksireffekter, spindelvev, boblekolonner, båter, griser, stridere, elytra og dusinvis av andre situasjoner. Hvis klienten sender koordinater som går utenfor det som er mulig, utløses Simulation-kontrollen med beregning av forskyvningen i blokker.
Separat opprettholder pluginen en personlig kopi av verdenen for hver spiller. Chunks komprimeres til 16–64 KB ved hjelp av paletter, noe som gjør bufferen lett nok selv med 200+ online. Denne arkitekturen gjør det mulig å trygt behandle falske blokker plassert av andre plugins via pakker.

Utdata av kommandoen /grim help i chatten
Kontroller
Kontroller er delt inn i funksjonelle grupper. Navnene er hentet fra kildekoden — administratoren ser dem i /grim verbose og i webhook-meldinger. Selve navnene er ikke navn på ulovlige modifikasjoner — dette er pluginens interne klassifisering.
Bevegelse
Simulation — hovedkontrollen. Oppdager eventuelle endringer i spillerens posisjon som ikke samsvarer med en fysisk mulig bane: ulovlig akselerasjon, bevegelse uten støtte, bevegelse gjennom blokker.
Timer, TimerLimit, NegativeTimer, VehicleTimer — registrerer akselerasjon av klientens interne tid. Dette er grunnlaget som modifikasjoner for akselerert gjenstandsbruk og bueskyting bygger på. Deteksjonsgrensen er rundt 1.005× av normal hastighet — mer nøyaktig enn de fleste gratis alternativer.
NoFall — forfalskning av fallstatus. Modifikasjonen sender en falsk onGround=true for å avbryte fallskade; kontrollen ser dette.
Phase — bevegelse gjennom solide blokker. Grunnleggende atferd for modifikasjoner som lar en gå gjennom vegger eller komme inn i beskyttede soner.
Kamp
Reach — angrep utenfor tillatt avstand.
Hitboxes — angrep forbi målets reelle hitbox.
Knockback, Explosion — klienten ignorerer momentum fra slag eller eksplosjoner.
Aim, Interact — feil hoderotasjon før slag, fysisk umulige interaksjoner.
Pakker og plassering av blokker
BadPackets, PacketOrder, Crash — feil rekkefølge på pakker, forsøk på å krasje serveren med bevisst utformede pakker.
NoSlow — spilleren bremses ikke under spising, bueskyting, bruk av skjold, eller kryping i spindelvev.
Gruppe for blokkplasseringskontroller — oppdager blokkplassering uten den fysiske evnen til å gjøre det: for langt unna, i en utilgjengelig retning, i luften uten støtte.
Baritone — bevegelsesmønsteret til automatiserte hjelpe-boter.
Exploit — spesifikke exploits, for eksempel misbruk av Sprint-Jump på elytra.
Grunnleggende administratorkommandoer
Kommando | Formål |
| Liste over kommandoer med korte beskrivelser |
| Slå på eller av varsler i chatten |
| Vis alle flagg uten buffer og terskler |
| Klientversjon, merke (Vanilla/Fabric/Lunar/Forge), musefølsomhet, FastMath-status |
| Paginert historikk over økter og brudd fra databasen |
| Gå over i tilskuermodus og teleporter til spilleren |
| Gå tilbake til forrige posisjon |
| Last ned feilsøkingslogg for en bestemt flagg-ID |
| Last inn alle konfigurasjoner på nytt, tilbakestill aktive brudd |
| Utviklermodus: prognose vs reell bevegelse med forskyvning |
| Test Discord-webhooken uten å vente på et faktisk brudd |

Utdata av kommandoen /grim profile i chatten — klientversjon, merke, musefølsomhet og spillerens FastMath-status
Varsler og straffer
Hver kontroll har sin egen bruddteller som gradvis reduseres over tid. Dette er prinsipielt: en kort forsinkelse eller en tilfeldig feil akkumuleres ikke til en permanent utestengelse, reaksjonen utløses bare ved et stabilt brudd. Selve reaksjonen angis av administratoren — for hver gruppe av kontroller foreskrives det ved hvilket brudd og hvor ofte en kommando skal utføres.
Logikken er som følger: du angir bruddnummeret etter hvilket reaksjonen utløses, og intervallet — hvor ofte den vil gjentas deretter. Oppføringen 100:0 kick %player% betyr at spilleren vil bli sparket ut nøyaktig ved det hundrede bruddet, og kommandoen vil ikke bli utført igjen. Oppføringen 5:3 [alert] utløses ved det femte bruddet, deretter ved det åttende, ellevte og så videre — varselet vil bli sendt i spillchatten til spillere med tilgang.
Plassen for kommandoen kan enten tas av en spesiell tagg fra selve Grim ([alert] — melding i chatten, [log] — oppføring i konsollen og databasen, [webhook] — sending til Discord, [proxy] — overføring til andre backend-servere), eller en hvilken som helst konsollkommando fra serveren. Tilgjengelige variabler er spillernavn, kontrollnavn og antall brudd — standard plassholdere. Takket være dette kobles Grim til en ekstern ban-plugin uten ekstra broer.
Discord-webhooks
For sending av varsler til Discord, har GrimAC en innebygd integrasjon. Meldingens utseende er fullt tilpassbart — fra fargen på innbyggingen til hvilke felt som skal vises. I den ferdige meldingen kan du se spillernavn, kontrollnavn, antall brudd, klientversjon og merke, nåværende ping og serverens tps på hendelsestidspunktet. Både vanlige kanaler og forumkanaler i Discord støttes. Konfigurasjonen bør sjekkes på forhånd — kommandoen /grim testwebhook sender en testmelding uten å vente på et reelt brudd.
Inkompatible klientmods
Den offisielle wikien opprettholder en egen liste over mods som enten bryter med vanilla-mekanikken eller provoserer frem falske positiver. Listen er ikke uttømmende — den oppdateres på siden 'Known incompatible client mods' på pluginens GitHub-wiki. Hvis en spiller har et massivt flagg med stabil ping og ingen tegn til brudd, er den første hypotesen en klientmod fra denne listen.
Lagring av bruddshistorikk
GrimAC opprettholder en historikkdatabase knyttet til økter. En økt er en enkelt tilkobling av en spiller til serveren. Kommandoen /grim history <spiller> viser: når spilleren ble med, hvor lenge økten varte, hvor mange brudd, fra hvilken klient, med en oversikt over kontroller.
Støttede backends: SQLite (som standard, lokal fil data/history.v1.db), MySQL, PostgreSQL, MongoDB, Redis. SQLite er tilstrekkelig for en enkelt server. For et nettverk med flere Grim-instanser kreves en nettverksbackend med felles database — typisk MySQL eller Postgres.
Oppbevaring (retention) fungerer separat — automatisk opprydding av gamle oppføringer. Som standard lever økter i 90 dager, brudd — 365 dager. Dette kan konfigureres eller deaktiveres.

Utdata av /grim history i chatten
Konfigurasjon
Innstillinger er spredt over flere YAML-filer i mappen plugins/Grim/
Parametere som virkelig er verdt å ta hensyn til ved det første oppsettet:
Parameter | Fil | Hva den gjør |
| config.yml | Forskyvningsterskel i blokker før Simulation anses som et brudd. Mindre — strengere, flere falske positiver ved forsinkelse (lag). |
| config.yml | Utvidelse av hitbox utover vanilla-grensen. 0.0005 registrerer overskridelser fra 3.0005 blokker. |
| config.yml | Ekstra pakke på slutten av hver tick for mer nøyaktig deteksjon av Reach. Nyttig på 1.8 PvP-servere; ellers skaper den unødvendig trafikk. |
| config.yml | Aktiverer testkontroller. Bør ikke aktiveres unødvendig. |
| config.yml | Antall sekunders tidsavbrudd før automatisk utkasting av spiller. |
| config.yml | Kaster ut klienter med problematiske Forge-versjoner 1.18.2–1.19.3. |
| config.yml | Overføre varsler mellom backend-servere via proxy. Krever bungee-plugin-message-channel i Velocity. |
| database.yml | Hovedbryter for lagring av historikk. |
| database.yml | Hvor brudd skal skrives: sqlite, mysql, postgres, mongo, redis, none. |
De gjenværende parameterne i config.yml (decay-koeffisienter, ceilings, ping-grenser for spesifikke mekanikker som firework boost) finjusterer balansen mellom strengheten på deteksjonen og komforten til spillere med dårlig ping. De fleste administratorer lar dem stå på standardverdiene — de ble valgt av forfatteren av pluginen som et kompromiss mellom nøyaktighet og toleranse for høy ping.
Konklusjon
Grim Anticheat registrerer flertallet av vanlige bevegelses-, kamp- og pakkehåndteringsbrudd gjennom bevegelsesprognoser, i stedet for å sammenligne med mønstre. Som et resultat er pluginen motstandsdyktig mot nye versjoner av de samme modifikasjonene. Den reelle begrensningen: det er ingen heuristiske kontroller for aimbots (basert på musemotorikk) eller auto-clickers (basert på klikkfrekvens) — disse loves i Premium-grenen, som ennå ikke er utgitt. GrimAC er egnet for servere der det er en reell motivasjon for å installere ulovlige modifikasjoner — PvP-arenaer, minigame-nettverk, overlevelsesspill med dyrebare ressurser, anarchy-servere. For en liten kreativ overlevelsessamling med 10 venner er pluginen overdreven — uten en alvorlig risiko for brudd, kaster prognosemotoren bare bort serverressurser.
Installasjon
En typisk installasjon tar omtrent 5 minutter. Flyten er den samme; bare Loader og den matchende builden er forskjellige.
- 1Stop your Minecraft server.
- 2Drop the plugin .jar into the server /plugins folder.
- 3Start the server once so the plugin generates its config files.
- 4Edit /plugins/<name>/config.yml as needed, then run /reload confirm or restart.











