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