recipe-nope/src/main/java/dev/pfaff/recipe_nope/injector/util/InsnConsumer.java

33 lines
719 B
Java

package dev.pfaff.recipe_nope.injector.util;
import org.objectweb.asm.tree.AbstractInsnNode;
import org.objectweb.asm.tree.InsnList;
import org.spongepowered.asm.mixin.injection.struct.Target;
public interface InsnConsumer {
void accept(AbstractInsnNode insn);
void extraLocals(int size);
void extraStack(int size);
static InsnConsumer into(InsnList list, Target target) {
return new InsnConsumer() {
@Override
public void accept(AbstractInsnNode insnNode) {
list.add(insnNode);
}
@Override
public void extraLocals(int size) {
target.extendLocals().add(size).apply();
}
@Override
public void extraStack(int size) {
target.extendStack().add(size).apply();
}
};
}
}