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 自己的实现细节,不在配置层面暴露。

相关条目