Horizon-QA JVM 系统属性

基本信息

属性 值
所属模组 Horizon-QA(modid horizonqa)
入口类 com.gtnewhorizons.horizonqa.HorizonQAProperties
属性前缀 horizonqa.
读取位置 com.gtnewhorizons.horizonqa.HorizonQAProperties.java:32(PARSED = parse(),类加载时一次性解析)
属性数量 13

[!NOTE] 全部通过 JVM -D 传入,例如 -Dhorizonqa.mode=ci。不是 Forge 配置文件项。

功能

Horizon-QA 的行为开关全部是 JVM 系统属性。HorizonQAProperties 在类加载时调用 parse() 解析一次, 结果存入静态 PARSED 记录,后续所有读取都是访问该不可变快照(HorizonQAProperties.java:32)。 解析器同时收集 PropertyIssue 列表,CommonProxy.preInit 会把致命问题打到日志 (CommonProxy.java:41-55)。

运行模式

-Dhorizonqa.mode 接受三个小写字面量,由 parseMode() 解析(HorizonQAProperties.java:400-422):

取值 枚举 效果
off Mode.OFF isOff() 为真,服务端启动时直接返回,测试发现与指令注册全部跳过(CommonProxy.java:99)
interactive Mode.INTERACTIVE 默认值。启用客户端可视化、Horizon Wand 编辑器、交互式指令
ci Mode.CI 无头 CI 模式,启用自动运行、虚空世界与报告输出
  • 枚举定义 Mode { OFF, INTERACTIVE, CI }:HorizonQAProperties.java:682-686
  • 未设置时默认 interactive:parseMode 在 raw == null 时返回 Mode.INTERACTIVE(HorizonQAProperties.java:400-402)
  • 非法值:回退为 Mode.OFF 并产生一个 fatalInCi 的配置问题,错误信息为 Invalid -Dhorizonqa.mode=<值> (expected one of: off, interactive, ci)(HorizonQAProperties.java:415-421)

全部属性

属性名 解析函数 默认值 说明
horizonqa.mode parseMode interactive 运行模式,见上表
horizonqa.world parseWorldPolicy ci 时为 void,否则 normal 世界策略,WorldPolicy { VOID, NORMAL }(HorizonQAProperties.java:688-691)
horizonqa.autoRun defaultAutoRun ci 为 true,否则 false 服务端启动时自动开跑
horizonqa.stopServer defaultStopServer mode == CI && autoRun 跑完后自动关服并以退出码结束进程
horizonqa.turbo parseTurboMultiplier 1 每游戏 tick 内的服务端 tick 倍率,有效范围 1–100(MAX_TURBO_MULTIPLIER,HorizonQAProperties.java:29);由 MixinMinecraftServer 重定向 MinecraftServer.tick() 生效
horizonqa.gridOrigin — 0,64,0 测试网格原点(DEFAULT_GRID_ORIGIN,HorizonQAProperties.java:30)
horizonqa.tests — 空 测试选择器列表;selectsAllTests() 为真时运行全部
horizonqa.allowNoTests — false 允许选中测试为空而不报基础设施错误(CommonProxy.java:112-118)
horizonqa.allowLegacyNumericItemIds — false 放行结构数据中的数字 ItemStack ID;仅在 interactive 模式的 /horizonqa load 迁移时生效,测试执行始终严格(CommonProxy.java:56-67,HybridStructureLoader.java:50-56)
horizonqa.reportFile parsePathProperty — JUnit XML 报告完整路径
horizonqa.reportDir parsePathProperty — 报告目录;设置后两个报告的默认文件名落在其下
horizonqa.statusFile parsePathProperty — 状态 JSON 报告完整路径
horizonqa.events parseEvents true 是否记录测试事件日志(HorizonQAProperties.java:646-649)

属性名常量集中定义于 HorizonQAProperties.java:13-25。

数值

数值名 值 来源
属性总数 13 HorizonQAProperties.java:13-25
默认模式 interactive HorizonQAProperties.java:400-402
turbo 最小值 / 最大值 1 / 100 HorizonQAProperties.java:29、443-445
turbo 默认值 1 HorizonQAProperties.java:436-438
网格默认原点 0, 64, 0 HorizonQAProperties.java:30
JUnit 报告默认文件名 TEST-horizonqa.xml HorizonQAProperties.java:27
状态报告默认文件名 horizonqa-result.json HorizonQAProperties.java:28
模式枚举值数 3(OFF / INTERACTIVE / CI) HorizonQAProperties.java:682-686
世界策略枚举值数 2(VOID / NORMAL) HorizonQAProperties.java:688-691

报告路径解析优先级(HorizonQAProperties.java:200-227):显式 reportFile / statusFile 优先; 其次 reportDir + 默认文件名;最后默认文件名落在服务器工作目录下。

交互

Forge 配置文件由 event.getSuggestedConfigurationFile() 提供给 Config.synchronizeConfiguration (CommonProxy.java:37),但 Config.java 中只有一个 greeting 字符串项 (Config.java:13),启动时被打到日志(CommonProxy.java:39)。所有实质开关都在上表的 -D 属性里。

preInit 还会按当前属性打印一行解析摘要:世界策略、autoRun、stopServer、turbo、网格原点、 交互特性开关(CommonProxy.java:42-50)。

相关条目

  • /horizonqa 指令 - 各子指令在 interactive 与 ci 模式下的可用性差异由上表模式决定
  • Horizon Wand - 交互式可视化功能仅在 interactive 模式启用