1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- 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));
- }
|