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.client.renderer.debug.DebugRenderer'
14 'transformer': function (classNode) {
15 var render = ASMAPI.mapMethod("func_229019_a_");
16 var setupTerrain = ASMAPI.mapMethod("func_228437_a_");
17 for (var i in classNode.methods) {
18 var method = classNode.methods[i];
19 if (method.name === render) {
20 var instructions = method.instructions;
21 var insnArray = instructions.toArray();
22 for (j in insnArray) {
23 var instruction = insnArray[j];
24 if (instruction instanceof LabelNode) {
25 instructions.insertBefore(instruction, new LabelNode());
26 instructions.insertBefore(instruction, new VarInsnNode(Opcodes.ALOAD, 0));
27 instructions.insertBefore(instruction, new MethodInsnNode(Opcodes.INVOKESTATIC, "me/shedaniel/lightoverlay/forge/LightOverlayClient", "renderWorldLast", "()V", false));
32 } else if (method.name === setupTerrain) {
33 var instructions = method.instructions;
34 instructions.insertBefore(new LabelNode());
35 instructions.insertBefore(new VarInsnNode(Opcodes.ALOAD, 2));
36 instructions.insertBefore(new MethodInsnNode(Opcodes.INVOKESTATIC, "me/shedaniel/lightoverlay/forge/LightOverlayClient", "updateFrustum", "(Lnet/minecraft/client/renderer/culling/ClippingHelper;)V", false));