HUD 与渲染器
基本信息
| 属性 | 值 |
|---|---|
| 包路径 | com.gtnewhorizons.horizonqa.visual |
| 渲染器文件总数 | 18(根目录 8 + drawables 4 + editor 6) |
| 注册位置 | ClientProxy.init(ClientProxy.java:23-35) |
| 模式门控 | 仅 interactive 模式(ClientProxy.java:21-22) |
| 键位数量 | 2 |
| 语言文件 | assets/horizonqa/lang/en_US.lang(1 个) |
| 键位分类 | key.categories.horizonqa = Horizon QA |
功能
Horizon-QA 的客户端可视部分由 9 个渲染器、2 个键位与 1 个语言文件构成。
全部只在 interactive 模式注册(见 Horizon Editor 同款门控)。
渲染器清单
visual/ 根目录 8 个(ls src/main/java/com/gtnewhorizons/horizonqa/visual/*.java):
| 类 | 注册于 | 作用 |
|---|---|---|
WandHudOverlay |
ClientProxy.java:33 |
手持 Wand 时的 HUD(模式、Pos1/Pos2、尺寸、标签数) |
WandLabelRenderer |
ClientProxy.java:34 |
世界内标签文字渲染 |
GameTestOverlayRenderer |
ClientProxy.java:32 |
测试格 / 测试状态覆盖层 |
SelectionOutlineClientRenderer |
ClientProxy.java:31 |
选中方块轮廓 |
SelectionBoxRenderer |
CommonProxy.java:82 |
选区线框 |
VisualManager |
— | 客户端可视化状态总控,被 clearAll 回调使用(ClientProxy.java:35) |
WandLabelInput |
ClientProxy.java:24-26 |
标签键的客户端 tick 监听 |
WandLabelPrompt |
— | 标签输入弹窗 |
[!NOTE]
SelectionBoxRenderer是唯一在CommonProxy.preInit注册的服务端侧渲染器, 且带模式门控if (HorizonQAProperties.isActive())(CommonProxy.java:81-83)——isActive()覆盖INTERACTIVE与CI两种模式,与其他只认interactive的客户端组件不同。
visual/drawables/ 4 个可绘制基元(DebugBeacon FloatingText GhostBlockDiff HighlightBox)
为上述渲染器提供绘制元素。
键位
2 个键位,均注册在 key.categories.horizonqa 分类下(en_US.lang:74-76):
| 键位 | 键名 | 默认键 | 注册位置 |
|---|---|---|---|
| 标签键 | key.horizonqa.label |
L |
WandLabelInput.java:19-22、24-26 |
| 自由相机键 | key.horizonqa.freecam |
F10 |
WandFreecamController.java:55-58、108-110 |
标签键的处理在 ClientTickEvent 的 END 阶段轮询 isPressed()(WandLabelInput.java:29-33)。
打开标签输入框的前置条件:Minecraft 实例与玩家存在、当前无 GUI、自由相机未激活、手持 Wand
(WandLabelInput.java:37-40)。
HUD 显示内容
WandHudOverlay 显示的行(en_US.lang:10-21):
| 行 | 键 |
|---|---|
| 模式 | horizonqa.wand.hud.mode(SURFACE / BLOCK 两种) |
| Pos1 | horizonqa.wand.hud.pos1,未设为 — |
| Pos2 | horizonqa.wand.hud.pos2,等待中显示 aim & right-click |
| 尺寸 | horizonqa.wand.hud.size,格式 %s×%s×%s (%s) |
| 标签 | horizonqa.wand.hud.labels,选区外的标签额外标 (N outside) |
| 标签键提示 | horizonqa.wand.hud.label_key |
| 自由相机键提示 | horizonqa.wand.hud.freecam_key |
其中 surface / block 模式对应 Wand 的表面模式:潜行点击时坐标是否沿面法线外推一格
(ItemHorizonWand.java:64-68)。
语言文件
assets/horizonqa/lang/en_US.lang 覆盖物品名、指令消息、Wand 提示、HUD、标签弹窗、
编辑器界面与键位共 4 组前缀(item.horizonqa.* / horizonqa.command.* /
horizonqa.wand.* / key.horizonqa.*),共 77 行。
数值
| 数值名 | 值 | 来源 |
|---|---|---|
visual 包文件总数 |
9(根 8 + drawables 4 + editor 6,含 editor 6 计在内时目录文件共 18) |
ls visual/ 分目录统计 |
| 键位数量 | 2 | ClientProxy.java:24-25、en_US.lang:75-76 |
drawables 基元数量 |
4 | ls src/main/java/com/gtnewhorizons/horizonqa/visual/drawables/ |
editor 类数量 |
6 | ls src/main/java/com/gtnewhorizons/horizonqa/visual/editor/ |
| 语言文件行数 | 77 | wc -l assets/horizonqa/lang/en_US.lang |
| 语言文件数量 | 1(仅 en_US.lang) |
ls assets/horizonqa/lang/ |
目录计数
| 目录 | 文件数 |
|---|---|
visual/*.java(根) |
8 |
visual/drawables/ |
4 |
visual/editor/ |
6 |
| 合计 | 18 |
交互
- 所有客户端组件在
ClientProxy.init一次性注册,其中前 6 个挂到MinecraftForge.EVENT_BUS,WandLabelInput与WandFreecamController额外挂到FMLCommonHandler.bus()(ClientProxy.java:24-34) ClientProxy继承CommonProxy,init先调super.init(event)完成网络通道初始化 (ClientProxy.java:20、CommonProxy.java:86-88)- 执行
/horizonqa clearall时,客户端通过InteractiveTestSession.onClearAllCallback回调VisualManager::clearAll清理残留可视化(ClientProxy.java:35)
相关条目
- Horizon Editor - 自由相机与选区变换界面
- Horizon Wand - HUD 与标签渲染的数据来源
- JVM 系统属性 -
interactive模式门控 - /horizonqa 指令 -
clearall触发客户端清理