Modification Patcher
基本信息
pl.asie.foamfix.bugfixmod.coremod.patchers.ModificationPatcher —— 标记接口
(interface,非抽象类),声明逐条指令的修改钩子。
public interface ModificationPatcher {
void modifyInsns(AbstractInsnNode currentInstruction,
Iterator<AbstractInsnNode> instructionSet,
InsnList instructions);
}
与 Global Modification Patcher 的区别
| 接口 | 粒度 | 调用次数 |
|---|---|---|
| 本接口 | 单条指令 | 每个方法每条指令一次 |
| Global Modification Patcher | 整张指令表 | 每个方法一次 |
AbstractPatcher.patchMethodNode 用 instanceof 分派,三者互斥。
实现者
本分类中被 patch() 分派到本接口的补丁通过实现本接口改写指令;
其余多数补丁实现 buildNewInsns(在指令前插入新指令而非原地改写)。
相关条目
源码
src/main/java/pl/asie/foamfix/bugfixmod/coremod/patchers/ModificationPatcher.java