From 5f64f5708b8f1bb46640170e3dcaa090d092b9d5 Mon Sep 17 00:00:00 2001 From: YuRaNnNzZZ Date: Wed, 9 Apr 2025 18:10:43 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=B0=D0=B2=D0=B0=D0=B9=D1=82=D0=B5=20?= =?UTF-8?q?=D0=BA=D0=BE=D1=80=D0=BE=D1=87=D0=B5=20=D1=81=D0=BA=D0=BE=D0=BF?= =?UTF-8?q?=D0=B8=D1=80=D1=83=D0=B5=D0=BC=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4?= =?UTF-8?q?=20=D0=B8=D0=B7=20=D0=B2=D0=B0=D0=BD=D0=B8=D0=BB=D0=BB=D1=8B=20?= =?UTF-8?q?=D0=BD=D0=B5=20=D0=BE=D1=81=D0=BE=D0=B1=D0=BE=20=D1=80=D0=B0?= =?UTF-8?q?=D0=B7=D0=B1=D0=B8=D1=80=D0=B0=D1=8F=D1=81=D1=8C=20=D0=B7=D0=B0?= =?UTF-8?q?=D1=87=D0=B5=D0=BC=20=D0=BE=D0=BD=20=D0=BD=D0=B0=D0=BC=20=D0=BD?= =?UTF-8?q?=D1=83=D0=B6=D0=B5=D0=BD,=20=D0=9F=D0=9E=D0=A5=D0=A3=D0=99=20?= =?UTF-8?q?=D0=A7=D0=A2=D0=9E=20=D0=90=D0=99=D0=A0=D0=9E=D0=9D=D0=A7=D0=95?= =?UTF-8?q?=D0=A1=D0=A2=D0=AB=20=D0=9D=D0=98=D0=9A=D0=9E=D0=93=D0=94=D0=90?= =?UTF-8?q?=20=D0=9D=D0=95=20=D0=91=D0=AB=D0=92=D0=90=D0=AE=D0=A2=20=D0=A1?= =?UTF-8?q?=D0=94=D0=92=D0=9E=D0=95=D0=9D=D0=9D=D0=AB=D0=95.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/META-INF/coremods.json | 3 +- .../resources/coremods/iron_chest_menus.js | 45 +++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/coremods/iron_chest_menus.js diff --git a/src/main/resources/META-INF/coremods.json b/src/main/resources/META-INF/coremods.json index 677dde2cf..715af5a6c 100644 --- a/src/main/resources/META-INF/coremods.json +++ b/src/main/resources/META-INF/coremods.json @@ -1,5 +1,6 @@ { "code_injector": "coremods/code_injector.js", "chest_menus": "coremods/chest_menus.js", - "limb_brush_overclock": "coremods/limb_brush_overclock.js" + "limb_brush_overclock": "coremods/limb_brush_overclock.js", + "iron_chest_menus": "coremods/iron_chest_menus.js" } \ No newline at end of file diff --git a/src/main/resources/coremods/iron_chest_menus.js b/src/main/resources/coremods/iron_chest_menus.js new file mode 100644 index 000000000..192b72f69 --- /dev/null +++ b/src/main/resources/coremods/iron_chest_menus.js @@ -0,0 +1,45 @@ + +var Opcodes = Java.type('org.objectweb.asm.Opcodes') +var MethodNode = Java.type('org.objectweb.asm.tree.MethodNode') +var VarInsnNode = Java.type('org.objectweb.asm.tree.VarInsnNode') +var MethodInsnNode = Java.type('org.objectweb.asm.tree.MethodInsnNode') +var InsnNode = Java.type('org.objectweb.asm.tree.InsnNode') +var TypeInsnNode = Java.type('org.objectweb.asm.tree.TypeInsnNode') + + +var isOwnPatches = [ + 'com.progwml6.ironchest.common.block.regular.entity.AbstractIronChestBlockEntity$1', +] + +function initializeCoreMod() { + var result = {} + + for (i in isOwnPatches) { + var clazz = isOwnPatches[i] + + result[clazz] = { + 'target': { + 'type': 'METHOD', + 'class': clazz, + 'methodName': 'isOwnContainer', + 'methodDesc': '(Lnet/minecraft/world/entity/player/Player;)Z' + }, + 'transformer': function(node) { + for (var i = 0; i < node.instructions.size(); i++) { + var instr = node.instructions.get(i) + + if ((instr.getOpcode() == Opcodes.INSTANCEOF || instr.getOpcode() == Opcodes.CHECKCAST) && instr.desc == 'com/progwml6/ironchest/common/inventory/IronChestMenu') { + instr.desc = 'ru/dbotthepony/mc/otm/compat/ironchest/MatteryIronChestMenu' + } else if (instr.getOpcode() == Opcodes.INVOKEVIRTUAL && instr.owner == 'com/progwml6/ironchest/common/inventory/IronChestMenu' && instr.name == 'getContainer') { + instr.owner = 'ru/dbotthepony/mc/otm/compat/ironchest/MatteryIronChestMenu' + instr.name = 'getContainer' + } + } + + return node + } + } + } + + return result +}