package org.rsbot.loader; import org.rsbot.loader.asm.*; /** */ public class VersionVisitor implements ClassVisitor { private int version; public int getVersion() { return version; } @Override public void visit(final int version, final int access, final String name, final String signature, final String superName, final String[] interfaces) { } @Override public void visitSource(final String source, final String debug) { } @Override public void visitOuterClass(final String owner, final String name, final String desc) { } @Override public AnnotationVisitor visitAnnotation(final String desc, final boolean visible) { return null; } @Override public void visitAttribute(final Attribute attr) { } @Override public void visitInnerClass(final String name, final String outerName, final String innerName, final int access) { } @Override public FieldVisitor visitField(final int access, final String name, final String desc, final String signature, final Object value) { return null; } @Override public MethodVisitor visitMethod(final int access, final String name, final String desc, final String signature, final String[] exceptions) { if (!name.equals("main")) { return null; } return new MethodVisitor() { @Override public AnnotationVisitor visitAnnotationDefault() { return null; } @Override public AnnotationVisitor visitAnnotation(final String desc, final boolean visible) { return null; } @Override public AnnotationVisitor visitParameterAnnotation(final int parameter, final String desc, final boolean visible) { return null; } @Override public void visitAttribute(final Attribute attr) { } @Override public void visitCode() { } @Override public void visitFrame(final int type, final int nLocal, final Object[] local, final int nStack, final Object[] stack) { } @Override public void visitInsn(final int opcode) { } @Override public void visitIntInsn(final int opcode, final int operand) { if (opcode == Opcodes.SIPUSH && operand > 400 && operand < 768) { version = operand; } } @Override public void visitVarInsn(final int opcode, final int var) { } @Override public void visitTypeInsn(final int opcode, final String type) { } @Override public void visitFieldInsn(final int opcode, final String owner, final String name, final String desc) { } @Override public void visitMethodInsn(final int opcode, final String owner, final String name, final String desc) { } @Override public void visitJumpInsn(final int opcode, final Label label) { } @Override public void visitLabel(final Label label) { } @Override public void visitLdcInsn(final Object cst) { } @Override public void visitIincInsn(final int var, final int increment) { } @Override public void visitTableSwitchInsn(final int min, final int max, final Label dflt, final Label[] labels) { } @Override public void visitLookupSwitchInsn(final Label dflt, final int[] keys, final Label[] labels) { } @Override public void visitMultiANewArrayInsn(final String desc, final int dims) { } @Override public void visitTryCatchBlock(final Label start, final Label end, final Label handler, final String type) { } @Override public void visitLocalVariable(final String name, final String desc, final String signature, final Label start, final Label end, final int index) { } @Override public void visitLineNumber(final int line, final Label start) { } @Override public void visitMaxs(final int maxStack, final int maxLocals) { } @Override public void visitEnd() { } }; } @Override public void visitEnd() { } }