# GrimAC
GrimAC 是一个免费开源的 Minecraft 抗作弊插件,旨在支持 Minecraft 的最新版本。目前支持 Minecraft 版本 1.8-1.21。 Geyser 玩家完全豁免。
本项目 2.0(开源)分支被认为是功能完善的。如果您需要错误修复或增强功能,且无法赞助该项目,欢迎提交拉取请求。计划推出一个高级版本,将提供额外的基于订阅的付费检查,例如启发式算法。
## 安装说明
- **现在需要 Java 17。** 更多信息 [这里](https://github.com/GrimAnticheat/Grim/wiki/Updating-to-Java-17)。
- 目前支持 Paper、Spigot 和 Folia。
- 如果您使用 Geyser,请将 Floodgate 放在后端服务器上,以便 grim 可以豁免 Bedrock 玩家。如果 Floodgate 在代理服务器上,grim 无法访问 Floodgate API。
- 如果您使用 ViaVersion,它应该在后端服务器上,因为移动高度依赖于客户端版本。
## 支持 & wiki 信息
- 支持 & 讨论:[Discord](https://discord.grim.ac)
- 报告问题:[Issues](https://github.com/GrimAnticheat/Grim/issues/new/choose)
- Wiki & 示例:[Wiki](https://github.com/GrimAnticheat/Grim/wiki)
## 开发者 API
Grim 的 API 允许您将 Grim 集成到您自己的插件中。
- API 仓库:[GrimAPI](https://github.com/GrimAnticheat/GrimAPI)
- Wiki 信息:[Wiki](https://github.com/GrimAnticheat/GrimAPI)
## 如何编译
1. `git clone https://github.com/GrimAnticheat/Grim.git`
2. `cd Grim`
3. `./gradlew build`
4. 最终的 jar 将编译到 build/libs 文件夹中
## 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+ 玩家的 * 形状
* 1.13+ 客户端在 1.8 服务器上由于 ViaVersion 会看到 + 玻璃板的碰撞框
* 许多其他方块具有这种极端的细节关注。
* 水笼罩的方块不能用于 1.12 或更低版本的玩家
* 客户端版本中不存在的方块使用 ViaVersion 的替换方块
* 无法翻译到先前版本的方块数据被正确替换
* 所有原始碰撞框都已实现
### 完全异步和多线程设计
* 所有移动检查和绝大多数监听器都在 netty 线程上运行
* 抗作弊可以扩展到数百名玩家,甚至更多
* 线程安全经过仔细考虑
* 下一个核心允许这种设计
### 全局世界复制
* 抗作弊为每个玩家维护一个世界副本
* 副本由监听区块数据包、方块放置和方块更改创建
* 在所有版本上,区块被压缩到每个区块 16-64 kb
* 使用此缓存,抗作弊可以安全地访问世界状态
* 每个玩家,缓存允许多线程设计
* 发送玩家带有包的虚假方块是安全的,不会导致虚假结果
* 为了允许延迟补偿,为每个玩家重新创建世界
* 客户端方块不会因基于包的方块而导致问题。方块故障不会导致抗作弊产生虚假结果。
### 延迟补偿
* 世界更改会延迟直到到达玩家
* 这意味着在玩家下方破坏方块不会导致抗作弊产生虚假结果
* 从飞行状态到移动速度的一切都会进行延迟补偿
### 物品栏补偿
* 跟踪玩家的物品栏以防止高延迟时的虚假方块和其他错误
### 安全设计,而非隐蔽
* 所有系统都旨在具有高度安全性,并且在数学上不可能被绕过
* 例如,预测引擎知道所有可能的移动方式,并且无法被绕过