mirror of
https://github.com/GTNewHorizons/NotEnoughItems.git
synced 2026-11-15 17:54:50 +00:00
43 lines
1.5 KiB
Java
43 lines
1.5 KiB
Java
package codechicken.nei.asm;
|
|
|
|
import static org.objectweb.asm.Opcodes.POP;
|
|
import static org.objectweb.asm.Opcodes.PUTSTATIC;
|
|
|
|
import codechicken.lib.asm.ASMHelper;
|
|
import org.objectweb.asm.ClassVisitor;
|
|
import org.objectweb.asm.MethodVisitor;
|
|
|
|
public class GuiContainerManagerAPITransformer extends ClassVisitor {
|
|
private final String tname;
|
|
private boolean changed = false;
|
|
|
|
public GuiContainerManagerAPITransformer(int api, ClassVisitor cv, String tname) {
|
|
super(api, cv);
|
|
this.tname = tname;
|
|
}
|
|
|
|
@Override
|
|
public MethodVisitor visitMethod(int access, String mname, String mdesc, String signature, String[] exceptions) {
|
|
return new MethodVisitor(api, super.visitMethod(access, mname, mdesc, signature, exceptions)) {
|
|
@Override
|
|
public void visitFieldInsn(int opcode, String owner, String name, String desc) {
|
|
if (opcode == PUTSTATIC
|
|
&& "codechicken/nei/guihook/GuiContainerManager".equals(owner)
|
|
&& name.endsWith("Handlers")
|
|
&& desc.equals("Ljava/util/LinkedList;")) {
|
|
ASMHelper.logger.warn(
|
|
"Found suspicious PUTSTATIC {} in {}#{}{}, replacing with POP!", name, tname, mname, mdesc);
|
|
changed = true;
|
|
super.visitInsn(POP);
|
|
} else {
|
|
super.visitFieldInsn(opcode, owner, name, desc);
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
public boolean isChanged() {
|
|
return changed;
|
|
}
|
|
}
|