Skip to content

Commit c639236

Browse files
committed
mixin engine finally fixed
1 parent 19edd1b commit c639236

File tree

3 files changed

+12
-46
lines changed

3 files changed

+12
-46
lines changed

src/main/java/com/falsepattern/lib/asm/ASMUtil.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ public static ClassNode parseClass(byte[] bytes, int readerFlags) {
181181
@StableAPI.Expose
182182
public static byte[] serializeClass(ClassNode cn, int writerFlags) {
183183
val writer = new ClassWriter(writerFlags);
184+
cn.accept(writer);
184185
return writer.toByteArray();
185186
}
186187

src/main/java/com/falsepattern/lib/internal/asm/IMixinPluginTransformer.java

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,6 @@
2626
import com.falsepattern.lib.mixin.MixinInfo;
2727
import lombok.val;
2828
import org.objectweb.asm.tree.ClassNode;
29-
import org.objectweb.asm.tree.MethodNode;
30-
31-
import java.util.ArrayList;
3229

3330
public class IMixinPluginTransformer implements IClassNodeTransformer {
3431
@Override
@@ -44,26 +41,16 @@ public boolean shouldTransform(ClassNode cn, String transformedName, boolean obf
4441
@Override
4542
public void transform(ClassNode cn, String transformedName, boolean obfuscated) {
4643
val methods = cn.methods;
47-
val remove = new ArrayList<MethodNode>();
48-
if (MixinInfo.isMixinBooterLegacy()) {
49-
FPTransformer.LOG.info("Detected MixinBooterLegacy. Selecting proper methods in IMixinPlugin.");
50-
for (val method : methods) {
51-
if (method.name.equals("preApply_obsolete") || method.name.equals("postApply_obsolete")) {
52-
remove.add(method);
53-
}
54-
}
55-
methods.removeAll(remove);
56-
} else {
57-
FPTransformer.LOG.info("Could not detect MixinBooterLegacy. Selecting proper methods in IMixinPlugin.");
44+
if (!MixinInfo.isMixinBooterLegacy()) {
45+
FPTransformer.LOG.info("Could not detect MixinBooterLegacy. Converting IMixinPlugin to legacy compat mode.");
5846
for (val method : methods) {
5947
if (method.name.equals("preApply") || method.name.equals("postApply")) {
60-
remove.add(method);
61-
}
62-
}
63-
methods.removeAll(remove);
64-
for (val method : methods) {
65-
if (method.name.equals("preApply_obsolete") || method.name.equals("postApply_obsolete")) {
66-
method.name = method.name.substring(0, method.name.indexOf('_'));
48+
method.desc = method.desc.replace("org/spongepowered/libraries/org/objectweb/asm/tree/ClassNode",
49+
"org/spongepowered/asm/lib/tree/ClassNode");
50+
for (val local: method.localVariables) {
51+
local.desc = local.desc.replace("org/spongepowered/libraries/org/objectweb/asm/tree/ClassNode",
52+
"org/spongepowered/asm/lib/tree/ClassNode");
53+
}
6754
}
6855
}
6956
}

src/main/java/com/falsepattern/lib/mixin/IMixinPlugin.java

Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@
2525
import lombok.val;
2626
import org.apache.logging.log4j.LogManager;
2727
import org.apache.logging.log4j.Logger;
28-
import org.spongepowered.asm.lib.tree.ClassNode;
2928
import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin;
3029
import org.spongepowered.asm.mixin.extensibility.IMixinInfo;
30+
import org.spongepowered.libraries.org.objectweb.asm.tree.ClassNode;
3131

3232
import net.minecraft.launchwrapper.Launch;
3333

@@ -146,37 +146,15 @@ default boolean loadJarOf(final ITargetedMod mod) {
146146
return success;
147147
}
148148

149-
/**
150-
* Fallback for spongemixins. Removed for mixinbooter
151-
*/
152-
@StableAPI.Expose(since = "__INTERNAL__")
153-
default void preApply_obsolete(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {
154-
155-
}
156-
157-
/**
158-
* Fallback for spongemixins. Removed for mixinbooter
159-
*/
160-
@StableAPI.Expose(since = "__INTERNAL__")
161-
default void postApply_obsolete(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {
162-
163-
}
164-
165-
/**
166-
* Regular behaviour for mixinbooter. Removed for spongemixins
167-
*/
168149
@Override
169150
@StableAPI.Expose(since = "__INTERNAL__")
170-
default void preApply(String targetClassName, org.spongepowered.libraries.org.objectweb.asm.tree.ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {
151+
default void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {
171152

172153
}
173154

174-
/**
175-
* Regular behaviour for mixinbooter. Removed for spongemixins
176-
*/
177155
@Override
178156
@StableAPI.Expose(since = "__INTERNAL__")
179-
default void postApply(String targetClassName, org.spongepowered.libraries.org.objectweb.asm.tree.ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {
157+
default void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {
180158

181159
}
182160
}

0 commit comments

Comments
 (0)