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)

加载逻辑

  1. 配置目录固定为 new File(Launch.minecraftHome, "config")。
  2. 旧配置迁移:若 config/unimixins.cfg 存在, renameTo 为 config/unimixins.old.delete_me.cfg。
  3. 实际加载 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 能按配置开关注册的前提。

相关条目