From a16f05642d6eeffa67354c65644636ec1d1eae0f Mon Sep 17 00:00:00 2001 From: jchung01 Date: Wed, 18 Mar 2026 10:14:56 -0700 Subject: [PATCH] Actually fix temp transformer logic for AE2 --- .../modularui/core/ClassTransformer.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/cleanroommc/modularui/core/ClassTransformer.java b/src/main/java/com/cleanroommc/modularui/core/ClassTransformer.java index 3292317ba..3b327a9d5 100644 --- a/src/main/java/com/cleanroommc/modularui/core/ClassTransformer.java +++ b/src/main/java/com/cleanroommc/modularui/core/ClassTransformer.java @@ -15,22 +15,31 @@ public class ClassTransformer implements IClassTransformer { @Override public byte[] transform(String name, String transformedName, byte[] basicClass) { - if (!ModularUICore.stackUpLoaded) { - // Temporarily use AE2's implementation if it's loaded - if (ModularUICore.ae2Loaded && transformedName.equals(PacketByteBufferVisitor.PACKET_UTIL_CLASS)) { + // Don't patch over StackUp + if (ModularUICore.stackUpLoaded) { + return basicClass; + } + // Patch using AE2's implementation if it's loaded (temporary, see #155) + if (ModularUICore.ae2Loaded) { + // AE2 is missing PacketUtilPatch, patch it in + if (transformedName.equals(PacketByteBufferVisitor.PACKET_UTIL_CLASS)) { Consumer consumer = (node) -> { ClassSplicer.spliceClasses(node, "com.cleanroommc.modularui.core.temp.PacketUtilPatch", "writeItemStackFromClientToServer"); }; ModularUICore.LOGGER.info("Applied {} ASM, specific for AE2, from ModularUI", transformedName); return ClassSplicer.processNode(basicClass, consumer); - } else if (transformedName.equals(PacketByteBufferVisitor.PACKET_UTIL_CLASS) || + } + // Don't patch over AE2's PacketBufferPatch + return basicClass; + } + // Otherwise apply ModularUI's patches + if (transformedName.equals(PacketByteBufferVisitor.PACKET_UTIL_CLASS) || transformedName.equals(PacketByteBufferVisitor.PACKET_BUFFER_CLASS)) { ClassWriter classWriter = new ClassWriter(0); new ClassReader(basicClass).accept(new PacketByteBufferVisitor(classWriter), 0); ModularUICore.LOGGER.info("Applied {} ASM from ModularUI", transformedName); return classWriter.toByteArray(); - } } return basicClass; }