Grim Anticheat — anti-cheat-plugin för Minecraft
Grim Anticheat (GrimAC) är en öppen (GPL-3.0) anti-cheat för Minecraft 1.8–26.1.2 som förutsäger rörelse; kontrollerar Reach och Timer, med…
Grim Anticheat (GrimAC) är en öppen (GPL-3.0) anti-cheat för Minecraft 1.8–26.1.2 som förutsäger rörelse; kontrollerar Reach och Timer, med Discord-varningar och SQLite-historik.
Grim Anticheat — anti-cheat-plugin för Minecraft
Java: 17 eller nyare
Stödda Minecraft-versioner: 1.8 – 26.1.2
Plugin-version: 2.3.74
Grim Anticheat (GrimAC) är ett serverbaserat anti-cheat för Minecraft med öppen källkod under GPL-3.0-licensen. Pluginen fungerar genom att simulera spelarrörelser, istället för att jämföra med fasta beteendemönster, vilket skiljer det från de flesta gratisalternativ.
Huvuduppgiften är att upptäcka otillåtna klientmodifieringar som ger en orättvis fördel i strid, rörelse eller vid interaktion med block. Själva pluginen bannlyser inte spelare — den registrerar överträdelser och överlåter straffet till en annan plugin (LiteBans, AdvancedBan eller något anpassat kommando via konfigurationen).
Tillvägagångssätt: rörelseprognos istället för mönster
Klassiska gratis anti-cheats fungerar enligt förutbestämda beteendemönster. Denna metod har en uppenbar begränsning — varje uppdatering av modifieringen kringgår potentiellt upptäckten tills ett nytt mönster läggs till i databasen.
GrimAC innehåller istället Movement Simulation Engine. Servern beräknar själv var spelaren skulle kunna befinna sig i en specifik spel-tick, med hänsyn till omgivande block, dryckeseffekter, spindelnät, bubbelkolumner, båtar, grisar, striders, elytra och dussintals andra situationer. Om klienten skickar koordinater som går utanför vad som är möjligt, utlöses Simulation-kontrollen och offseten i block beräknas.
Separat upprätthåller pluginen en personlig kopia av världen för varje spelare. Chunks komprimeras till 16–64 KB med hjälp av paletter, vilket gör cachen tillräckligt lätt även med 200+ online. Denna arkitektur gör det möjligt att säkert hantera falska block som placerats av andra plugins via paket.

Utdata från kommandot /grim help i chatten
Kontroller
Kontrollerna är indelade i funktionella grupper. Namnen är hämtade från källkoden — administratören ser dem i /grim verbose och i webhook-meddelanden. Själva namnen är inte namnen på otillåtna modifieringar — detta är pluginens interna klassificering.
Rörelse
Simulation — huvudkontrollen. Upptäcker alla ändringar i spelarens position som inte stämmer överens med en fysiskt möjlig bana: otillåten acceleration, rörelse utan stöd, rörelse genom block.
Timer, TimerLimit, NegativeTimer, VehicleTimer — upptäcker acceleration av klientens interna tid. Detta är grunden som modifieringar för snabbare användning av föremål och bågskytte bygger på. Upptäcktsgränsen är cirka 1.005× av normal hastighet — mer exakt än de flesta gratisalternativ.
NoFall — förfalskning av fallstatus. Modifieringen skickar ett falskt onGround=true för att avbryta fallskada; kontrollen ser detta.
Phase — rörelse genom solida block. Grundläggande beteende för modifieringar som låter en gå genom väggar eller komma in i skyddade zoner.
Strid
Reach — attack utanför tillåtet avstånd.
Hitboxes — attack förbi målets verkliga hitbox.
Knockback, Explosion — klienten ignorerar momentum från slag eller explosioner.
Aim, Interact — felaktig huvudrotation före slag, fysiskt omöjliga interaksjoner.
Paket och placering av block
BadPackets, PacketOrder, Crash — felaktig ordning på paket, försök att krascha servern med avsiktligt formaterade paket.
NoSlow — spelaren saktas inte ner när de äter, skjuter pilbåge, använder sköld eller kryper i spindelnät.
Grupp för blockplaceringskontroller — upptäcker blockplacering utan fysisk möjlighet att göra det: för långt borta, i en otillgänglig riktning, i luften utan stöd.
Baritone — rörelsemönster för automatiserade hjälpbottar.
Exploit — specifika exploits, till exempel missbruk av Sprint-Jump på elytra.
Grundläggande administratörskommandon
Kommando | Syfte |
| Lista över kommandon med korta beskrivningar |
| Slå på eller av varningar i chatten |
| Visa alla flaggor utan buffert och tröskelvärden |
| Klientversion, märke (Vanilla/Fabric/Lunar/Forge), muskänslighet, FastMath-status |
| Sidindelad historik över sessioner och överträdelser från databasen |
| Gå in i åskådarläge och teleportera till spelaren |
| Återgå till föregående position |
| Ladda ner felsökningslogg för ett specifikt flagg-ID |
| Ladda om alla konfigurationer, återställ aktiva överträdelser |
| Utvecklarläge: prognos vs verklig rörelse med offset |
| Testa Discord-webhooken utan att vänta på en riktig överträdelse |

