Grim Anticheat — Minecraft anticheat-liitännäinen
Grim Anticheat on avoimen lähdekoodin anticheat-liitännäinen Minecraftille, joka estää huijaamisen liikkeiden simuloinnin avulla kaavojen…
Grim Anticheat on avoimen lähdekoodin anticheat-liitännäinen Minecraftille, joka estää huijaamisen liikkeiden simuloinnin avulla kaavojen sijaan.
Grim Anticheat — Minecraft anticheat-liitännäinen
Java: 17 tai uudempi
Tuetut Minecraft-versiot: 1.8 – 26.1.2
Liitännäisen versio: 2.3.74
Grim Anticheat (GrimAC) on avoimen lähdekoodin anticheat-liitännäinen Minecraft-palvelimille GPL-3.0-lisenssillä. Liitännäinen toimii simuloimalla pelaajien liikkeitä sen sijaan, että niitä verrattaisiin kiinteisiin käyttäytymismalleihin, mikä erottaa sen useimmista ilmaisista vaihtoehdoista.
Sen päätehtävänä on havaita luvattomat asiakasohjelman muokkaukset, jotka tarjoavat epäreilua etua taistelussa, liikkumisessa tai lohkojen kanssa vuorovaikuttamisessa. Itse liitännäinen ei anna pelaajille porttikieltoa — se tallentaa rikkomuksen ja siirtää rangaistuksen toiselle liitännäiselle (LiteBans, AdvancedBan tai mikä tahansa mukautettu komento asetusten kautta).
Lähestymistapa: liikkeiden ennustaminen kaavojen sijaan
Klassiset ilmaiset anticheatit luottavat ennalta tallennettuihin käyttäytymismalleihin. Tällä menetelmällä on ilmeinen rajoitus — jokainen ohjelmiston päivitys voi mahdollisesti ohittaa havaitsemisen, kunnes uusi malli lisätään tietokantaan.
GrimAC puolestaan sisältää Movement Simulation Engine -järjestelmän. Palvelin laskee tarkalleen, missä pelaajan pitäisi olla tietyllä pelin silmukalla, ottaen huomioon ympäröivät lohkot, taikajuomien vaikutukset, hämähäkinseitit, kuplapylväät, veneet, siat, laavastridet, elytrapurjeet ja kymmeniä muita tilanteita. Jos asiakasohjelma lähettää koordinaatit, jotka ylittävät fyysisesti mahdollisen, Simulation-tarkistus laukeaa ja laskee lohkon poikkeaman.
Lisäksi liitännäinen pitää yllä henkilökohtaista kopiota maailmasta jokaiselle pelaajalle. Lohkot pakataan 16–64 kt:n kokoiseksi palettien avulla, mikä tekee välimuistista melko kevyen, vaikka verkossa olisi yli 200 pelaajaa. Tämä arkkitehtuuri käsittelee turvallisesti muiden liitännäisten verkkopakettien kautta asettamat tekolohkot.

Komennon /grim help tuloste chatissa
Tarkistukset
Tarkistukset on jaettu toiminnallisiin ryhmiin. Nimet on otettu lähdekoodista — ylläpitäjät näkevät ne komennolla /grim verbose ja webhook-viesteissä. Nimet itsessään eivät ole luvattomien huijausohjelmien nimiä — ne ovat liitännäisen sisäistä luokittelua.
Liikkuminen
Simulation — pääasiallinen tarkistus. Havaitsee kaikki muutokset pelaajan sijainnissa, jotka eivät vastaa fyysisesti mahdollista lentorataa: luvaton kiihtyvyys, liikkuminen ilman tukea, liikkuminen lohkojen läpi.
Timer, TimerLimit, NegativeTimer, VehicleTimer — havaitsevat asiakasohjelman sisäisen ajan kiihtymisen. Tämä on perusta muokkauksille, jotka nopeuttavat esineiden käyttöä ja jousella ampumista. Havaitsemiskynnys on noin 1,005-kertainen normaaliin ajan nopeuteen verrattuna — paljon tarkempi kuin useimmat ilmaiset vaihtoehdot.
NoFall — putoamistilan väärentäminen. Modifikaatio lähettää väärennetyn onGround=true -tilan putoamisvahingon mitätöimiseksi; tarkistus havaitsee tämän.
Phase — liikkuminen kiinteän lohkon läpi. Tämä on perusmekaniikka huijauksissa, jotka sallivat seinien läpi kävelemisen tai pääsyn suojatuille alueille.
Taistelu
Reach — hyökkääminen sallitun enimmäisetäisyyden ulkopuolelta.
Hitboxes — hyökkääminen kohteen todellisen osumalaatikon ohi.
Knockback, Explosion — asiakasohjelma sivuuttaa iskuista tai räjähdyksistä syntyvän impulssin.
Aim, Interact — pään virheellinen kääntyminen ennen osumaa, fyysisesti mahdottomat vuorovaikutukset.
Paketit ja lohkojen asettaminen
BadPackets, PacketOrder, Crash — virheellinen pakettien järjestys, yritykset kaataa palvelin tahallisesti viallisilla paketeilla.
NoSlow — pelaaja ei hidastu ruokaa syödessä, jousella ampuessa, kilpeä käytettäessä tai hämähäkinseitissä ryömittäessä.
Lohkojen asettamisen tarkistusryhmä — havaitsee lohkon asettamisen, kun se on fyysisesti mahdotonta: liian kaukana, saavuttamattomassa suunnassa, ilmassa ilman tukea.
Baritone — automatisoitujen bottiapulaisten liikemalli.
Exploit — yksittäiset haavoittuvuuksien hyödyntämiset, kuten Sprint-Jump -ominaisuuden väärinkäyttö elytrapurjeiden kanssa.
Tärkeimmät ylläpitäjien komennot
Komento | Tarkoitus |
| Lista komennoista lyhyillä kuvauksilla |
| Ota chat-ilmoitukset käyttöön tai pois käytöstä |
| Näytä kaikki havainnot ilman puskurointia tai kynnyksiä |
| Asiakasohjelman versio, brändi (Vanilla/Fabric/Lunar/Forge), hiiren herkkyys, FastMath-tila |
| Sivutettu istuntojen ja rikkomusten historia tietokannasta |
| Siirry katsojatilaan ja telepressoidu pelaajan luo |
| Palaa edelliseen sijaintiin |
| Lataa virheenkorjausloki tietylle havainnon tunnisteelle |
| Lataa kaikki asetukset uudelleen, nollaa aktiiviset rikkomukset |
| Kehittäjätila: ennuste vs todellinen liike offsetilla |
| Testaa Discord-webhookia odottamatta todellista rikkomusta |

