]> git.lizzy.rs Git - LightOverlay.git/blob - src/main/resources/META-INF/NetworkManager.js
v4.4
[LightOverlay.git] / src / main / resources / META-INF / NetworkManager.js
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");
9
10 function initializeCoreMod() {
11     return {
12         "smooth-scrolling-everywhere": {
13             'target': {
14                 'type': 'CLASS',
15                 'name': 'net.minecraft.network.NetworkManager'
16             },
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));
30                                 break;
31                             }
32                         }
33                         break;
34                     }
35                 }
36                 return classNode;
37             }
38         }
39     }
40 }