Utdata från kommandot /grim profile i chatten — klientversion, märke, muskänslighet och spelarens FastMath-status
Varningar och straff
Varje kontroll har sin egen överträdelseräknare som gradvis minskar med tiden. Detta är principiellt: en kort fördröjning eller ett tillfälligt fel ackumuleras inte till en permanent bannlysning, reaktionen utlöses bara vid en stabil överträdelse. Själva reaktionen ställs in av administratören — för varje grupp av kontroller anges det vid vilken överträdelse och hur ofta ett kommando ska utföras.
Logiken är följande: man anger överträdelsenumret efter vilket reaktionen utlöses, och intervallet — hur ofta den kommer att upprepas därefter. Posten 100:0 kick %player% betyder att spelaren kommer att bli utsparkad exakt vid den hundrade överträdelsen, och kommandot kommer inte att utföras igen. Posten 5:3 [alert] utlöses vid den femte överträdelsen, sedan vid den åttonde, elfte, och så vidare — varningen kommer att skickas i spelets chatt till spelare med åtkomst.
Platsen för kommandot kan antingen fyllas av en speciell tagg från själva Grim ([alert] — meddelande i chatten, [log] — post i konsolen och databasen, [webhook] — sändning till Discord, [proxy] — överföring till andra backend-servrar), eller vilket konsolkommando som helst från servern. Tillgängliga variabler är spelarnamn, kontrollnamn och antal överträdelser — standardplatshållare. Tack vare detta ansluts Grim till en extern ban-plugin utan extra bryggor.
Discord-webhooks
För att skicka varningar till Discord har GrimAC en inbyggd integration. Meddelandets utseende är helt anpassningsbart — från färgen på inbäddningen till vilka fält som ska visas. I det färdiga meddelandet kan du se spelarnamn, kontrollnamn, antal överträdelser, klientversion och märke, nuvarande ping och serverns tps vid tidpunkten för händelsen. Både vanliga kanaler och forumkanaler i Discord stöds. Konfigurationen bör kontrolleras i förväg — kommandot /grim testwebhook skickar ett testmeddelande utan att vänta på en riktig överträdelse.
Inkompatibla klientmods
Den officiella wikin har en separat lista över mods som antingen bryter mot vanilla-mekaniken eller provocerar fram falska positiva. Listan är inte uttömmande — den uppdateras på sidan 'Known incompatible client mods' på pluginens GitHub-wiki. Om en spelare får en massiv flaggning med stabil ping och inga tecken på överträdelser, är den första hypotesen en klientmod från denna lista.
Lagring av överträdelsehistorik
GrimAC upprätthåller en historikdatabas knuten till sessioner. En session är en enskild anslutning av en spelare till servern. Kommandot /grim history <spelare> visar: när spelaren anslöt, hur länge sessionen varade, hur många överträdelser, från vilken klient, med en uppdelning av kontroller.
Stödda backends: SQLite (som standard, lokal fil data/history.v1.db), MySQL, PostgreSQL, MongoDB, Redis. SQLite räcker för en enskild server. För ett nätverk med flera Grim-instanser krävs en nätverksbackend med delad databas — vanligtvis MySQL eller Postgres.
Lagringstid (retention) fungerar separat — automatisk rensning av gamla poster. Som standard lever sessioner i 90 dagar, överträdelser — 365 dagar. Detta kan konfigureras eller inaktiveras.

Utdata från /grim history i chatten
Konfiguration
Inställningar är utspridda över flera YAML-filer i mappen plugins/Grim/
Parametrar som verkligen är värda att uppmärksamma vid den första konfigurationen:
Parameter | Fil | Vad den gör |
| config.yml | Förskjutningströskel i block innan Simulation anses vara en överträdelse. Mindre — striktare, fler falska positiva vid fördröjning (lag). |
| config.yml | Utökning av hitbox bortom vanilla-gränsen. 0.0005 registrerar överträdelser från 3.0005 block. |
| config.yml | Extra paket i slutet av varje tick för mer exakt upptäckt av Reach. Användbart på 1.8 PvP-servrar; annars skapar det onödig trafik. |
| config.yml | Aktiverar testkontroller. Bör inte aktiveras i onödan. |
| config.yml | Antal sekunders timeout innan spelaren sparkas ut automatiskt. |
| config.yml | Sparkar ut klienter på problematiska Forge-versioner 1.18.2–1.19.3. |
| config.yml | Överföra varningar mellan backend-servrar via proxy. Kräver bungee-plugin-message-channel i Velocity. |
| database.yml | Huvudbrytare för att spara historik. |
| database.yml | Var överträdelser ska skrivas: sqlite, mysql, postgres, mongo, redis, none. |
De återstående parametrarna i config.yml (decay-koefficienter, ceilings, ping-gränser för specifika mekanismer som firework boost) finjusterer balansen mellan upptäcktens strikthet och komforten för spelare med dålig ping. De flesta administratörer lämnar dem på standardvärdena — de valdes av pluginens skapare som en kompromiss mellan noggrannhet och tolerans för hög ping.
Slutsats
Grim Anticheat registrerar de flesta vanliga överträdelser inom rörelse, strid och pakethantering genom rörelseprognoser, snarare än att jämföra med mönster. Som ett resultat är pluginen motståndskraftig mot nya versioner av samma modifieringar. Den verkliga begränsningen: det finns inga heuristiska kontroller för aimbots (baserade på musmotorik) eller auto-clickers (baserade på klickfrekvens) — dessa utlovas i Premium-grenen, som ännu inte har släppts. GrimAC är lämpligt för servrar där det finns en verklig motivation att installera otillåtna modifieringar — PvP-arenor, minigame-nätverk, överlevnadsspel med dyra resurser, anarchy-servrar. För en liten kreativ överlevnadsserver med 10 vänner är pluginen överdriven — utan en allvarlig risk för överträdelser slösar prognosmotorn bara på serverns resurser.
Installation
En typisk installation tar ungefär 5 minuter. Flödet är detsamma; bara Loader och den matchande builden skiljer sig.
- 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.











