Grim Anticheat — Minecraft 反作弊插件
Grim Anticheat(GrimAC)是面向 Minecraft 1.8–26.1.2 的开源(GPL-3.0)服务端反作弊插件,通过运动模拟而非模式匹配检测 Reach、Timer、NoFall 等违规,支持 Discord 通知和 SQLite/MySQL…
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),这些修改会在战斗、移动或与方块交互时提供不公平的优势。该插件本身不会封禁玩家 — 它会记录违规行为并将惩罚委托给另一个插件(LiteBans、AdvancedBan 或通过配置的任何自定义命令)。
方法:运动预测而非模式匹配
经典的免费反作弊软件根据预先记录的行为模式进行工作。这种方法有一个明显的局限性 — 每次 Mod 的更新都有可能绕过检测,直到新的模式被添加到数据库中。
相反,GrimAC 包含了一个 Movement Simulation Engine(运动模拟引擎)。服务器本身会计算玩家在特定的游戏刻(tick)中可能所处的位置,并考虑周围的方块、药水效果、蜘蛛网、气泡柱、船、猪、炽足兽、鞘翅以及其他数十种情况。如果客户端发送的坐标超出了可能的范围,就会触发 Simulation(模拟)检查,并计算方块的偏移量。
此外,插件会为每个玩家维护一个单独的世界副本。区块(Chunks)使用调色板压缩到 16–64 KB,这使得即使有 200 多名在线玩家,缓存也足够轻量。这种架构使得可以安全地处理其他插件通过数据包放置的伪造方块。

聊天中 /grim help 命令的输出
检查项 (Checks)
检查项分为功能组。名称取自源代码 — 管理员可以在 /grim verbose 和 webhook 消息中看到它们。名称本身并不是未授权 Mod 的名称 — 这是插件的内部的分类。
移动 (Movement)
Simulation — 主要检查项。检测任何与物理上可能的轨迹不符的玩家位置变化:非法加速、无支撑移动、穿墙。
Timer, TimerLimit, NegativeTimer, VehicleTimer — 记录客户端内部时间的加速。这是用于快速使用物品和射箭的 Mod 构建的基础。检测阈值约为正常速度的 1.005 倍 — 比大多数免费替代品更准确。
NoFall — 跌落状态欺骗。Mod 发送虚假的 onGround=true 以取消跌落伤害;此检查项会发现这一点。
Phase — 穿过固体方块的移动。这是允许穿墙或进入保护区的 Mod 的基本行为。
战斗 (Combat)
Reach — 超出允许距离的攻击。
Hitboxes — 未击中目标真实碰撞箱的攻击。
Knockback, Explosion — 客户端忽略来自打击或爆炸的动量。
Aim, Interact — 击打前不正确的头部旋转,物理上不可能的交互。
数据包与方块放置 (Packets and Block Placement)
BadPackets, PacketOrder, Crash — 错误的数据包顺序,尝试使用故意格式化的数据包使服务器崩溃。
NoSlow — 玩家在进食、射箭、使用盾牌或在蜘蛛网中爬行时不会减速。
方块放置检查组 — 记录在没有物理能力的情况下放置方块的行为:距离太远、方向不可达、悬空无支撑。
Baritone — 自动化助手机器人的移动模式。
Exploit — 特定的漏洞利用,例如在鞘翅上滥用冲刺跳跃 (Sprint-Jump)。
基本管理员命令
命令 | 目的 |
| 带有简短描述的命令列表 |
| 在聊天中打开或关闭警报 |
| 无缓冲和阈值地显示每个标志 (flag) |
| 客户端版本、品牌 (Vanilla/Fabric/Lunar/Forge)、鼠标灵敏度、FastMath 状态 |
| 来自数据库的分页会话和违规记录 |
| 进入旁观者模式并传送到该玩家 |
| 返回到先前的位置 |
| 下载特定标志 ID 的调试日志 |
| 重新加载所有配置,重置活动违规 |
| 开发者模式:预测与带有偏移量的实际移动 |
| 在不等待实际违规的情况下测试 Discord webhook |

聊天中 /grim profile 命令的输出 — 客户端版本、品牌、鼠标灵敏度以及玩家的 FastMath 状态
警报与惩罚
每个检查项都有自己的违规计数器,它会随着时间的推移逐渐减少。这很关键:短暂的延迟 (lag) 或随机错误不会累积成永久封禁,只有在稳定的违规时才会触发反应。反应本身由管理员设置 — 对于每组检查,规定了在发生哪次违规时以及执行命令的频率。
逻辑如下:指定触发反应的违规次数,以及随后的重复频率(间隔)。条目 100:0 kick %player% 表示玩家将在整整第一百次违规时被踢出,并且该命令不会再次执行。条目 5:3 [alert] 将在第五次违规时触发,然后在第八次、第十一次触发,依此类推 — 警报将发送到拥有权限的玩家的游戏内聊天中。
命令的位置可以由 Grim 本身的特殊标签([alert] — 聊天中的消息,[log] — 控制台和数据库中的记录,[webhook] — 发送到 Discord,[proxy] — 传输到其他后端服务器)或来自服务器的任何控制台命令填充。可用变量包括玩家昵称、检查名称和违规次数 — 这些都是标准的占位符。多亏了这一点,Grim 无需额外的桥接即可连接到外部封禁插件。
Discord Webhooks
为了向 Discord 发送警报,GrimAC 具有内置的集成。消息的外观是完全可定制的 — 从嵌入 (embed) 的颜色到要显示的字段。在完成的消息中,您可以看到玩家的昵称、检查名称、违规次数、客户端版本和品牌、当前 ping 值以及事件发生时服务器的 tps。Discord 中的普通频道和论坛频道均受支持。应提前检查配置 — /grim testwebhook 命令将发送测试消息,而无需等待实际的违规。
不兼容的客户端 Mod
官方 Wiki 维护了一个单独的 Mod 列表,这些 Mod 要么破坏原版机制,要么会引发误报 (false-positive)。该列表并不详尽 — 它会在插件 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 被视为违规之前的方块偏移阈值。值越小 — 越严格,在出现延迟 (lag) 时误报就越多。 |
| 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 的新版本具有抵抗力。真正的局限性:没有针对自瞄(aimbots - 基于鼠标运动)或自动点击(auto-clickers - 基于点击频率)的启发式检查 — 这些功能已在尚未发布的 Premium 分支中承诺。GrimAC 适用于有真正动机安装未授权 Mod 的服务器 — PvP 竞技场、迷你游戏网络、资源昂贵的生存服务器、无政府状态 (anarchy) 服务器。对于一个有 10 个朋友的小型创造性生存服务器来说,该插件有些大材小用了 — 如果没有严重的违规风险,预测引擎只会浪费服务器资源。
安装
一次典型安装大约 5 分钟。流程相同,只是 Loader 和对应构建不同。
- 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.











