diff --git a/src/main/java/com/falsepattern/lib/asm/ASMUtil.java b/src/main/java/com/falsepattern/lib/asm/ASMUtil.java index 71f2131..6356d36 100644 --- a/src/main/java/com/falsepattern/lib/asm/ASMUtil.java +++ b/src/main/java/com/falsepattern/lib/asm/ASMUtil.java @@ -181,6 +181,7 @@ public class ASMUtil { @StableAPI.Expose public static byte[] serializeClass(ClassNode cn, int writerFlags) { val writer = new ClassWriter(writerFlags); + cn.accept(writer); return writer.toByteArray(); } diff --git a/src/main/java/com/falsepattern/lib/internal/asm/IMixinPluginTransformer.java b/src/main/java/com/falsepattern/lib/internal/asm/IMixinPluginTransformer.java index b424867..d31a10c 100644 --- a/src/main/java/com/falsepattern/lib/internal/asm/IMixinPluginTransformer.java +++ b/src/main/java/com/falsepattern/lib/internal/asm/IMixinPluginTransformer.java @@ -26,9 +26,6 @@ import com.falsepattern.lib.internal.Tags; import com.falsepattern.lib.mixin.MixinInfo; import lombok.val; import org.objectweb.asm.tree.ClassNode; -import org.objectweb.asm.tree.MethodNode; - -import java.util.ArrayList; public class IMixinPluginTransformer implements IClassNodeTransformer { @Override @@ -44,26 +41,16 @@ public class IMixinPluginTransformer implements IClassNodeTransformer { @Override public void transform(ClassNode cn, String transformedName, boolean obfuscated) { val methods = cn.methods; - val remove = new ArrayList(); - if (MixinInfo.isMixinBooterLegacy()) { - FPTransformer.LOG.info("Detected MixinBooterLegacy. Selecting proper methods in IMixinPlugin."); - for (val method : methods) { - if (method.name.equals("preApply_obsolete") || method.name.equals("postApply_obsolete")) { - remove.add(method); - } - } - methods.removeAll(remove); - } else { - FPTransformer.LOG.info("Could not detect MixinBooterLegacy. Selecting proper methods in IMixinPlugin."); + if (!MixinInfo.isMixinBooterLegacy()) { + FPTransformer.LOG.info("Could not detect MixinBooterLegacy. Converting IMixinPlugin to legacy compat mode."); for (val method : methods) { if (method.name.equals("preApply") || method.name.equals("postApply")) { - remove.add(method); - } - } - methods.removeAll(remove); - for (val method : methods) { - if (method.name.equals("preApply_obsolete") || method.name.equals("postApply_obsolete")) { - method.name = method.name.substring(0, method.name.indexOf('_')); + method.desc = method.desc.replace("org/spongepowered/libraries/org/objectweb/asm/tree/ClassNode", + "org/spongepowered/asm/lib/tree/ClassNode"); + for (val local: method.localVariables) { + local.desc = local.desc.replace("org/spongepowered/libraries/org/objectweb/asm/tree/ClassNode", + "org/spongepowered/asm/lib/tree/ClassNode"); + } } } } diff --git a/src/main/java/com/falsepattern/lib/mixin/IMixinPlugin.java b/src/main/java/com/falsepattern/lib/mixin/IMixinPlugin.java index d39e9a6..ea3e990 100644 --- a/src/main/java/com/falsepattern/lib/mixin/IMixinPlugin.java +++ b/src/main/java/com/falsepattern/lib/mixin/IMixinPlugin.java @@ -25,9 +25,9 @@ import com.falsepattern.lib.util.FileUtil; import lombok.val; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.spongepowered.asm.lib.tree.ClassNode; import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; import org.spongepowered.asm.mixin.extensibility.IMixinInfo; +import org.spongepowered.libraries.org.objectweb.asm.tree.ClassNode; import net.minecraft.launchwrapper.Launch; @@ -146,37 +146,15 @@ public interface IMixinPlugin extends IMixinConfigPlugin { return success; } - /** - * Fallback for spongemixins. Removed for mixinbooter - */ - @StableAPI.Expose(since = "__INTERNAL__") - default void preApply_obsolete(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { - - } - - /** - * Fallback for spongemixins. Removed for mixinbooter - */ - @StableAPI.Expose(since = "__INTERNAL__") - default void postApply_obsolete(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { - - } - - /** - * Regular behaviour for mixinbooter. Removed for spongemixins - */ @Override @StableAPI.Expose(since = "__INTERNAL__") - default void preApply(String targetClassName, org.spongepowered.libraries.org.objectweb.asm.tree.ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { + default void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { } - /** - * Regular behaviour for mixinbooter. Removed for spongemixins - */ @Override @StableAPI.Expose(since = "__INTERNAL__") - default void postApply(String targetClassName, org.spongepowered.libraries.org.objectweb.asm.tree.ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { + default void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { } }