Horizon QA
[!INFO] Git Commit:
e05abc0| Updated: 2026-10-02
Horizon QA 是 GTNewHorizons 的 1.7.10 GameTest 框架——把现代 Minecraft 的 GameTest 机制回移到
Forge 1.7.10,让模组作者可以在真实服务端环境里写结构化测试、多方块测试与 CI 回归测试。
源码仓库 GTNewHorizons/Horizon-QA,mcmod.info 自述为
「A 1.7.10 backport of the modern Minecraft GameTest framework」。
它不是内容模组。 整个模组只注册 1 个物品(Horizon Wand 结构编辑工具),
0 个方块、0 个 TileEntity、0 个实体、0 个合成配方。它的真实内容面是
测试注解 API + 运行调度器 + 报告输出 + 客户端可视化编辑器,共 220 个 .java 源文件。
[!IMPORTANT] modid 与本分类名不同:源码中
@Mod(modid = HorizonQAMod.MODID), 而HorizonQAMod.java:23声明MODID = "horizonqa"—— modid 是horizonqa(无连字符), 本 wiki 分类名horizon-qa只是按驼峰转 kebab-case 规则从仓库名Horizon-QA推导而来。 实际使用中物品注册名是horizonqa:wand,语言键前缀是horizonqa.,网络频道名是horizonqa。 资源域同样是horizonqa而非horizon_qa。
模组通过运行时注解 + FML ASMDataTable 自动发现测试(@GameTestHolder / @GameTest),
无需中心注册表。运行行为由 13 个 JVM 系统属性(-Dhorizonqa.*)控制,分
off / interactive / ci 三种模式;ci 模式支持 turbo 加速(最高 100×)、
虚空世界、批量报告输出与进程退出码,常用于持续集成。interactive 模式则提供
Horizon Wand、结构模板编辑导出与 Horizon Editor 自由相机可视化。
源码语言为纯 Java(220 个 .java,0 个 .scala,0 个 .kt)。
另有 5 个 Mixin 注入 MinecraftServer / DedicatedServer / NetHandlerPlayServer /
ItemStack / FMLCommonHandler,以及 1 个 1.7.10 版本的 IFMLLoadingPlugin
(asm/HorizonQALoadingPlugin.java,其 getASMTransformerClass() 等方法均返回 null,
即占位声明、不实际参与字节码转换)。
[!NOTE] 仓库内的
examples/是 Gradle 子项目,包含一个独立的示例模组com.gtnewhorizons.horizonqa.examples.ExamplesMod(自带@Mod注解与独立mcmod.info)。 它不是 Horizon-QA 本体,本 wiki 各页均未计入其内容。
配置列表
- JVM 系统属性 - 13 个
-Dhorizonqa.*开关,含运行模式、世界策略、turbo、报告路径
指令列表
- /horizonqa 指令 - 13 个子指令(别名
/qa,权限等级 2),覆盖运行控制、定位调试与结构编辑
物品列表
- Horizon Wand -
horizonqa:wand,结构选区与坐标标签编辑器,模组注册的唯一物品
API 列表
- 测试注解与发现 -
@GameTest/@GameTestHolder等 5 个注解,ASM 自动发现测试 - GameTestHelper API - 68 个公开方法:断言、世界操作、序列与流程控制
- GTNH 多方块 API - 面向 GregTech 机器的 20 个扩展方法与
GT5UnofficialAdapter反射适配层 - 测试事件日志 - 37 个事件类型,按发出顺序回看测试内的机器行为
测试运行列表
结构列表
- 结构模板与导出 - 混合格式模板(JSON 方块 + NBT 实体)的加载、放置与导出
界面列表
- Horizon Editor - F10 开启的自由相机编辑器,3 种变换工具 + 标签面板
- HUD 与渲染器 - 18 个客户端渲染文件、2 个键位与语言文件