EnhanceCrashReportsTransformer

基本信息

属性 值
类名 io.github.legacymoddingmc.unimixins.compat.asm.EnhanceCrashReportsTransformer
文件 module-compat/src/main/java/…/compat/asm/EnhanceCrashReportsTransformer.java
行数 85
接口 IClassTransformer
开关 enhanceCrashReports(默认 true)
启用版本 Minecraft 1.7.10

功能

在 FMLCommonHandler#enhanceCrashReport 方法末尾插入钩子, 把 mixin 错误与已应用 mixin 列表写进崩溃报告。

⚠️ 用 transformer 而非 mixin —— 这是刻意选择

源码注释原文:

Inserts a hook at the end of FMLCommonHandler#enhanceCrashReport. We use a transformer instead of a mixin because FML is a minefield for mixin errors.

即 FML 自身的类在 1.7.10 上做 mixin 极不稳定(类加载时机早于 mixin 引导), 故改用 ASM transformer 绕开这个雷区。

这是本仓「何时不该用 mixin」的关键判据: 要改 FML 引导期的类,就用 transformer,不要用 mixin。

消费点

由 CompatCore 的 getASMTransformerClass() 在 CompatConfig.enhanceCrashReports 为真时加入。

⚠️ 与 ASMRemapperTransformer 不同,本类走 标准 getASMTransformerClass() 路径,而非构造器里的 Launch.classLoader.registerTransformer(...) 早注册。

配套的运行时逻辑在 CrashReportEnhancer(同模块, module-compat/src/main/java/…/compat/CrashReportEnhancer.java)。

相关条目