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?。
相关条目
- 队伍系统 - GUI 背后的逻辑与指令
- 物品栈与传输 API -
DisplayItem涉及的物品展示 - 模组加载检测 -
static final与可变静态字段的取舍