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