From fd1792ccfd0e23ad0196356d29eabb6023bea4fe Mon Sep 17 00:00:00 2001 From: jchung01 Date: Thu, 26 Sep 2024 20:41:59 -0700 Subject: [PATCH] Change EntityPlayer ASM code for Java 21+ compat --- .../advancedRocketry/asm/ClassTransformer.java | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/main/java/zmaster587/advancedRocketry/asm/ClassTransformer.java b/src/main/java/zmaster587/advancedRocketry/asm/ClassTransformer.java index c9fb8e7a2..0195879d0 100644 --- a/src/main/java/zmaster587/advancedRocketry/asm/ClassTransformer.java +++ b/src/main/java/zmaster587/advancedRocketry/asm/ClassTransformer.java @@ -686,20 +686,17 @@ public byte[] transform(String name, String transformedName, LabelNode label = new LabelNode(); AbstractInsnNode pos; AbstractInsnNode ain = null; - int numSpec = 1; - int numAload = 7; for (int i = 0; i < onUpdate.instructions.size(); i++) { ain = onUpdate.instructions.get(i); - if (ain.getOpcode() == Opcodes.INVOKESPECIAL && numSpec-- == 0) { - + if (ain.getOpcode() == Opcodes.GETFIELD && ((FieldInsnNode) ain).name.equals(obf ? "by" : "openContainer")) { + ain = ain.getPrevious(); while (i < onUpdate.instructions.size()) { pos = onUpdate.instructions.get(i++); - if (pos.getOpcode() == Opcodes.ALOAD && numAload-- == 0) { - label = (LabelNode) pos.getPrevious().getPrevious().getPrevious(); + if (pos.getOpcode() == Opcodes.PUTFIELD && ((FieldInsnNode) pos).name.equals(obf ? "by" : "openContainer")) { + label = (LabelNode) pos.getNext(); break; } - } break; } @@ -711,7 +708,7 @@ public byte[] transform(String name, String transformedName, nodeAdd.add(new MethodInsnNode(Opcodes.INVOKESTATIC, "zmaster587/advancedRocketry/util/RocketInventoryHelper", "allowAccess", "(Ljava/lang/Object;)Z", false)); nodeAdd.add(new JumpInsnNode(Opcodes.IFEQ, label)); - onUpdate.instructions.insert(ain, nodeAdd); + onUpdate.instructions.insertBefore(ain, nodeAdd); //onUpdate.instructions.insertBefore(pos, label);