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