GUI Screens
基本信息
| 属性 | 值 |
|---|---|
| GUI 枚举 | gcewing.sg.guis.SGGui(guis/SGGui.java:9-15),5 个值 |
| 容器注册 | SGCraft.registerContainers(SGCraft.java:327-331)+ OC 一条(compat/oc/OCIntegration.java:68-70) |
| 界面注册 | SGCraftClient.registerScreens(SGCraftClient.java:28-33)+ OC 一条(compat/oc/OCIntegration.java:72-75) |
| GUI 处理器 | NetworkRegistry.INSTANCE.registerGuiHandler(this, proxy)(BaseMod.java:149) |
| 资源域 | 贴图在 assets/sgcraft/textures/gui/,即资源域 sgcraft(非注册域 gcewing_sg) |
功能
SGGui 用枚举序号作为 GUI id,addContainer(id.ordinal(), cls) / addScreen(id.ordinal(), cls) 直接用 ordinal(BaseMod.java:405、BaseModClient.java:130),因此枚举顺序即协议 id,插入新值会破坏存档兼容性。
5 个枚举值中只有 4 个有界面类;SGGui.OCInterface(序号 4)的界面由 OC 子系统在运行期追加。
数值
| 枚举 | 序号 | 容器 | 界面 | 尺寸 | 触发方块 |
|---|---|---|---|---|---|
SGBase |
0 | SGBaseContainer |
SGBaseScreen |
256 × 208 | Stargate Base |
SGController |
1 | 无独立容器 | DHDScreen |
自定义 | Stargate Controller 上半 |
DHDFuel |
2 | DHDFuelContainer |
DHDFuelScreen |
256 × 208 | 同上,下半 |
PowerUnit |
3 | PowerContainer |
PowerScreen |
128 × 64 | 能量单元 |
OCInterface |
4 | OCInterfaceContainer |
OCInterfaceScreen |
176 × 125 | OC 星门接口 |
PowerUnit 的枚举值带注释 /* IC2 */(guis/SGGui.java:13),但它同时服务 IC2 与 RF 两个方块——RF 分支没有单开枚举值。
交互
SGBase —— 星门地址界面
- 打开时计算本门地址并自动写入系统剪贴板(
guis/SGBaseScreen.java:41)。 - 背景贴图
textures/gui/sg_gui.png,地址符号用symbols48.png绘制在 y=22(guis/SGBaseScreen.java:51、:55)。 - 标题与格式化地址分别画在 y=8 与 y=72(
guis/SGBaseScreen.java:57-58)。 - 容器 256×208,5 个伪装槽单列排在 (48, 104)(
guis/containers/SGBaseContainer.java:28、:35),每槽限 1 个(guis/containers/slots/CamouflageSlot.java:13-15)。 - 操作通过 Packet Channel 的
ConnectOrDisconnect发送。 doesGuiPauseGame()返回false——单人游戏下开门不会暂停(guis/SGBaseScreen.java:45-47)。
DHDFuel —— 控制器燃料界面
- 4 个燃料槽排成 2 列 2 行,起始 (174, 84)(
guis/containers/DHDFuelContainer.java:20-22、:44-49)。 - 燃料槽由
FuelSlot限制为只接受硅岩(guis/containers/slots/FuelSlot.java:15-17)。 - 右侧能量条:宽 16、高 34,位于 (214, 84),填充高度 =
34 * energyInBuffer / DHDTE.maxEnergyBuffer(guis/screens/DHDFuelScreen.java:26-31、:59-61)。 - 输入地址通过
EnteredAddress消息发给服务端(packets/SGChannel.java:55-61)。
PowerUnit —— 能量单元界面
128×64,贴图 power_gui.png(guis/screens/PowerScreen.java:48-49),显示能量条与 Max %s 文本(guis/screens/PowerScreen.java:61)。容器不加任何槽(guis/containers/PowerContainer.java:30-33)。
OCInterface —— OC 星门接口界面
176×125,贴图 gui/oc_sg_interface_gui.png(compat/oc/OCInterfaceScreen.java:24),1 个网卡槽位于 (8, 17)(compat/oc/OCInterfaceContainer.java:22-23、:31),只接受 OC 网卡(compat/oc/UpgradeSlot.java:14-16)。
无 GUI 的方块
CC 星门接口 没有 GUI:SGGui 无对应枚举值,CCIntegration 也不覆写 registerContainers / registerScreens。其 BaseBlock.onBlockActivated 查 getGuiId(te.getClass()) 得到 -1 后返回 false(blocks/base/BaseBlock.java:424-435),因此右键无反应。这是模组的既定设计(CC 走外设 API,不需 GUI),不是缺陷。
本地化缺口
zh_CN.lang 有 31 个键,en_US.lang 有 33 个(后者最后一行无换行符,故 wc -l 显示 32)。中文文件缺少最后两个键:
| 缺失键 | 英文值 |
|---|---|
gui.gcewing_sg:baseScreen.title |
Stargate Address(en_US.lang 第 32 条) |
gui.gcewing_sg:baseScreen.camo |
Base Camouflage(en_US.lang 第 33 条) |
比对方式:grep 两个 lang 文件的 key= 前缀后求差集,extra in zh_CN 为空,即中文侧是纯缺失、没有拼错的键。
即星门地址界面的标题与伪装标签在简体中文环境下会直接显示英文键名。
相关条目
- Packet Channel
- SGBaseTE - 地址界面的数据源
- DHDTE - 燃料界面的数据源
- Star Gate 多方块结构