module-compat

基本信息

属性 值
modid unimixins-compat
Java 文件 10
加载插件 io.github.legacymoddingmc.unimixins.compat.CompatCore
产出 …-compat-1.7.10.jar
启用版本 Minecraft 1.7.10

功能

兼容性与调试模块。mcmod.info 自述 UniMixins module that improves compatibility and helps debug crashes。 本仓中唯一注册 ASM transformer 的模块。

4 个 transformer

transformer 行数 作用
ASMRemapperTransformer 185 把 ASM 包名重映射到当前运行时
EnhanceCrashReportsTransformer 85 在 enhanceCrashReport 末尾挂钩子
HackClasspathModDiscoveryTransformer 78 修 dev 环境 classpath mod 不加载
IgnoreDuplicateJarsTransformer 139 忽略 java agent 带来的重复 jar

其它类

类 作用
CompatModule 空 @Mod 标记类
CompatCore IFMLLoadingPlugin
CompatConfig 3 个开关
CrashReportEnhancer 崩溃报告增强逻辑
MixinErrorHandler mixin 错误处理
api/RemapASMForMixin 注解:标记需要重映射的类

CompatCore 的两条注册路径

⚠️ 注册方式分两批,机制不同:

  1. ASMRemapperTransformer 走 Launch.classLoader.registerTransformer(...), 且在构造函数里注册(不是 getASMTransformerClass())。源码注释说明理由: 「We register the transformer this way to register it as early as possible.」 → 早于 ASM 转换阶段本身,最优先。

  2. 其余 3 个走 getASMTransformerClass() 返回数组,按配置条件加入。

CompatConfig(3 个开关)

字段 触发条件
enableRemapper 注册 ASMRemapperTransformer
enhanceCrashReports 加入 EnhanceCrashReportsTransformer
improveInitPhaseDetection 未被 getASMTransformerClass() 使用

⚠️ HackClasspathModDiscoveryTransformer 不受配置控制, 而是由系统属性开关:

if (Boolean.parseBoolean(System.getProperty("unimixins.compat.hackClasspathModDiscovery", "false")))

即需 -Dunimixins.compat.hackClasspathModDiscovery=true 启动。 把它当成配置项(.cfg 里可改)是错的。

⚠️ IgnoreDuplicateJarsTransformer 走静态方法 wantsToRun() 判定, 既非配置项也非系统属性。

相关条目