EarsAgent

基本信息

pl.asie.foamfix.repack.com.unascribed.ears.common.agent.EarsAgent —— 在 BugfixModClassTransformer.transform() 里被调用的 Ears 变换代理。

调用点

BugfixModClassTransformer.transform()(第 226-236 行)有两条分支:

if (applyEarsPatch == null) {          // 尚未探测
    byte[] earsBytes = EarsAgent.transform(transformedName, bytes);
    if (earsBytes != bytes) {          // 有改动才继续
        if (applyEarsPatch()) { bytes = earsBytes; }
    }
} else if (applyEarsPatch) {
    bytes = EarsAgent.transform(transformedName, bytes);
}

即 applyEarsPatch 尚未确定时先试跑一次, 若确实产生了字节码改动再反查 applyEarsPatch() 决定是否采纳 —— 用「有没有改动」代替显式的类名清单作为探测信号。

⚠️ 第一分支里 EarsAgent.transform 在每个类上都被调用 (无论是否与 Ears 相关),这是启动期的额外开销。

静态字段

字段 类型 说明
initialized boolean 初始化标记

调试产物目录

第 52 行:

File dir = new File("ears-debug-classes", className.replace('/', '.'));

开启调试时会向游戏当前工作目录下的 ears-debug-classes/ 写反编译类文件。

相关条目

源码

  • src/main/java/pl/asie/foamfix/repack/com/unascribed/ears/common/agent/EarsAgent.java