GUI Types

基本信息

inventory/gui/GuiType.java —— 13 个界面类型的枚举, 每个常量把「宿主类型 → 服务端 Container → 客户端 Gui」三者绑在一起。

常量 宿主类型 Container Gui
FLUID_AUTO_FILLER TileFluidAutoFiller ContainerFluidAutoFiller GuiFluidAutoFiller
LEVEL_EMITTER_PROXY ILevelEmitter(AE2 接口) ContainerLevelEmitter(AE2 自带) GuiLevelEmitterProxy
LEVEL_MAINTAINER TileLevelMaintainer ContainerLevelMaintainer GuiLevelMaintainer
OC_PATTERN_EDITOR TileOCPatternEditor ContainerOCPatternEditor GuiOCPatternEditor
DUAL_INTERFACE_FLUID IDualHost ContainerFluidInterface GuiFluidInterface
INGREDIENT_BUFFER TileIngredientBuffer ContainerIngredientBuffer GuiIngredientBuffer
LARGE_INGREDIENT_BUFFER TileLargeIngredientBuffer ContainerLargeIngredientBuffer GuiLargeIngredientBuffer
LEVEL_TERMINAL ITerminalHost(AE2 接口) ContainerLevelTerminal GuiLevelTerminal
WIRELESS_LEVEL_TERMINAL IWirelessTerminal ContainerLevelWireless GuiLevelWireless
FLUID_PATTERN_ENCODER TileFluidPatternEncoder ContainerFluidPatternEncoder GuiFluidPatternEncoder
FLUID_PACKET_DECODER TileFluidPacketDecoder ContainerFluidPacketDecoder GuiFluidPacketDecoder
WIRELESS_MAGNET_FILTER ITerminalHost ContainerMagnetFilter GuiMagnetFilter
GUI_SUPER_STOCK_REPLENISHER TileSuperStockReplenisher ContainerSuperStockReplenisher GuiSuperStockReplenisher

GUI_SUPER_STOCK_REPLENISHER 的枚举名带 GUI_ 前缀,是 13 个里唯一的例外。

四种工厂泛型

工厂 用在本枚举的 语义
TileGuiFactory<T> 7 个 必须挂在 TileEntity 上
PartGuiFactory<T> 1 个(LEVEL_EMITTER_PROXY) 必须挂在 AE2 部件上
ItemGuiFactory<T> 2 个(WIRELESS_LEVEL_TERMINAL、WIRELESS_MAGNET_FILTER) 由手持物品打开
TileOrPartGuiFactory<T> 2 个(DUAL_INTERFACE_FLUID、LEVEL_TERMINAL) Tile 或部件皆可

DUAL_INTERFACE_FLUID 与 LEVEL_TERMINAL 用 TileOrPartGuiFactory, 与 AE2 升级卡注册 尾部 interfaceTerminal().register(...) 的三处注册呼应 —— PartFluidInterface、PartFluidP2PInterface、TileFluidInterface 共用同一个界面。

序号即协议

public static final List<GuiType> VALUES = ImmutableList.copyOf(values());
public static GuiType getByOrdinal(int ordinal) {
    return ordinal < 0 || ordinal >= VALUES.size() ? null : VALUES.get(ordinal);
}

ordinal(0–12)被直接写进网络包(SPacketSwitchGuis), 所以枚举常量顺序是网络协议的一部分:在中间插入或重排会破坏 客户端/服务端兼容性。新增界面只能追加到末尾。

越界返回 null(不抛异常),调用方需自行处理 null。

VALUES 用 Guava ImmutableList 快照,GuiType 字段 public final IGuiFactory guiFactory 亦为 final。

相关条目

源码

  • src/main/java/com/glodblock/github/inventory/gui/GuiType.java
  • 工厂基类:同目录 TileGuiFactory / PartGuiFactory / ItemGuiFactory / TileOrPartGuiFactory / PartOrItemGuiFactory / IGuiFactory