ConfigUtil
基本信息
| 属性 | 值 |
|---|---|
| 类名 | io.github.legacymoddingmc.unimixins.common.config.ConfigUtil |
| 文件 | module-common/src/main/java/…/config/ConfigUtil.java |
| 所属 | module-common |
| 启用版本 | Minecraft 1.7.10 |
功能
全仓唯一的配置加载入口。签名极简:
public static void load(Class<?> cls)
加载逻辑
- 配置目录固定为
new File(Launch.minecraftHome, "config")。 - 旧配置迁移:若
config/unimixins.cfg存在,renameTo为config/unimixins.old.delete_me.cfg。 - 实际加载
config/unimixins.properties, 交AnnotatedProperties.load(File, Class)按注解填充静态字段。
实现要点
⚠️ 配置格式是 unimixins.properties,不是 Forge 的 .cfg。
整个 UniMixins 仓没有 @Config 注解、没有 Configuration 类。
⚠️ 旧 .cfg 文件的处理是改名而非删除,且不检查 renameTo 返回值 ——
在只读文件系统或目标已存在时会静默失败,用户不会收到任何提示。
⚠️ 旧文件名 unimixins.old.delete_me.cfg 里的 delete_me
是留给用户手动删的,不是自动清理。说「会自动删除旧配置」是错的。
⚠️ load(Class<?>) 接受任意类,不限于本仓的类;
它只按 @AnnotatedProperties.* 注解反射填字段。
CompatConfig 与
SanityCheckConfig 都经它加载。
被谁调用
| 调用方 | 位置 |
|---|---|
SanityCheckHelper |
静态初始化块中 ConfigUtil.load(SanityCheckConfig.class) |
CompatCore |
构造器中 ConfigUtil.load(CompatConfig.class) |
⚠️ 两处都在类初始化 / 构造阶段执行, 即配置在 FML 加载插件阶段就已就绪, 早于任何 mixin 生效 —— 这是 transformer 能按配置开关注册的前提。
相关条目
- SanityCheckConfig - 通过本类加载
- CompatConfig - 通过本类加载
- AnnotatedProperties - 实际解析器
- module-common - 本类所属模块