1 var Opcodes = Java.type("org.objectweb.asm.Opcodes");
2 var FieldNode = Java.type("org.objectweb.asm.tree.FieldNode");
3 var InsnNode = Java.type("org.objectweb.asm.tree.InsnNode");
4 var JumpInsnNode = Java.type("org.objectweb.asm.tree.JumpInsnNode");
5 var LabelNode = Java.type("org.objectweb.asm.tree.LabelNode");
6 var VarInsnNode = Java.type("org.objectweb.asm.tree.VarInsnNode");
7 var MethodInsnNode = Java.type("org.objectweb.asm.tree.MethodInsnNode");
8 var ASMAPI = Java.type("net.minecraftforge.coremod.api.ASMAPI");
10 function initializeCoreMod() {
12 "smooth-scrolling-everywhere": {
15 'name': 'net.minecraft.network.NetworkManager'
17 'transformer': function (classNode) {
18 var processPacket = ASMAPI.mapMethod("func_197664_a");
19 for (i in classNode.methods) {
20 var method = classNode.methods[i];
21 if (method.name === processPacket) {
22 var instructions = method.instructions;
23 var insnArray = instructions.toArray();
24 for (j in insnArray) {
25 var instruction = insnArray[j];
26 if (instruction instanceof LabelNode) {
27 instructions.insertBefore(instruction, new LabelNode());
28 instructions.insertBefore(instruction, new VarInsnNode(Opcodes.ALOAD, 0));
29 instructions.insertBefore(instruction, new MethodInsnNode(Opcodes.INVOKESTATIC, "me/shedaniel/lightoverlay/LightOverlay", "processPacket", "(Lnet/minecraft/network/IPacket;)V", false));