HeadlessNH
[!INFO] Git Commit:
4eea6e6| Updated: 2026-06-27
HeadlessNH(modid headlessnh)是一个客户端集成测试自动化框架,不是「服务器不渲染」的 mod。它运行在客户端,把 1.7.10 的 GUI 自动点一遍(主菜单 → 服务器直连 / 单人世界 → 世界加载完成),并向磁盘写出**标记文件(marker)供外部 CI 编排器判断进度;可选的闸门文件(gate)**还能让流程停在某一步,直到编排器放行,从而一步一步推进测试。
因此它的作用是:在没有人工干预的无人值守环境里驱动客户端跑完加载流程,供 CI 做冒烟测试。
核心设定
- 不注册任何 Block / Item / TileEntity / 实体,
CommonProxy与ClientProxy的四个生命周期方法全是空实现(源码里带(Remove if not needed)注释)。 - 全部功能通过 5 个 Mixin + 1 个 coremod 加载器实现,附带一个 access transformer。
- 配置全部走 17 个 JVM system property(
-Dheadlessnh.*),没有 .cfg / .json 配置文件。 - 目标 mod(Angelica、Custom Main Menu)用于适配不同的主菜单与世界渲染器。
自动化
标记与闸门文件
- Marker 与 Gate 文件 - 3 个标记文件与 3 个闸门文件的命名、目录、轮询间隔与超时语义
阶段状态机
- Stage 状态机 - MULTIPLAYER → SINGLEPLAYER → DONE 的推进逻辑、连接失败重试与拆除世界
系统属性
- System Properties - 全部 17 个
headlessnh.*系统属性、默认值与生效范围
Mixin
Minecraft 菜单驱动
- MinecraftMixin - 主入口:监听
displayGuiScreen自动点击主菜单/世界选择/多人/直连/断开/暂停菜单
世界加载检测
- 世界加载检测 -
WorldRendererMixin与 Angelica/Celeritas 下的CeleritasWorldRendererMixin
窗口焦点
- 失焦暂停菜单抑制 -
EntityRendererMixin强制关闭原版的「失焦 500ms 开暂停菜单」
Custom Main Menu 适配
- Custom Main Menu 适配 -
GuiCustomMixin,在 lumien 的自定义主菜单里改走ActionOpenGUI
加载器与 AT
- Mixin 加载与 Access Transformer - coremod
EarlyMixinLoader、3 个 mixin 配置与 12 条 AT 规则
源码
Git commit: 4eea6e6