Перейти к содержимому
Mineforgian

Grim Anticheat

Fully async, multithreaded, predictive, open source, 3.01 reach, 1.005 timer, 0.01% speed, 99.99% antikb, "bypassable" 1.8-1.21 anticheat

Загрузки
610K
Подписчики
490
Обновлён
20 августа 2026 г.
Лицензия
GPL-3.0-or-later

Опубликован 22 марта 2024 г.

GrimAC

GrimAC is an free open source Minecraft anticheat designed to support the latest versions of Minecraft. It currently supports minecraft versions 1.8-1.21. Geyser players are fully exempt.

This project is considered feature-complete for the 2.0 (open-source) branch. If you would like a bug fix or enhancement and cannot sponsor the work, pull requests are welcome. A premium version is planned, which will offer additional subscription-based paid checks, such as heuristics.

Installation notes

  • Java 17 is now required. More information here.
  • Paper, Spigot, and Folia are currently supported.
  • If you use Geyser, place Floodgate on the backend server so grim can exempt bedrock players. Grim cannot access the Floodgate API if it is on the proxy.
  • If you use ViaVersion, it should be on the backend server as movement is highly dependent on client version.

Support & wiki information

Developer API

Grim's API allows you to integrate Grim into your own plugins.

How to compile

  1. git clone https://github.com/GrimAnticheat/Grim.git
  2. cd Grim
  3. ./gradlew build
  4. The final jar will compile into the build/libs folder

Grim supremacy

What makes Grim stand out against other anticheats?

Movement Simulation Engine

  • We have a 1:1 replication of the player's possible movements
  • This covers everything from basic walking, swimming, knockback, cobwebs, to bubble columns
  • It even covers riding entities from boats to pigs to striders
  • Built upon covering edge cases to confirm accuracy
  • 1.13+ clients on 1.13+ servers, 1.12- clients on 1.13+ servers, 1.13+ clients on 1.12- servers, and 1.12- clients on 1.12- servers are all supported regardless of the large technical changes between these versions.
  • The order of collisions depends on the client version and is correct
  • Accounts for minor bounding box differences between versions, for example:
    • Single glass panes will be a + shape for 1.7-1.8 players and * for 1.9+ players
    • 1.13+ clients on 1.8 servers see the + glass pane hitbox due to ViaVersion
    • Many other blocks have this extreme attention to detail.
    • Waterlogged blocks do not exist for 1.12 or below players
    • Blocks that do not exist in the client's version use ViaVersion's replacement block
    • Block data that cannot be translated to previous versions is replaced correctly
    • All vanilla collision boxes have been implemented

Fully asynchronous and multithreaded design

  • All movement checks and the overwhelming majority of listeners run on the netty thread
  • The anticheat can scale to many hundreds of players, if not more
  • Thread safety is carefully thought out
  • The next core allows for this design

Full world replication

  • The anticheat keeps a replica of the world for each player
  • The replica is created by listening to chunk data packets, block places, and block changes
  • On all versions, chunks are compressed to 16-64 kb per chunk using palettes
  • Using this cache, the anticheat can safely access the world state
  • Per player, the cache allows for multithreaded design
  • Sending players fake blocks with packets is safe and does not lead to falses
  • The world is recreated for each player to allow lag compensation
  • Client sided blocks cause no issues with packet based blocks. Block glitching does not false the anticheat.

Latency compensation

  • World changes are queued until they reach the player
  • This means breaking blocks under a player does not false the anticheat
  • Everything from flying status to movement speed will be latency compensated

Inventory compensation

  • The player's inventory is tracked to prevent ghost blocks at high latency, and other errors

Secure by design, not obscurity

  • All systems are designed to be highly secure and mathematically impossible to bypass
  • For example, the prediction engine knows all possible movements and cannot be bypassed

Ченджлог

2.3.74-98be8c1Альфа26.1.1, 26.1.2, 26.2 · 20 августа 2026 г.

Changes in this Build (since previous push)

Miscellaneous

  • Fix/issue 2775 (#2831)
  • fix: resolve issue #2775

  • remove: ci.yml - by dtqdev (98be8c1)

2.3.74-98be8c1Альфа26.1.1, 26.1.2, 26.2 · 20 августа 2026 г.

Changes in this Build (since previous push)

Miscellaneous

  • Fix/issue 2775 (#2831)
  • fix: resolve issue #2775

  • remove: ci.yml - by dtqdev (98be8c1)

2.3.74-f803be6Альфа26.1.1, 26.1.2, 26.2 · 19 августа 2026 г.

Changes in this Build (since previous push)

🐛 Fixes

  • Fix a possible false with packet order related checks - by ManInMyVan (f803be6)
2.3.74-f803be6Альфа26.1.1, 26.1.2, 26.2 · 19 августа 2026 г.

Changes in this Build (since previous push)

🐛 Fixes

  • Fix a possible false with packet order related checks - by ManInMyVan (f803be6)
2.3.74-9eaf917Альфа26.1.1, 26.1.2, 26.2 · 18 августа 2026 г.

Changes in this Build (since previous push)

Miscellaneous

  • Narrow exception scope and log empty catch blocks (#2787)

Found by custom Java linter static analysis.

  • DataStoreLifecycle.java: log exceptions in empty catch blocks instead of swallowing
  • Check.java: catch RuntimeException instead of Throwable
  • PunishmentManager.java: catch RuntimeException instead of Throwable
  • CommandRegister.java: catch RuntimeException instead of Throwable - by iamthealfaandtheomega (9eaf917)
2.3.74-9eaf917Альфа26.1.1, 26.1.2, 26.2 · 18 августа 2026 г.

Changes in this Build (since previous push)

Miscellaneous

  • Narrow exception scope and log empty catch blocks (#2787)

Found by custom Java linter static analysis.

  • DataStoreLifecycle.java: log exceptions in empty catch blocks instead of swallowing
  • Check.java: catch RuntimeException instead of Throwable
  • PunishmentManager.java: catch RuntimeException instead of Throwable
  • CommandRegister.java: catch RuntimeException instead of Throwable - by iamthealfaandtheomega (9eaf917)
2.3.74-f48f450Альфа26.1.1, 26.1.2, 26.2 · 17 августа 2026 г.

Changes in this Build (since previous push)

Miscellaneous

  • Remove single var use - by ManInMyVan (f48f450)
2.3.74-f48f450Альфа26.1.1, 26.1.2, 26.2 · 17 августа 2026 г.

Changes in this Build (since previous push)

Miscellaneous

  • Remove single var use - by ManInMyVan (f48f450)

Комментарии

Загружаем…