Crafting Station GUI

基本信息

属性 值
GUI 类 net.mcft.betterstorage.client.gui.GuiCraftingStation(继承 GuiBetterStorage)
容器类 net.mcft.betterstorage.container.ContainerCraftingStation
背景纹理 textures/gui/craftingStation.png
GUI 高度 209
GUI 宽度 14 + 9 × 18 = 176(容器为 9 列)

来源:src/main/java/net/mcft/betterstorage/client/gui/GuiCraftingStation.java;ContainerCraftingStation.java:32, 41-43。

功能

合成台 GUI 是本 mod 界面最复杂的部分,除标准 3×3 合成区外还包含:

  • 进度条:由 lastOutputIsReal / lastProgress 两个字段跟踪合成进度(src/main/java/net/mcft/betterstorage/container/ContainerCraftingStation.java:25-26)
  • 清空按钮:GuiButton clearButton(GuiCraftingStation.java:27),使用 Inventory Tweaks 的 GuiButtonExt(GuiCraftingStation.java:19)
  • 按钮本地化:使用 Calendar 相关的本地化处理(GuiCraftingStation.java:3 导入 java.util.Calendar)

背景资源通过 getResource() 覆写返回 Resources.containerCraftingStation(GuiCraftingStation.java:37-40)。

容器布局

见 合成台配方 的完整槽位表。摘要:

区段 槽位索引 数量 坐标
合成输入 0–8 3×3 17 + x*18, 17 + y*18
输出 9–17 3×3 107 + x*18, 17 + y*18
内部存储 18–35 9×2 8 + x*18, 76 + y*18

来源:ContainerCraftingStation.java:52-60。

槽位类型区分:SlotStationOutput(输出区,不可手动取放)与其余的 SlotBetterStorage。

Inventory Tweaks 集成

ContainerCraftingStation 实现 Inventory Tweaks 的 InventoryContainer 接口(ContainerCraftingStation.java:20)并标注 @InventoryContainer。

getContainerSections() 把内部存储区注册为 ContainerSection.CHEST(:34-38):

map.put(ContainerSection.CHEST, inventorySlots.subList(17, 17 + getRows() * getColumns()));

使 IT 能正确识别并排序合成台的存储区。

NEI 集成

NEIAddon.postInitialize(src/main/java/net/mcft/betterstorage/addon/nei/NEIAddon.java:30-45)为合成台注册了三层覆盖:

调用 参数
API.registerGuiOverlay(GuiCraftingStation.class, BetterStorage.MODID + ".craftingStation") 主覆盖
API.registerGuiOverlay(GuiCraftingStation.class, "crafting", -8, 11) 原版合成表覆盖,偏移 -8, 11
API.registerGuiOverlayHandler(GuiCraftingStation.class, new StationOverlayHandler(), ...) 合成台自定义处理器
API.registerGuiOverlayHandler(GuiCraftingStation.class, new StationOverlayHandler(-8, 11), "crafting") 原版合成表处理器

同时 API.registerRecipeHandler(handler) 与 API.registerUsageHandler(handler) 注册了 NEIRecipeHandler(NEIAddon.java:33-34)。

底面贴图作为状态指示

合成台方块的底面贴图反映自动合成开关状态(src/main/java/net/mcft/betterstorage/tile/TileCraftingStation.java:48-51):

  • 底面(side == 0)+ 自动合成开启 → _bottom_1
  • 底面 + 自动合成关闭 → _bottom_0
  • 顶面(side == 1)→ _top
  • 其它面 → 默认 blockIcon

相关条目