33 lines
719 B
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();
|
|
}
|
|
};
|
|
}
|
|
}
|