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