Grim Anticheat — Minecraft用アンチチートプラグイン
Grim Anticheat(GrimAC)はMinecraft 1.8–26.1.2向けのオープンソース(GPL-3.0)サーバーサイド・アンチチート。行動パターン照合ではなく移動シミュレーションでReach・Timer・NoFallなどの不正を検知し、Discord通知やSQ…
Grim Anticheat(GrimAC)はMinecraft 1.8–26.1.2向けのオープンソース(GPL-3.0)サーバーサイド・アンチチート。行動パターン照合ではなく移動シミュレーションでReach・Timer・NoFallなどの不正を検知し、Discord通知やSQLite/MySQLへの履歴保存に対応。
Grim Anticheat — Minecraft用アンチチートプラグイン
Java: 17以上
サポートされているMinecraftバージョン: 1.8 – 26.1.2
プラグインバージョン: 2.3.74
Grim Anticheat(GrimAC)は、GPL-3.0ライセンスの下でオープンソース化された、Minecraft用のサーバーサイドアンチチートです。このプラグインは、動作を固定の行動パターンと比較するのではなく、プレイヤーの動きをシミュレートすることで機能し、これが無料の代替品の多くと異なる点です。
主なタスクは、戦闘、移動、またはブロックとの操作において不当な利点をもたらす、許可されていないクライアントの変更(MOD)を検出することです。プラグイン自体はプレイヤーをBANしません。違反を記録し、罰則は別のプラグイン(LiteBans、AdvancedBan、または設定によるカスタムコマンド)に委譲します。
アプローチ: パターンではなく動きの予測
従来の無料アンチチートは、事前に記録された行動パターンに従って機能します。この方法には明らかな制限があります。新しいパターンがデータベースに追加されるまで、MODのアップデートごとに検出を回避される可能性があります。
GrimACには、代わりにMovement Simulation Engineが含まれています。サーバー自身が、周囲のブロック、ポーションの効果、クモの巣、バブルカラム、ボート、豚、ストライダー、エリトラ、その他の何十もの状況を考慮して、特定のゲームティックにプレイヤーがいる可能性のある場所を計算します。クライアントが可能な範囲を超える座標を送信した場合、ブロック単位のオフセット計算とともにSimulationチェックがトリガーされます。
また、プラグインはプレイヤーごとに個別のワールドコピーを保持します。チャンクはパレットを使用して16〜64 KBに圧縮されるため、200人以上のオンラインプレイヤーがいてもキャッシュは十分に軽量です。このアーキテクチャにより、パケットを介して他のプラグインによって配置された偽のブロックを安全に処理できます。

チャットでの/grim helpコマンドの出力
チェック
チェックは機能グループに分かれています。名前はソースコードから取得され、管理者は/grim verboseおよびWebhookメッセージでそれらを確認できます。名前自体は許可されていないMODの名前ではなく、これはプラグインの内部分類です。
移動
Simulation — メインチェック。物理的に可能な軌道と一致しないプレイヤーの位置の変更を検出します:許可されていない加速、サポートなしの移動、ブロックのすり抜け。
Timer, TimerLimit, NegativeTimer, VehicleTimer — クライアントの内部時間の加速を記録します。これは、アイテムの迅速な使用や弓の射撃のMODが構築される基盤です。検出のしきい値は通常の速度の約1.005倍であり、ほとんどの無料の代替品よりも正確です。
NoFall — 落下状態のなりすまし。MODは偽のonGround=trueを送信して落下ダメージをキャンセルしますが、チェックはこれを検知します。
Phase — 固体ブロックをすり抜ける移動。壁を通り抜けたり保護エリアに入ったりできるMODの基本的な動作です。
戦闘
Reach — 許可された距離を超えた攻撃。
Hitboxes — ターゲットの実際のヒットボックスを外れた攻撃。
Knockback, Explosion — クライアントが打撃や爆発による勢いを無視します。
Aim, Interact — 攻撃前の不適切な頭の回転、物理的に不可能な操作。
パケットとブロックの配置
BadPackets, PacketOrder, Crash — 不正なパケットの順序、意図的にフォーマットされたパケットでサーバーをクラッシュさせようとする試み。
NoSlow — プレイヤーは食事、弓の射撃、盾の使用、またはクモの巣の中を這うときに速度が低下しません。
ブロック配置チェックのグループ — 物理的に行う能力がない状態でのブロックの配置を記録します:遠すぎる、アクセスできない方向、サポートなしの空中。
Baritone — 自動化されたヘルパーボットの移動パターン。
Exploit — エリトラでのSprint-Jumpの悪用など、特定の悪用手法(エクスプロイト)。
基本的な管理者コマンド
コマンド | 目的 |
| 短い説明付きのコマンド一覧 |
| チャットでのアラートのオン/オフ |
| バッファとスレッショルドなしで各フラグを表示 |
| クライアントのバージョン、ブランド(Vanilla/Fabric/Lunar/Forge)、マウス感度、FastMathステータス |
| データベースからのセッションと違反のページ化された履歴 |
| スペクテイターモードに入り、プレイヤーにテレポート |
| 元の位置に戻る |
| 特定のフラグIDのデバッグログをダウンロード |
| すべての設定を再読み込みし、アクティブな違反をリセット |
| 開発者モード:予測とオフセット付きの実際の移動 |
| 実際の違反を待たずにDiscord Webhookをテスト |

