世界转换警告 API
基本信息
| 属性 | 值 |
|---|---|
| 接口 | com.gtnewhorizon.gtnhlib.api.gui.IWorldConversionWarning |
| 注册表 | com.gtnewhorizon.gtnhlib.api.gui.WorldConversionWarningManager |
| 默认 GUI | com.gtnewhorizon.gtnhlib.api.gui.GuiConfirmationWCW(extends GuiConfirmation) |
| 触发工具 | com.gtnewhorizon.gtnhlib.api.gui.WCWHelper |
| 触发的 mixin 组 | Mixins.WORLD_LOAD_WARNING |
| 作用面 | 客户端 GUI,服务端降级为纯文本 |
功能
让 mod 在存档需要转换(缺映射)时,于客户端弹出自定义确认 GUI,服务端则打印纯文本提示。触发时机是 FMLMissingMappingsEvent 之后(IWorldConversionWarning.java:10-12)。
同一 api/gui 包内 4 个类各司其职:
| 类 | 角色 |
|---|---|
IWorldConversionWarning |
mod 实现的接口,声明"要不要警告"与"警告说什么" |
WorldConversionWarningManager |
静态注册表,WARNINGS 为 HashMap<String, IWorldConversionWarning> |
GuiConfirmationWCW |
继承原版 GuiConfirmation 的默认确认界面 |
WCWHelper |
静态 fireWarnings(),遍历注册表逐个触发 |
数值
| 数值名 | 值 |
|---|---|
| 接口方法数 | 4(2 抽象 + 2 客户端 default) |
| 抽象方法 | shouldShow()、getServerMessage() |
| 客户端方法 | getClientMessage()、getGui(StartupQuery) |
| 注册表初始容量 | 0(new HashMap<>(),mod 自行填充) |
交互
IWorldConversionWarning 的 4 个方法:
| 方法 | 侧 | 说明 |
|---|---|---|
shouldShow() |
双方 | 返回是否要显示警告;在 FMLMissingMappingsEvent 后调用 |
getServerMessage() |
服务端 | 纯文本消息 |
getClientMessage() |
客户端 | 默认 GUI 的正文文本 |
getGui(StartupQuery) |
客户端 | 返回自定义 GuiConfirmationWCW;返回 null 则用默认 GUI |
getClientMessage 与 getGui 都带 @SideOnly(Side.CLIENT),接口注释(IWorldConversionWarning.java:33)额外要求:实现类的覆写方法也必须标注 @SideOnly(Side.CLIENT),否则 common 侧加载失败。
WorldConversionWarningManager.register(String id, IWorldConversionWarning wcw) 写入静态 WARNINGS map,key 为 mod 自选的唯一 id。
相关条目
- Mixin 枚举 -
WORLD_LOAD_WARNING注入的两个 accessor - Mixin 引导流程 -
mixins.gtnhlib.preinit.json走独立通道