IWailaRegistrar
基本信息
| 属性 | 值 |
|---|---|
| 接口全名 | mcp.mobius.waila.api.IWailaRegistrar |
| 源码 | src/main/java/mcp/mobius/waila/api/IWailaRegistrar.java:23 |
| 唯一实现 | mcp.mobius.waila.api.impl.ModuleRegistrar(ModuleRegistrar.java:28) |
| 获取方式 | 反射回调的入参,不由 addon 自行构造(ProxyServer.java:117-134) |
| 方法数 | 24 |
IWailaRegistrar 是 Waila 唯一的注册入口接口。所有第三方 addon 的 provider / decorator / 配置项都必须通过它登记,不能自己 new 一个 ModuleRegistrar。
功能
Waila 本身不注册任何方块或物品,它把 HUD 拆成 3 个区(zone):
| 区 | 语义 | 说明来源 |
|---|---|---|
| Head | 物品名 | IWailaBlock.java:17-20 |
| Body | 主要信息 | IWailaBlock.java:17-20 |
| Tail | mod 名显示 | IWailaBlock.java:17-20 |
注册匹配使用 instanceof 而非精确类匹配,因此传接口即可覆盖整个继承树(IWailaRegistrar.java:9-12)。方块注册同时接受 Block 和 TileEntity 类(IWailaRegistrar.java:12)。
方法一览
以下方法签名逐条摘自 IWailaRegistrar.java:26-89:
| 方法 | 行 | 用途 |
|---|---|---|
addConfig(String,String,String) |
26 | 加配置项,key 在 Waila 内全局共享 |
addConfig(String,String,String,boolean) |
28 | 同上并指定默认值 |
addConfigRemote(String,String,String) |
30 | 服务端可强制覆盖的客户端配置项 |
addConfigRemote(String,String,String,boolean) |
32 | 同上并指定默认值 |
addConfig(String,String) |
34 | 配置项显示名由 option.<key> 语言键推导 |
addConfig(String,String,boolean) |
36 | 同上并指定默认值 |
addConfigRemote(String,String) |
38 | 服务端可强制的配置项,显示名自动推导 |
addConfigRemote(String,String,boolean) |
40 | 同上并指定默认值 |
registerStackProvider(IWailaDataProvider,Class) |
43 | 覆盖默认的方块→ItemStack 查询 |
registerHeadProvider(IWailaDataProvider,Class) |
46 | 追加 Head 区文本 |
registerBodyProvider(IWailaDataProvider,Class) |
48 | 追加 Body 区文本 |
registerTailProvider(IWailaDataProvider,Class) |
50 | 追加 Tail 区文本 |
registerNBTProvider(IWailaDataProvider,Class) |
53 | 覆盖 TileEntity 默认 writeToNBT 同步 |
registerHeadProvider(IWailaEntityProvider,Class) |
56 | 追加实体 Head 区文本 |
registerBodyProvider(IWailaEntityProvider,Class) |
58 | 追加实体 Body 区文本 |
registerTailProvider(IWailaEntityProvider,Class) |
60 | 追加实体 Tail 区文本 |
registerOverrideEntityProvider(IWailaEntityProvider,Class) |
62 | 覆盖默认的实体查询 |
registerNBTProvider(IWailaEntityProvider,Class) |
65 | 覆盖实体 NBT 同步 |
registerHeadProvider(IWailaFMPProvider,String) |
68 | FMP(ForgeMultipart)Head 区 |
registerBodyProvider(IWailaFMPProvider,String) |
70 | FMP Body 区 |
registerTailProvider(IWailaFMPProvider,String) |
72 | FMP Tail 区 |
registerDecorator(IWailaBlockDecorator,Class) |
75 | 世界内方块装饰(高亮框等) |
registerDecorator(IWailaFMPDecorator,String) |
77 | FMP 方块装饰 |
registerSyncedNBTKey(String,Class) |
86 | 已废弃,保留 1.4.5 兼容,注释声明将在 MC 1.8 移除 |
registerTooltipRenderer(String,IWailaTooltipRenderer) |
88 | 注册自定义 tooltip 渲染器 |
重载消歧
registerHeadProvider / registerBodyProvider / registerTailProvider / registerNBTProvider / registerDecorator 各有 2–3 个重载,靠第一个参数的类型区分:IWailaDataProvider(方块)、IWailaEntityProvider(实体)、IWailaFMPProvider(FMP,按名称字符串匹配)、IWailaBlockDecorator / IWailaFMPDecorator。
配置键命名约束
modname 是配置面板中显示的分区名;keyname 是内部查询键,在全 Waila 范围内共享,源码注释明确要求保持唯一(IWailaRegistrar.java:14-17)。面板里另有服务端强制分区 server_forcing(ConfigHandler.java:41、Constants.java:40-42)。
交互
第三方 mod 的完整接入流程(IMC → 反射 → registrar)见 IMC 注册入口。配置项的默认值与强制机制见 配置 API 与 模块配置项。
相关条目
- IMC 注册入口 - 第三方 addon 实际连接 Waila 的唯一通道
- IWailaDataProvider - 方块/TileEntity 文本回调契约
- IWailaEntityProvider - 实体文本回调契约
- Tooltip 渲染器 API -
registerTooltipRenderer的实现要求 - 方块装饰器 -
registerDecorator的实现要求 - 配置 API - addon 在回调里如何读取配置状态