チャットでの/grim profileコマンドの出力 — クライアントバージョン、ブランド、マウス感度、およびプレイヤーのFastMathステータス
アラートと罰則
各チェックには独自の違反カウンターがあり、時間の経過とともに徐々に減少します。これは重要です:短いラグやランダムなエラーが蓄積して永久BANになることはなく、安定した違反でのみ反応がトリガーされます。反応自体は管理者が設定します。チェックの各グループについて、どの違反で、どのくらいの頻度でコマンドを実行するかを指定します。
ロジックは次のとおりです。反応がトリガーされる違反の回数と、その後繰り返される頻度(間隔)を指定します。100:0 kick %player% というエントリは、プレイヤーが正確に100回目の違反でキックされ、コマンドは二度と実行されないことを意味します。5:3 [alert] というエントリは、5回目、その後8回目、11回目とトリガーされ、アラートはアクセス権のあるプレイヤーのゲーム内チャットに送信されます。
コマンドの場所は、Grim自体の特別なタグ([alert] — チャットへのメッセージ、[log] — コンソールとデータベースへの記録、[webhook] — Discordへの送信、[proxy] — 他のバックエンドサーバーへの転送)、またはサーバーからの任意のコンソールコマンドのいずれかで埋めることができます。使用可能な変数は、プレイヤー名、チェック名、違反の回数であり、これらは標準のプレースホルダーです。このおかげで、Grimは追加のブリッジなしで外部のBANプラグインに接続できます。
Discord Webhooks
Discordにアラートを送信するために、GrimACには統合機能が組み込まれています。メッセージの外観は完全にカスタマイズ可能です — 埋め込み(embed)の色から、表示するフィールドまで。完成したメッセージには、プレイヤー名、チェック名、違反の回数、クライアントのバージョンとブランド、現在のping、イベント発生時のサーバーのTPSが表示されます。Discordの通常のチャンネルとフォーラムチャンネルの両方がサポートされています。設定は事前に確認する必要があります — /grim testwebhook コマンドは、実際の違反を待たずにテストメッセージを送信します。
互換性のないクライアントMOD
公式Wikiには、バニラのメカニズムを壊すか、誤検知(フォールスポジティブ)を引き起こすMODの個別のリストが保持されています。リストは網羅的ではありません — プラグインのGitHub Wikiの「Known incompatible client mods」ページで更新されています。プレイヤーが安定したpingで違反の兆候なしに大量のフラグを受け取っている場合、最初の仮説はこのリストのクライアントMODです。
違反履歴の保存
GrimACは、セッションに結びついた履歴データベースを保持します。セッションとは、プレイヤーのサーバーへの単一の接続です。/grim history <プレイヤー>コマンドは、プレイヤーがいつ参加したか、セッションの継続時間、違反の回数、どのクライアントから接続したか、チェックの内訳を表示します。
サポートされているバックエンド:SQLite(デフォルト、ローカルファイルdata/history.v1.db)、MySQL、PostgreSQL、MongoDB、Redis。単一のサーバーにはSQLiteで十分です。複数のGrimインスタンスを持つネットワークの場合、共有データベースを持つネットワークバックエンド(通常はMySQLまたはPostgres)が必要です。
保持期間(retention)は個別に機能します — 古いレコードの自動クリーンアップ。デフォルトでは、セッションは90日間、違反は365日間保持されます。これは設定または無効にすることができます。

チャットでの/grim historyコマンドの出力
設定 (Configuration)
設定はplugins/Grim/フォルダ内のいくつかのYAMLファイルに分散されています。
最初のセットアップで本当に注目する価値のあるパラメータ:
パラメータ | ファイル | 役割 |
| config.yml | Simulationが違反と見なされる前のブロック単位のオフセットしきい値。小さいほど厳格になり、ラグの発生時に誤検知が多くなります。 |
| config.yml | バニラの制限を超えたヒットボックスの拡張。0.0005は、3.0005ブロックからの超過を記録します。 |
| config.yml | Reachのより正確な検出のために、各ティックの最後に追加のパケットを送信します。1.8 PvPサーバーで役立ちます。それ以外の場合は不要なトラフィックを作成します。 |
| config.yml | テストチェックを有効にします。不必要にオンにしないでください。 |
| config.yml | プレイヤーが自動的にキックされるまでのタイムアウト(秒数)。 |
| config.yml | 問題のあるForge 1.18.2〜1.19.3バージョンのクライアントをキックします。 |
| config.yml | プロキシを介してバックエンドサーバー間でアラートを転送します。Velocityにbungee-plugin-message-channelが必要です。 |
| database.yml | 履歴を保存するためのメインスイッチ。 |
| database.yml | 違反の書き込み先: sqlite, mysql, postgres, mongo, redis, none。 |
config.ymlの残りのパラメータ(減衰係数、上限、花火のブーストなどの特定のメカニズムのping制限)は、検出の厳密さとpingが悪いプレイヤーの快適さのバランスを微調整します。ほとんどの管理者はそれらをデフォルト値のままにします — これらはプラグインの作成者によって、精度と高ping耐性の間の妥協点として選択されました。
結論
Grim Anticheatは、パターンとの比較ではなく、動きの予測を通じて、一般的な移動、戦闘、パケット処理の違反の大部分を記録します。結果として、このプラグインは同じMODの新しいバージョンに対して耐性があります。実際の制限:エイムボット(マウスの運動能力に基づく)やオートクリッカー(クリック頻度に基づく)に対するヒューリスティックなチェックはありません — これらはまだリリースされていないPremiumブランチで約束されています。GrimACは、許可されていないMODをインストールする本当の動機があるサーバー(PvPアリーナ、ミニゲームネットワーク、高価なリソースを持つサバイバルサーバー、アナーキーサーバー)に適しています。10人の友人がいる小さなクリエイティブサバイバルサーバーの場合、プラグインは過剰です。重大な違反のリスクがなければ、予測エンジンは単にサーバーのリソースを無駄にするだけです。
インストール
通常のインストールは約 5 分で完了します。手順は同じで、ローダーと対応するビルドだけが異なります。
- 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.