Komennon /grim profile tuloste chatissa — pelaajan käyttämä asiakasohjelman versio, brändi, hiiren herkkyys ja FastMath-tila
Ilmoitukset ja rangaistukset
Jokaisella tarkistuksella on oma rikkomuslaskurinsa, joka pienenee vähitellen ajan myötä. Tämä on tärkeää: lyhyt viive tai satunnainen virhe ei kerry pysyväksi porttikielloksi, vaan reaktio laukeaa vain jatkuvista rikkomuksista. Ylläpitäjä määrittelee reaktion itse — jokaiselle tarkistusryhmälle määritellään, minkä rikkomuksen kohdalla ja kuinka usein komento suoritetaan.
Logiikka on seuraava: määritä rikkomusnumero, joka käynnistää reaktion, ja intervalli — kuinka usein se toistuu myöhemmin. Syöte 100:0 kick %player% tarkoittaa, että pelaaja potkitaan palvelimelta (kick) tarkalleen 100. rikkomuksen kohdalla, eikä komentoa suoriteta sen jälkeen enää uudelleen. Syöte 5:3 [alert] käynnistyy 5. rikkomuksen kohdalla, sitten 8., 11., ja niin edelleen — ilmoitus lähetetään pelin sisäiseen chattiin pelaajille, joilla on siihen oikeudet.
Komento voidaan korvata Grimin omalla palvelutunnisteella ([alert] — chat-viesti, [log] — konsoli- ja tietokantaloki, [webhook] — Discord-viesti, [proxy] — lähetä muille taustapalvelimille) tai millä tahansa palvelimen konsolikomennolla. Saatavilla oleviin muuttujiin sisältyvät pelaajan nimimerkki, tarkistuksen nimi ja rikkomusten määrä. Tämän ansiosta Grim on yhdistettävissä ulkoisiin porttikieltoliitännäisiin (bannausliitännäiset) ilman erillisiä välikappaleita.
Discord-webhookit
GrimAC sisältää sisäänrakennetun integraation Discord-ilmoitusten lähettämistä varten. Viestin ulkonäkö on täysin muokattavissa — aina upotuksen väristä siihen, mitkä kentät näytetään. Valmiissa viestissä voit nähdä pelaajan nimimerkin, tarkistuksen nimen, rikkomusten määrän, asiakasohjelman version ja brändin, nykyisen pingin ja palvelimen tps-lukeman tapahtumahetkellä. Se tukee sekä tavallisia kanavia että Discord-foorumikanavia. On erittäin suositeltavaa vahvistaa asetukset etukäteen — komento /grim testwebhook lähettää testiviestin, jolloin ei tarvitse odottaa oikeaa rikkomusta.
Yhteensopimattomat asiakasohjelman modifikaatiot
Virallinen wiki ylläpitää erillistä luetteloa modi-ohjelmista, jotka joko rikkovat alkuperäisiä pelimekaniikkoja (vanilla) tai aiheuttavat vääriä positiivisia hälytyksiä. Luettelo ei ole täydellinen, ja sitä päivitetään liitännäisen GitHub-wikin sivulla "Known incompatible client mods". Jos pelaaja laukaisee lukuisia hälytyksiä vakaalla pingillä ja ilman muita merkkejä huijauksesta, ensimmäinen oletus on tämän luettelon mukainen asiakasohjelman modi.
Rikkomushistorian tallentaminen
GrimAC ylläpitää historiatietokantaa, joka on linkitetty istuntoihin. Istunto tarkoittaa pelaajan yhtä yhteyttä palvelimelle. Komento /grim history <pelaaja> näyttää: milloin pelaaja liittyi, kuinka kauan istunto kesti, kuinka monta rikkomusta tapahtui ja miltä asiakasohjelmalta, eriteltynä tarkistusten mukaan.
Tuetut tietokannat: SQLite (oletus, paikallinen tiedosto data/history.v1.db), MySQL, PostgreSQL, MongoDB, Redis. SQLite riittää yhdelle palvelimelle. Usean Grim-instanssin verkostossa tarvitaan verkkotietokanta, jolla on jaettu tietokanta — tyypillisesti MySQL tai Postgres.
Lisäksi käytössä on tietojen säilytysaikakäytäntö — vanhojen tietueiden automaattinen poistaminen. Oletuksena istunnot säilytetään 90 päivää ja rikkomukset 365 päivää. Tätä voidaan muokata tai se voidaan poistaa käytöstä.

