Lightning Grim Anticheat该项目是 GrimAC 的一个分支,实现了显著的性能提升,以及更优秀的 reach、方块放置和交互检测。如果你希望修复某个 bug 或添加某项增强功能,但无法赞助这项工作,欢迎提交 pull request。
GrimAC 是一个开源的 Minecraft 反作弊,专为 1.21.5 设计,并支持 1.8-1.21.5。它可以运行在 1.8-1.21.5 上,并且无论原生服务端版本是什么,都完整支持通过 ViaVersion 在 1.7-1.21.x 上连接的玩家。Geyser 玩家将被完全豁免。
上游目前没有的改动(包括但不限于)- WallHit - 检测隔墙攻击
- EntityPierce - 检测穿过其他实体进行攻击
- Bukkit Event Piston Optimizations
- 优化的 Hitbox/Collision Boxes
- 优化的 Reach 计算
- 检测 PacketOrder(修复大量 noslow、autoblocks 等问题……)
- 检测 Inventory 交互(防止将合成栏当作额外存储空间、在打开背包时移动等……)
- ~~LineOfSightPlace - 检测方块放置/容器交互是否处于玩家视线范围内。可阻止隔墙放置方块、打开箱子,或朝玩家未注视的方向进行操作。~~
通过 terminal/command prompt 编译API 信息Grim 的 API 允许你将 Grim 集成到你自己的插件中。更多信息请查看 API 的 GitHub 仓库:
here。
Grim 的优势以下是让 Grim 在其他反作弊中脱颖而出的核心内容
移动模拟引擎- 我们对玩家所有可能的移动进行了 1:1 复刻
- 这涵盖了从基础行走、游泳、击退、蜘蛛网到气泡柱的一切
- 甚至还包括骑乘实体,从船到猪再到炽足兽
- 基于对各种边缘情况的覆盖来确保准确性
- 1.13+ 客户端连接 1.13+ 服务端、1.12- 客户端连接 1.13+ 服务端、1.13+ 客户端连接 1.12- 服务端,以及 1.12- 客户端连接 1.12- 服务端,这些情况都能被支持,尽管这些版本之间存在巨大的技术差异。
- 碰撞的处理顺序取决于客户端版本,并且是正确的
- 考虑到了不同版本间细微的边界框差异,例如:
- 单个玻璃板对 1.7-1.8 玩家来说会是 + 形,而对 1.9+ 玩家来说会是 * 形
- 由于 ViaVersion,1.13+ 客户端在 1.8 服务端上看到的玻璃板 hitbox 会是 + 形
- 还有许多其他方块也做到了这种极致的细节处理。
- 含水方块对 1.12 及以下玩家并不存在
- 客户端版本中不存在的方块会使用 ViaVersion 的替代方块
- 无法翻译到旧版本的方块数据会被正确替换
- 所有原版碰撞箱都已实现
完全异步且多线程的设计- 所有移动检测以及绝大多数监听器都运行在 netty 线程上
- 该反作弊可以扩展到数百名玩家,甚至更多
- 线程安全经过了精心设计
- 下一个核心正是支持这种设计的基础
完整的世界复制- 该反作弊会为每位玩家维护一个世界副本
- 该副本通过监听区块数据包、方块放置和方块变化来创建
- 在所有版本上,区块都通过 palettes 被压缩到每区块 16-64 kb
- 使用该缓存后,反作弊可以安全地访问世界状态
- 对每位玩家而言,这个缓存支持多线程设计
- 通过数据包向玩家发送假方块是安全的,不会导致误报
- 世界会为每位玩家单独重建,以实现延迟补偿
- 客户端侧方块不会对基于数据包的方块造成问题。方块 glitch 不会让反作弊误报。
延迟补偿- 世界变化会被排队,直到它们到达玩家
- 这意味着在玩家脚下破坏方块不会导致反作弊误报
- 从飞行状态到移动速度的一切都会进行延迟补偿
背包补偿- 会跟踪玩家的背包,以防止高延迟下出现 ghost blocks 和其他错误
通过设计保证安全,而不是依赖混淆- 所有系统都被设计为高度安全,并且在数学上无法被绕过
- 例如,预测引擎知道所有可能的移动方式,因此无法被绕过
- 【补☞刚刚没写完】