Container GUI System

基本信息

属性 值
基类 net.mcft.betterstorage.client.gui.GuiBetterStorage(继承 GuiContainer)
容器基类 net.mcft.betterstorage.container.ContainerBetterStorage
GUI 实现 5 个(见下)
容器实现 7 个(见下)
客户端渲染器 src/main/java/net/mcft/betterstorage/client/renderer/

来源:src/main/java/net/mcft/betterstorage/client/gui/、src/main/java/net/mcft/betterstorage/container/。

功能

本 mod 的全部 GUI 共享一套动态尺寸机制:GUI 宽度按容器列数计算,而非固定 176 像素,从而支持 9/11/13 列的可配置宽度。

GuiBetterStorage 构造函数(src/main/java/net/mcft/betterstorage/client/gui/GuiBetterStorage.java:45-46):

xSize = 14 + columns * 18;
ySize = container.getHeight();

即宽度 = 14 + 列数 × 18。标题绘制在 8 + (xSize - 176) / 2 处居中(:87-88),玩家背包区固定在 ySize - 94(:88)。

GUI 实现类

类 用途 背景纹理资源
GuiBetterStorage 通用基类 由 getResource() 决定
GuiCrate 木箱 GUI textures/gui/crate.png
GuiCraftingStation 合成台 GUI textures/gui/craftingStation.png
GuiBetterStorageConfig 配置界面 —
GuiThaumiumChest 神秘金属箱子 GUI(Thaumcraft 附属) textures/gui/thaumiumChest.png

来源:src/main/java/net/mcft/betterstorage/client/gui/;纹理见 src/main/resources/assets/betterstorage/textures/gui/。

背景分两段绘制(GuiBetterStorage.java:101-104):上半部从 y=0 起 m1 = ySize - m 像素,下半部从 m2 = getHeight() - m 起 m 像素。

容器实现类

类 用途 列 × 行
ContainerBetterStorage 通用基类,含 getColumns() / getRows() 参数化
ContainerCrate 木箱 动态(2 * min(箱数, 3) 行)
ContainerCraftingStation 合成台 9 × 2 内部存储
ContainerKeyring 钥匙环 9 × 1
SlotBetterStorage 通用槽位 —
SlotStationOutput 合成台输出槽 —
SlotArmorBackpack 背包内的护甲槽 —

来源:src/main/java/net/mcft/betterstorage/container/;ContainerKeyring 的 9×1 见 ContainerKeyring.java:15。

容器尺寸速查

容器 列 行 槽位数 来源
储物柜 3 3 9 src/main/java/net/mcft/betterstorage/tile/entity/TileEntityContainer.java:41-47
强化箱子 9/11/13 3 27/33/39 TileEntityReinforcedChest.java:37-39 + 配置
强化储物柜 9/11/13 3 27/33/39 TileEntityReinforcedLocker.java:38-40 + 配置
背包 3 1–6 3–18 TileEntityBackpack.java:66-68 + 配置
纸板箱 3 1–3 3–9 TileEntityCardboardBox.java:45-47 + 配置
木箱 动态 2 * min(箱数, 3) 动态 src/main/java/net/mcft/betterstorage/tile/crate/TileEntityCrate.java:233-241
合成台内部 9 2 18 ContainerCraftingStation.java:32
钥匙环 9 1 9 ContainerKeyring.java:15

相关封包

GUI 交互通过以下封包同步(src/main/java/net/mcft/betterstorage/network/packet/):

封包 用途
PacketOpenGui 打开 GUI
PacketPresentOpen 礼物开箱
PacketBackpackOpen / PacketBackpackIsOpen 背包 GUI 开关
PacketBackpackStack / PacketBackpackHasItems 背包内容同步
PacketBackpackTeleport 末影背包传送
PacketSyncSetting 同步配置值

通道由 ChannelHandler 管理(src/main/java/net/mcft/betterstorage/network/ChannelHandler.java),在 preInit 初始化(src/main/java/net/mcft/betterstorage/BetterStorage.java:56)。

相关条目