Komennon /grim history tuloste chatissa
Asetukset
Asetukset on jaettu useisiin YAML-tiedostoihin plugins/Grim/-kansiossa.
Parametrit, joihin kannattaa todella kiinnittää huomiota alkuasetuksissa:
Parametri | Tiedosto | Mitä se tekee |
| config.yml | Lohkon poikkeamakynnys, jonka jälkeen Simulation lasketaan rikkomukseksi. Pienempi — tiukempi, enemmän vääriä positiivisia viiveen (lag) takia. |
| config.yml | Osumalaatikon laajeneminen yli pelin alkuperäisen (vanilla) rajan. 0.0005 havaitsee yli 3.0005 lohkon ylityksen. |
| config.yml | Ylimääräinen paketti jokaisen pelisilmukan lopussa tarkempaa Reach-havaitsemista varten. Hyödyllinen 1.8 PvP -palvelimilla; muuten luo vain tarpeetonta liikennettä. |
| config.yml | Ottaa testitarkistukset käyttöön. On parasta pitää pois päältä ellei pakollista. |
| config.yml | Aikakatkaisu sekunteina ennen pelaajan automaattista potkimista palvelimelta. |
| config.yml | Potkii asiakasohjelmat ongelmallisilla Forge-versioilla 1.18.2–1.19.3. |
| config.yml | Välitä ilmoitukset taustapalvelimien välillä proxyn kautta. Vaatii bungee-plugin-message-channel -tukea Velocityssä. |
| database.yml | Pääkytkin historian tallentamiselle. |
| database.yml | Minne rikkomukset kirjoitetaan: sqlite, mysql, postgres, mongo, redis, none. |
Muut parametrit config.yml -tiedostossa (laskevan kertoimen kertoimet, kattoarvot, ping-rajoitukset tietyille mekaniikoille, kuten firework boost) hienosäätävät tarkan tasapainon tarkan havaitsemisen ja korkean pingin omaavien pelaajien mukavuuden välillä. Useimmat ylläpitäjät jättävät ne oletusasetuksiin — liitännäisen kehittäjä on tasapainottanut ne kompromissina tarkkuuden ja korkean pingin sietokyvyn välillä.
Yhteenveto
Grim Anticheat havaitsee useimmat yleiset liikkumis-, taistelu- ja pakettienkäsittelyrikkomukset ennustamalla mahdollisia liikkeitä sen sijaan, että niitä verrattaisiin kaavoihin. Tämän ansiosta liitännäinen on joustava samojen modifikaatioiden uusia versioita vastaan. Todellinen rajoitus: puuttuvat heuristiset tarkistukset hiiren liikkeeseen perustuvalle tähtäysavustukselle (aim-assist) ja napsautustaajuuteen perustuvalle automaattiselle napsautukselle (auto-clicks) — nämä on luvattu Premium-haarassa, jota ei ole vielä julkaistu. GrimAC sopii palvelimille, joilla on todellista motivaatiota käyttää luvattomia modifikaatioita — PvP-areenat, minipeliverkostot, selviytymispalvelimet, joilla on arvokkaita resursseja, sekä anarkiapalvelimet. Pienelle luovalle selviytymispalvelimelle, jossa on 10 kaveria, liitännäinen on liiallinen — ilman vakavaa riskiä rikkomuksista ennustusmoottori kuluttaa vain palvelimen resursseja.
Asennus
Tyypillinen asennus vie noin 5 minuuttia. Kulku on sama; vain Loader ja sopiva build vaihtuvat.
- 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.











