GuiFactory

IModGuiFactory 实现

基本信息

属性 值
路径 com.github.lunatrius.ingameinfo.client.gui.GuiFactory
行数 29
接口 cpw.mods.fml.client.config.IModGuiFactory
声明处 Reference 的 GUI_FACTORY 常量(:12)

四个方法

方法 行 实现
initialize(Minecraft) :13-14 空
mainConfigGuiClass() :16-19 返回 GuiModConfig.class
runtimeGuiCategories() :21-24 返回空集合
getHandlerFor(RuntimeOptionCategoryElement) :26-28 返回 null

三个「不支持」的实现

⚠️ runtimeGuiCategories() 返回空集合 + getHandlerFor() 返回 null = 本 mod 不参与 Forge 的「运行时选项」体系(1.13+ 概念在 1.7.10 的回溯实现)。

⚠️ getHandlerFor 返回 null 而非抛异常 —— 若 Forge 内部因某种原因遍历到空 categories 里的元素,会 NPE。 实际不会触发,因为 categories 为空。

唯一实际作用

mainConfigGuiClass() 让「选项 → 模组 → InGame Info XML」这一项 能打开 GuiModConfig。

⚠️ IModGuiFactory 在 1.7.10 是可选的: 删掉 @Mod 的 guiFactory 参数后,本 mod 仍可运行, 只是少了模组配置入口。guiFactory 指向的类由字符串反射加载 —— 改类名/包名不会编译期报错。

与命令的关系

/igi config 走的是 DelayedGuiDisplayTicker.create(new GuiModConfig(null), 0) (见 InGameInfoCommand), 直接 new,不经本类。所以两条路径都指向 GuiModConfig,但只有一条经由 GuiFactory。

相关