IgnoreDuplicateJarsTransformer
基本信息
| 属性 | 值 |
|---|---|
| 类名 | io.github.legacymoddingmc.unimixins.compat.asm.IgnoreDuplicateJarsTransformer |
| 文件 | module-compat/src/main/java/…/compat/asm/IgnoreDuplicateJarsTransformer.java |
| 行数 | 139 |
| 接口 | IClassTransformer |
| 开关 | 静态方法 wantsToRun() |
| 启用版本 | Minecraft 1.7.10 |
功能
源码注释:
Makes the mod discoverer ignore duplicate UniMixins jars that come from java agents. This allows UniMixins to be safely used as a Java agent instead of having to hunt down the UniMix jar and add that as one.
即:让 mod 发现器忽略由 Java agent 引入的重复 UniMixins jar。
解决的问题
module-all 与 module-mixin 的 manifest 声明了
Premain-Class / Agent-Class = MixinAgent,
即支持以 Java agent 方式启动。
但此时同一个 jar 可能同时被 java agent 与 mod 发现器加载, 导致重复。本 transformer 让重复的那份被忽略。
⚠️ 这正是「支持 Java agent 启动」这一便利性的代价: 换来了「必须自己写 transformer 来消重」的复杂度。
开关是静态方法
if (IgnoreDuplicateJarsTransformer.wantsToRun()) classes.add(…);
⚠️ 既不是配置项也不是系统属性,而是 transformer 自己的静态方法判定。
CompatConfig 的 3 个 boolean 开关管不到它。
⚠️ wantsToRun() 的内部判定条件(是否为 java agent 场景)
是本 transformer 自己的实现细节,不在配置层面暴露。
相关条目
- module-compat - 注册方
- module-all - 声明
Premain-Class/Agent-Class - module-mixin - 同样声明 agent 属性
- HackClasspathModDiscoveryTransformer - 同模块另一 transformer