[MD]
# NekoAC — 让腐竹睡个安稳觉的反作弊 Mod
你是一名 Minecraft 服务器腐竹。你热爱这个社区,每天熬夜修插件、调配置、写公告。然后你发现有人开着透视材质包在 PVP 里乱杀,有人换小号绕过 ban,有人不装你的客户端 mod 直接裸连进来。
你累了。
NekoAC 是我为了结束这种折磨而写的。它不是一个万能的树风反作弊,但至少防住了一部分挂钩
---
## 它能干什么
### 你装了 NekoAC 吗?没装就滚
这是 NekoAC 的核心逻辑。客户端和服务端在握手阶段交换 challenge token,客户端必须正确回显。如果你的客户端没有装 NekoAC——对不起,门都没有。
而且不止握手验证一次。进入游戏后,每 30 秒服务端会发一个心跳包,5 秒内没收到回复直接踢。你想进服之后把 mod 卸了?你想得太美了。
### HWID 硬件指纹
采集 CPU 序列号、磁盘序列号、MAC 地址哈希,加上盐值做 SHA-256。这不是那种改个用户名就能绕过的 ban。你被 ban 了就是这台电脑被 ban 了。
当然,腐竹也可以 `/nekoac whitelist` 加白名单,或者 `/nekoac trust 玩家名` 一键信任。
### 小号检测
一个 HWID 绑定一名玩家。换号登入?直接踢。我知道有些玩家家里有多台电脑或者用虚拟机——但目前这个版本,我只能说声抱歉。
(你问我以后会不会加虚拟机检测?看情况。看社区反馈。)
### 模组白名单
客户端启动时会自动扫描已加载的 mod 列表,生成 `Neko_Modlist.cfg`。你把这份文件放到服务器的 `config/nekoac/` 目录下,从此只有和你的模组列表完全一致的客户端才能进服。
modid、版本号、JAR 文件 SHA-256 三项全都校验。少一个不行,多一个也不行。哈希对不上不行。
你觉得 Create 太卡想 ban 掉?直接把 Create 从 cfg 里删了就行。
### 材质包白名单
一样的逻辑,客户端扫 `resourcepacks` 文件夹,生成 `Neko_RespackList.cfg`。服务端加载后,客户端多出来的材质包一律拒绝,哈希不匹配也拒绝。
你可能会问:"那我服务器上允许的材质包比玩家少怎么办?"——允许。客户端可以比白名单少,不能多。
### 光影白名单
逻辑和材质包一样。扫 `shaderpacks` 文件夹,生成 `Neko_Shaders.cfg`。只允许少不允许多。
### 锁国区
双重检测:
第一层,服务端用 IP 查 ip-api.com,IP 不在中国直接拦截。
第二层,NekoAC 客户端会上报系统语言、MC 语言、是否安装了中文字体。(学的Claude)
### Gamma 值检测
每 tick 检查亮度值,超过 1.0 直接踢。
### 碰撞箱开关禁止
`/nekoac hitbox on` 之后,客户端无法通过 F3+B 打开碰撞箱。打枪战的服务器应该都懂这个有多重要。
### 防透视(实验性)
服务端每 1 秒对每对玩家做 9 条射线追踪——目标包围盒的 8 个角加中心点。所有射线都被非透明方块挡住的话,服务端直接向客户端发送移除该实体的数据包。
是的,这会让 CPU 多干点活。但你的玩家再也没法隔墙看到人了。斟酌着开。
### JVM 参数检测
`-javaagent`、`-agentlib`、`-Xrunjdwp`、`-Xdebug`——只要你的 JVM 启动参数里有这些东西,NekoAC 直接弹窗拒绝进服。
被误判了?你把启动器的"默认 Java 虚拟机参数"和"Java 虚拟机优化参数"两个选项关掉就行了。正经启动器都有这两个开关。
### 发包加密防 MITM
握手阶段从 token 派生出 AES-256 密钥,后续的 HWID 上报、封禁通知等关键数据包全都走 AES/GCM 加密。你抓包看到的一堆 base64 乱码,反正是看不懂的。
不装 NekoAC 的客户端?先不说能不能解密——它连握手都过不了。
### 单人游戏拦截
别想在单人世界里测试你的外挂配置。Mixin 直接拦截 `doWorldLoad`,点了单人游戏就弹窗。
---
## 管理命令
所有命令需要 OP 权限(level 4):
```
/nekoac ban hwid <hash> 封禁一个 HWID
/nekoac unban hwid <hash> 解封
/nekoac whitelist hwid <hash> 加入 HWID 白名单
/nekoac trust <玩家名> 将在线玩家的 HWID 加入白名单
/nekoac reload 重新加载模组白名单
/nekoac list bans 查看封禁列表
/nekoac list whitelist 查看白名单
/nekoac regionlock on/off 锁国区开关
/nekoac hitbox on/off 碰撞箱开关
/nekoac wallhack on/off 防透视开关
/nekoac debugblock on/off JVM 调试检测开关
```
---
## 配置
所有配置文件在服务器的 `config/nekoac/` 目录下:
| 文件 | 作用 |
|------|------|
| `nekoac_config.json` | 主配置文件(锁国区/碰撞箱/防透视/JVM检测) |
| `nekoac_hwid.json` | HWID 黑名单和白名单 |
| `nekoac_bindings.json` | HWID-玩家名绑定(小号检测) |
| `Neko_Modlist.cfg` | 模组白名单(由客户端生成) |
| `Neko_RespackList.cfg` | 材质包白名单(由客户端生成) |
| `Neko_Shaders.cfg` | 光影白名单(由客户端生成) |
---
## 安装
客户端和服务端都要装。下载 `nekoac-1.0.jar` 放入 `mods/` 文件夹。
还需要 [KotlinForForge](https://www.curseforge.com/minecraft/mc-mods/kotlin-for-forge) 作为前置。
[/MD]