ModularUI2 队伍 GUI

基本信息

属性 值
包 com.gtnewhorizon.gtnhlib.integration.mui2(16 个类)+ mui2/sync/(6 个)
源码 src/main/java/com/gtnewhorizon/gtnhlib/integration/mui2/
编译依赖 com.github.GTNewHorizons:ModularUI2:2.3.90-1.7.10:dev(compileOnly)
加载检测 GTNHLib.isMui2Loaded(Loader.isModLoaded("modularui2"))
初始化位置 GTNHLib.preInit()

功能

为 队伍系统 提供图形界面。没有 ModularUI 2 时队伍功能退化为纯指令操作。

条件初始化

初始化发生在 preInit,严格受 isMui2Loaded 保护(GTNHLib.java:43-52):

isMui2Loaded = Loader.isModLoaded("modularui2");

LOG.info("GTNHLib MUI2 integration enabled (for teams UI): {}", isMui2Loaded);
if (isMui2Loaded) {
    CustomGuiTextures.init();
    CustomWidgetTheme.init();
    TeamGuiFactory.init();
}

三个 init() 全部为懒初始化,只在 ModularUI 2 存在时调用。因此 ModularUI2 是 compileOnly 而非 api 依赖 —— 缺它时 GTNHLib 照常加载,只是没有 GUI。

注意 isMui2Loaded 用的是可变静态字段而非 Mods 里的 static final 常量,正是为了避开 模组加载检测 中记录的类加载期冻结问题。

三个初始化入口

类 作用
CustomGuiTextures 注册自定义纹理
CustomWidgetTheme 注册自定义控件主题
TeamGuiFactory 注册队伍 GUI 工厂

界面结构

类 角色
TeamGui 主界面
TeamGuiData 界面数据模型
TeamGuiFactory 工厂(init() 的落点)
GuiView 视图基类
ScreenType 界面类型枚举
ConfirmationDialog 通用确认框
TextDialog 文本输入框
SelectButton 选择按钮
FreezablePanel 可冻结面板
ClientTextField 文本框
GuiUtils 工具方法
DisplayItem / DisplayItemType 物品展示(图标、队友头像等)

integration/mui2/ 下共 16 个文件,其中 6 个在 sync/ 子包。

网络同步值

mui2/sync/ 下的 6 个类把 GUI 状态同步到服务端:

类 用途
DisplayListSync / DisplayListSyncValue 列表展示同步
GuiViewSyncValue 视图状态同步
TwoUuidActionSyncValue 双 UUID 操作
UuidActionSyncValue UUID 操作
UuidStringActionSyncValue UUID + 字符串操作

命名规律可见同步数据分三类:纯列表、视图状态、以及以 UUID 为键的动作 —— 后者对应"对某个玩家执行某操作"(邀请、踢出、晋升等)。

数值

数值名 值
integration/mui2 类数 16(含 sync/ 6 个)
init() 入口数 3
gtnhlib.gui.teams.* 语言键 49(en_US.lang)
硬依赖 ModularUI2 否(compileOnly)
缺 ModularUI2 时的行为 队伍指令可用,gtnhteam gui 报 teams.error.mui2_not_loaded

49 个界面语言键覆盖主界面、成员列表、邀请、合并、确认框与管理员视图,分类前缀包括 gtnhlib.gui.teams.admin.*(强制操作)与 gtnhlib.gui.teams.select_screen.*(多列表选择界面)。

交互

gtnhteam gui 子命令打开主界面。危险操作一律走二次确认(gtnhlib.gui.teams.confirm_* 键):

确认键 对应操作
gtnhlib.gui.teams.confirm_promote_member 晋升成员
gtnhlib.gui.teams.confirm_demote_member 降级成员
gtnhlib.gui.teams.confirm_kick_member 踢出成员
gtnhlib.gui.teams.confirm_disband_team 解散队伍
gtnhlib.gui.teams.confirm_leave_team 退出队伍
gtnhlib.gui.teams.confirm_accept_team_invitation 接受邀请
gtnhlib.gui.teams.confirm_merge_request 请求合并
gtnhlib.gui.teams.confirm_merge_confirmation 确认合并
gtnhlib.gui.teams.admin.confirm_force_disband_team 管理员强解散

管理员视图的确认键额外带 admin. 段并以 [Admin] 标注,如 gtnhlib.gui.teams.admin.confirm_promote_member=[Admin] Force Promote %s?。

相关条目