配置 API
基本信息
| 属性 | 值 |
|---|---|
| 接口全名 | mcp.mobius.waila.api.IWailaConfigHandler |
| 源码 | src/main/java/mcp/mobius/waila/api/IWailaConfigHandler.java(44 行) |
| 唯一实现 | mcp.mobius.waila.api.impl.ConfigHandler(ConfigHandler.java:18) |
| 配置文件 | event.getSuggestedConfigurationFile()(ConfigHandler.java:144) |
| 配置分区 | general / modules / server_forcing(Constants.java:40-41) |
功能
IWailaConfigHandler 是注入到每一个 provider / decorator / 渲染器回调中的第 4(或第 3)个参数。4 个方法:
| 方法 | 返回 | 用途 |
|---|---|---|
getModuleNames() |
Set<String> |
所有已注册的配置分区名(ConfigHandler.java:46-48) |
getConfigKeys(String modName) |
HashMap<String,String> |
指定分区的全部 key→显示名;分区不存在时返回 null(ConfigHandler.java:51-54) |
getConfig(String key) |
boolean |
读配置,省略默认值时用 Constants.CFG_DEFAULT_VALUE |
getConfig(String key, boolean defvalue) |
boolean |
读配置并指定默认值 |
Constants.CFG_DEFAULT_VALUE 恒为 true(Constants.java:17),因此 addConfig(modname, key) 不带 defvalue 的重载默认全为 true(ModuleRegistrar.java:77-79、ModuleRegistrar.java:87-89)。
读取优先级
ConfigHandler.getConfig(String, boolean) 的判定顺序(ConfigHandler.java:96-104):
- 服务端未安装且该 key 属服务端强制类 → 返回
false(ConfigHandler.java:98) forcedConfigs命中 → 返回强制值(ConfigHandler.java:100)- 否则读
modules分区并取 boolean(ConfigHandler.java:102-103)
第 1 步意味着:用 addConfigRemote 声明的 key 在纯客户端环境下恒为 false,因为 Waila.instance.serverPresent 保持 false(Waila.java:54,全类中除 checkModList 外无赋值)。这是设计如此,不是 bug。
服务端强制分区
server_forcing 分区由 addConfigRemote 系列填充(ModuleRegistrar.java:102-104 → ConfigHandler.addConfigServer,ConfigHandler.java:82-89)。配置文件内注释写明用途(ConfigHandler.java:176-177):
Any key set to true here will ensure that the client is using the configuration set in the ‘module’ section above. This is useful for enforcing false to ‘cheating’ keys like silverfish.
modules 分区的对应注释见 ConfigHandler.java:174-175。
数值
| 项 | 值 | 来源 |
|---|---|---|
| 接口方法数 | 4 | IWailaConfigHandler.java |
CFG_DEFAULT_VALUE |
true |
Constants.java:17 |
SERVER_FREE |
false |
Constants.java:42 |
| 配置分区数 | 3(general / modules / server_forcing) |
Constants.java:40-41、ConfigHandler.java:146-172 |
| addon 声明的 module 配置项总数 | 36 | 见 模块配置项 |
交互
配置声明流程:IWailaRegistrar.addConfig* → ModuleRegistrar → ConfigHandler → 写入 modules 与 server_forcing 两个分区(ConfigHandler.java:56-64)。免反射声明通道见 IMC 注册入口。general 分区的键值与默认值见 通用配置项。
相关条目
- 模块配置项 - 37 个 addon 配置 key 的完整清单
- 通用配置项 -
general分区的键与默认值 - IWailaRegistrar - 8 个
addConfig/addConfigRemote重载 - IMC 注册入口 -
addconfig消息的免反射注入