Skip to content

Commit

Permalink
IMixinFixer.fix now takes a dedicated MixinNodeTransformer argument
Browse files Browse the repository at this point in the history
MixinNodeTransformer supersedes the old MixinFixerUtils and doesn't expose the ClassNode of the mixin to Fixers.
ModMixinFixer.getFixers has also been changed, now taking an IMixinInfo instead of the FQN of the mixin.
  • Loading branch information
XXMA16 committed Sep 18, 2023
1 parent 0a0b8fb commit 745b534
Show file tree
Hide file tree
Showing 7 changed files with 450 additions and 175 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package me.modmuss50.optifabric.compat;

import me.modmuss50.optifabric.compat.fix.IMixinFixer;
import me.modmuss50.optifabric.compat.fix.ModMixinFixer;
import me.modmuss50.optifabric.mod.OptifabricError;
import me.modmuss50.optifabric.mod.OptifabricSetup;
Expand Down Expand Up @@ -55,9 +54,9 @@ private static void prepareMixin(IMixinInfo mixinInfo, ClassNode mixinNode) {
// Don't scan the whole class again.
return;
}
List<IMixinFixer> fixers = ModMixinFixer.INSTANCE.getFixers(mixinInfo.getClassName());
fixers.forEach(fixer -> fixer.fix(mixinInfo, mixinNode));
if (fixers.stream().anyMatch(IMixinFixer::shouldUpdateClassInfo)) {
MixinNodeTransformer transformer = new MixinNodeTransformer(mixinInfo, mixinNode);
ModMixinFixer.INSTANCE.getFixers(mixinInfo).forEach(fixer -> fixer.fix(transformer));
if (transformer.shouldUpdateClassInfo()) {
mixinInfo.getTargetClasses().forEach(target -> CLASS_INFO_UPDATES.put(target, false));
}
PRE_MIXINS.add(mixinNode);
Expand Down Expand Up @@ -100,7 +99,7 @@ private static void handleErrorInjectors(IMixinInfo mixinInfo, ClassNode mixinNo
}

private static String getError(IMixinInfo mixinInfo, MethodNode method) {
boolean compat = !ModMixinFixer.INSTANCE.getFixers(mixinInfo.getClassName()).isEmpty();
boolean compat = !ModMixinFixer.INSTANCE.getFixers(mixinInfo).isEmpty();
return String.format("Injector method %s in %s couldn't apply due to " +
(compat ? "outdated compatibility patch" : "missing compatibility patch!") +
" Please report this issue.",
Expand Down
Loading

0 comments on commit 745b534

Please sign in to comment.