打开界面(openGui)

基本信息

属性 值
type 值 openGui(equalsIgnoreCase,大小写不敏感)
实现类 lumien.custommainmenu.lib.actions.ActionOpenGUI
参数 gui(字符串)
分发点 GuiConfig.getWantedAction(GuiConfig.java:402-404)

核心差异

本 mod 里唯一能跳到别的界面的动作。其余 7 个动作要么离开游戏(quit)、要么调用外部程序(openLink / openFolder)、要么改自身状态(refresh / loadWorld / connectToServer / sendIMC)。openGui 是纯游戏内导航。

两种命名空间

前缀 解析方式
custom. 截掉 7 字符后交给 CustomMainMenu.INSTANCE.config.getGUI(名字),即跳到本 mod 的另一个自定义界面
无前缀 走下面的内置表,实例化原版/FML/其他 mod 的 GUI 类

⚠️ custom. 分支不做判空:名字写错或对应 .json 不存在时 Config.getGUI 会在 this.guis.get(name) 上空指针(Config.java:29)。 ⚠️ 名字全部不匹配时 gui 保持 null,函数静默返回,点击无任何反应也不报错(ActionOpenGUI.java:73-76)。

内置目标表

gui 值 打开的界面 备注
mods GuiModList(FML 模组列表)
singleplayer GuiSelectWorld
singleplayer.createworld GuiCreateWorld
multiplayer GuiMultiplayer
options GuiOptions
languages GuiLanguage
options.resourcepacks GuiScreenResourcePacks
options.ressourcepacks 同上 ⚠️ 拼写错误的兼容别名(ActionOpenGUI.java:60-61),与正确拼写并存
options.shaderpacks 见下方三方分支
options.snooper GuiSnooper
options.sounds GuiScreenOptionsSounds
options.broadcast GuiStreamOptions / GuiStreamUnavailable 先 saveOptions(),再按流可用性二选一(:67-75)
options.video 见下方三方分支
options.controls GuiControls
options.multiplayer ScreenChatOptions 原版多人游戏聊天选项
mainmenu new GuiMainMenu()

⚠️ 仓库自带的 mainmenu.schema.json 的 gui 枚举漏了 4 个代码里真实支持的键(options.ressourcepacks、options.shaderpacks、options.broadcast、mainmenu),也没说明 custom. 前缀约定。

反射式三方适配

三处按 Loader.isModLoaded 探测后用 Class.forName 反射构造,任何异常都被包成 RuntimeException 抛出(不降级):

触发键 探测 mod 反射目标
options.shaderpacks angelica net.coderbot.iris.gui.screen.ShaderPackScreen
options.shaderpacks swansong com.ventooth.swansong.gui.GuiShaders
options.video angelica me.jellysquid.mods.sodium.client.gui.SodiumOptionsGUI
options.video notfine jss.notfine.gui.GuiCustomMenu(需拼出 OptionPage 的 4 个子页数组)

三者皆无时回退到 GuiScreenResourcePacks(shaderpacks)或 GuiVideoSettings(video)。

⚠️ angelica 优先于 swansong / notfine,两个 mod 同装时后者的选项页永远不会被打开(if / else if 链,ActionOpenGUI.java:52-121)。

使用场景

自定义主菜单里绝大多数按钮的默认动作。自定义子界面之间跳转必须用 custom.<文件名>,文件名是 .json 去掉扩展名后的名字(见配置文件格式)。

相关条目