var transformerName = "Dedicated Server Transformer"; var ASMAPI = Java.type('net.minecraftforge.coremod.api.ASMAPI'); var Opcodes = Java.type('org.objectweb.asm.Opcodes'); var VarInsnNode = Java.type("org.objectweb.asm.tree.VarInsnNode"); var MethodInsnNode = Java.type("org.objectweb.asm.tree.MethodInsnNode"); var LineNumberNode = Java.type("org.objectweb.asm.tree.LineNumberNode"); var FieldInsnNode = Java.type("org.objectweb.asm.tree.FieldInsnNode"); var InsnNode = Java.type("org.objectweb.asm.tree.InsnNode"); function initializeCoreMod() { return { transformerName: { 'target': { 'type': 'CLASS', 'name': 'net.minecraft.inventory.container.WorkbenchContainer' }, 'transformer': function (classNode) { var methods = classNode.methods; var targetMethodName = ASMAPI.mapMethod("func_217066_a"); // no name set yet for (var i in methods) { var method = methods[i]; if (method.name.equals(targetMethodName)) { transform(method); break; } } return classNode; } } }; } function transform(method) { var instrList = method.instructions; instrList.clear(); instrList.add(new VarInsnNode(Opcodes.ILOAD, 0)); instrList.add(new VarInsnNode(Opcodes.ALOAD, 1)); instrList.add(new VarInsnNode(Opcodes.ALOAD, 2)); instrList.add(new VarInsnNode(Opcodes.ALOAD, 3)); instrList.add(new VarInsnNode(Opcodes.ALOAD, 4)); instrList.add(new MethodInsnNode(Opcodes.INVOKESTATIC, "me/kcm/Hooks", "onCraft", "(ILnet/minecraft/world/World;Lnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/inventory/CraftingInventory;Lnet/minecraft/inventory/CraftResultInventory;)V", false)); instrList.add(new InsnNode(Opcodes.RETURN)); }