From e16ea2e4ecdbda1a7e36a14d1be96f4bc689e917 Mon Sep 17 00:00:00 2001 From: Su5eD Date: Sun, 3 Mar 2024 11:17:23 +0100 Subject: [PATCH] Handle GUI injector patch offset difference Update adapter definition to 1.11.28 Fixes #864 --- build.gradle.kts | 4 +-- gradle.properties | 4 +-- .../AccessorRedirectTransformer.java | 8 +++--- .../transformer/FieldToMethodTransformer.java | 2 +- .../transformer/MixinPatchTransformer.java | 26 +++++++++---------- .../connector/transformer/MixinPatches.java | 18 ++++++------- .../OptimizedRenamingTransformer.java | 4 +-- .../jar/BytecodeFixerUpperFrontend.java | 6 ++--- .../transformer/jar/JarTransformInstance.java | 14 +++++----- .../transformer/jar/RenamingClassLookup.java | 2 +- .../patch/ClassAnalysingTransformer.java | 6 ++--- .../patch/ClassNodeTransformer.java | 2 +- .../patch/ConnectorRefmapHolder.java | 2 +- .../patch/EnvironmentStripperTransformer.java | 8 +++--- .../patch/RedirectAccessorToMethod.java | 12 ++++----- 15 files changed, 59 insertions(+), 59 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 84dc700c..fd8645bd 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -316,9 +316,9 @@ dependencies { shade(group = "net.minecraftforge", name = "srgutils", version = "0.5.4") shade(group = "net.fabricmc", name = "access-widener", version = versionAccessWidener) shade(group = "dev.su5ed.sinytra", name = "ForgeAutoRenamingTool", version = versionForgeAutoRenamingTool) - shade(group = "dev.su5ed.sinytra.adapter", name = "definition", version = versionAdapterDefinition) { isTransitive = false } + shade(group = "org.sinytra.adapter", name = "definition", version = versionAdapterDefinition) { isTransitive = false } shade(group = "io.github.steelwoolmc", name = "mixin-transmogrifier", version = versionMixinTransmog) - adapterData(group = "dev.su5ed.sinytra.adapter", name = "adapter", version = versionAdapter) + adapterData(group = "org.sinytra.adapter", name = "adapter", version = versionAdapter) annotationProcessor(group = "net.fabricmc", name = "sponge-mixin", version = versionMixin) compileOnly(group = "net.fabricmc", name = "sponge-mixin", version = versionMixin) diff --git a/gradle.properties b/gradle.properties index 36eab63d..ed7aa169 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,8 +5,8 @@ org.gradle.daemon=true # Versions versionConnector=1.0.0-beta.38 -versionAdapter=1.11.19-1.20.1-20240126.215012 -versionAdapterDefinition=1.11.26 +versionAdapter=1.11.28-1.20.1-20240303.100300 +versionAdapterDefinition=1.11.28 versionMc=1.20.1 versionForge=47.1.3 diff --git a/src/main/java/dev/su5ed/sinytra/connector/transformer/AccessorRedirectTransformer.java b/src/main/java/dev/su5ed/sinytra/connector/transformer/AccessorRedirectTransformer.java index e0d9a7ea..f738e736 100644 --- a/src/main/java/dev/su5ed/sinytra/connector/transformer/AccessorRedirectTransformer.java +++ b/src/main/java/dev/su5ed/sinytra/connector/transformer/AccessorRedirectTransformer.java @@ -1,9 +1,9 @@ package dev.su5ed.sinytra.connector.transformer; -import dev.su5ed.sinytra.adapter.patch.api.MethodContext; -import dev.su5ed.sinytra.adapter.patch.api.Patch; -import dev.su5ed.sinytra.adapter.patch.api.PatchContext; -import dev.su5ed.sinytra.adapter.patch.api.PatchEnvironment; +import org.sinytra.adapter.patch.api.MethodContext; +import org.sinytra.adapter.patch.api.Patch; +import org.sinytra.adapter.patch.api.PatchContext; +import org.sinytra.adapter.patch.api.PatchEnvironment; import dev.su5ed.sinytra.connector.transformer.patch.ClassNodeTransformer; import dev.su5ed.sinytra.connector.transformer.patch.RedirectAccessorToMethod; import net.minecraftforge.coremod.api.ASMAPI; diff --git a/src/main/java/dev/su5ed/sinytra/connector/transformer/FieldToMethodTransformer.java b/src/main/java/dev/su5ed/sinytra/connector/transformer/FieldToMethodTransformer.java index f1eed5a2..f7135d87 100644 --- a/src/main/java/dev/su5ed/sinytra/connector/transformer/FieldToMethodTransformer.java +++ b/src/main/java/dev/su5ed/sinytra/connector/transformer/FieldToMethodTransformer.java @@ -2,7 +2,7 @@ import com.google.common.collect.ImmutableMap; import com.mojang.logging.LogUtils; -import dev.su5ed.sinytra.adapter.patch.api.Patch; +import org.sinytra.adapter.patch.api.Patch; import dev.su5ed.sinytra.connector.transformer.patch.ClassNodeTransformer; import net.fabricmc.accesswidener.AccessWidenerReader; import net.fabricmc.accesswidener.AccessWidenerVisitor; diff --git a/src/main/java/dev/su5ed/sinytra/connector/transformer/MixinPatchTransformer.java b/src/main/java/dev/su5ed/sinytra/connector/transformer/MixinPatchTransformer.java index 2851b55b..82871ce1 100644 --- a/src/main/java/dev/su5ed/sinytra/connector/transformer/MixinPatchTransformer.java +++ b/src/main/java/dev/su5ed/sinytra/connector/transformer/MixinPatchTransformer.java @@ -8,19 +8,19 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.mojang.logging.LogUtils; -import dev.su5ed.sinytra.adapter.patch.LVTOffsets; -import dev.su5ed.sinytra.adapter.patch.api.ClassTransform; -import dev.su5ed.sinytra.adapter.patch.api.MixinClassGenerator; -import dev.su5ed.sinytra.adapter.patch.api.Patch; -import dev.su5ed.sinytra.adapter.patch.api.PatchContext; -import dev.su5ed.sinytra.adapter.patch.api.PatchEnvironment; -import dev.su5ed.sinytra.adapter.patch.fixes.FieldTypePatchTransformer; -import dev.su5ed.sinytra.adapter.patch.fixes.FieldTypeUsageTransformer; -import dev.su5ed.sinytra.adapter.patch.transformer.dynamic.DynamicAnonymousShadowFieldTypePatch; -import dev.su5ed.sinytra.adapter.patch.transformer.dynamic.DynamicInheritedInjectionPointPatch; -import dev.su5ed.sinytra.adapter.patch.transformer.dynamic.DynamicInjectorOrdinalPatch; -import dev.su5ed.sinytra.adapter.patch.transformer.dynamic.DynamicLVTPatch; -import dev.su5ed.sinytra.adapter.patch.transformer.dynamic.DynamicModifyVarAtReturnPatch; +import org.sinytra.adapter.patch.LVTOffsets; +import org.sinytra.adapter.patch.api.ClassTransform; +import org.sinytra.adapter.patch.api.MixinClassGenerator; +import org.sinytra.adapter.patch.api.Patch; +import org.sinytra.adapter.patch.api.PatchContext; +import org.sinytra.adapter.patch.api.PatchEnvironment; +import org.sinytra.adapter.patch.fixes.FieldTypePatchTransformer; +import org.sinytra.adapter.patch.fixes.FieldTypeUsageTransformer; +import org.sinytra.adapter.patch.transformer.dynamic.DynamicAnonymousShadowFieldTypePatch; +import org.sinytra.adapter.patch.transformer.dynamic.DynamicInheritedInjectionPointPatch; +import org.sinytra.adapter.patch.transformer.dynamic.DynamicInjectorOrdinalPatch; +import org.sinytra.adapter.patch.transformer.dynamic.DynamicLVTPatch; +import org.sinytra.adapter.patch.transformer.dynamic.DynamicModifyVarAtReturnPatch; import dev.su5ed.sinytra.connector.ConnectorUtil; import dev.su5ed.sinytra.connector.transformer.patch.EnvironmentStripperTransformer; import net.minecraftforge.fart.api.Transformer; diff --git a/src/main/java/dev/su5ed/sinytra/connector/transformer/MixinPatches.java b/src/main/java/dev/su5ed/sinytra/connector/transformer/MixinPatches.java index f1ebde88..73f9f882 100644 --- a/src/main/java/dev/su5ed/sinytra/connector/transformer/MixinPatches.java +++ b/src/main/java/dev/su5ed/sinytra/connector/transformer/MixinPatches.java @@ -1,9 +1,5 @@ package dev.su5ed.sinytra.connector.transformer; -import dev.su5ed.sinytra.adapter.patch.api.MixinConstants; -import dev.su5ed.sinytra.adapter.patch.api.Patch; -import dev.su5ed.sinytra.adapter.patch.transformer.ModifyMethodAccess; -import dev.su5ed.sinytra.adapter.patch.transformer.ModifyMethodParams; import org.objectweb.asm.Opcodes; import org.objectweb.asm.Type; import org.objectweb.asm.tree.AbstractInsnNode; @@ -15,6 +11,10 @@ import org.objectweb.asm.tree.MethodInsnNode; import org.objectweb.asm.tree.TypeInsnNode; import org.objectweb.asm.tree.VarInsnNode; +import org.sinytra.adapter.patch.api.MixinConstants; +import org.sinytra.adapter.patch.api.Patch; +import org.sinytra.adapter.patch.transformer.ModifyMethodAccess; +import org.sinytra.adapter.patch.transformer.ModifyMethodParams; import java.util.List; import java.util.ListIterator; @@ -214,9 +214,9 @@ public static List getPatches() { .targetInjectionPoint("TAIL", "") .modifyTarget("connector_postRender") .build(), - buildGuiPatch(2, 2, "renderFood", "Lnet/minecraft/client/Minecraft;m_91307_()Lnet/minecraft/util/profiling/ProfilerFiller;"), - buildGuiPatch(3, 3, "renderAir", "Lnet/minecraft/client/Minecraft;m_91307_()Lnet/minecraft/util/profiling/ProfilerFiller;"), - buildGuiPatch(3, 5, "renderFood", "Lnet/minecraft/client/gui/GuiGraphics;m_280218_(Lnet/minecraft/resources/ResourceLocation;IIIIII)V"), + buildGuiPatch(2, 2, "renderFood", "Lnet/minecraft/client/Minecraft;m_91307_()Lnet/minecraft/util/profiling/ProfilerFiller;", false), + buildGuiPatch(3, 3, "renderAir", "Lnet/minecraft/client/Minecraft;m_91307_()Lnet/minecraft/util/profiling/ProfilerFiller;", false), + buildGuiPatch(3, 5, "renderFood", "Lnet/minecraft/client/gui/GuiGraphics;m_280218_(Lnet/minecraft/resources/ResourceLocation;IIIIII)V", true), Patch.builder() .targetClass("net/minecraft/client/gui/Gui") .targetMethod("m_280173_(Lnet/minecraft/client/gui/GuiGraphics;)V") @@ -543,7 +543,7 @@ public static List getPatches() { .collect(Collectors.toList()); // Mutable list } - private static Patch buildGuiPatch(int minOrdinal, int maxOrdinal, String targetMethodName, String injectionPoint) { + private static Patch buildGuiPatch(int minOrdinal, int maxOrdinal, String targetMethodName, String injectionPoint, boolean offsetOrdinal) { return Patch.builder() .targetClass("net/minecraft/client/gui/Gui") .targetMethod("m_280173_(Lnet/minecraft/client/gui/GuiGraphics;)V") @@ -555,7 +555,7 @@ private static Patch buildGuiPatch(int minOrdinal, int maxOrdinal, String target .transform((classNode, methodNode, methodContext, context) -> { methodContext.injectionPointAnnotation() .getValue("ordinal") - .ifPresent(o -> o.set(0)); + .ifPresent(o -> o.set(offsetOrdinal ? o.get() - minOrdinal : 0)); return Patch.Result.APPLY; }) .build(); diff --git a/src/main/java/dev/su5ed/sinytra/connector/transformer/OptimizedRenamingTransformer.java b/src/main/java/dev/su5ed/sinytra/connector/transformer/OptimizedRenamingTransformer.java index 76820cd6..ab764ae7 100644 --- a/src/main/java/dev/su5ed/sinytra/connector/transformer/OptimizedRenamingTransformer.java +++ b/src/main/java/dev/su5ed/sinytra/connector/transformer/OptimizedRenamingTransformer.java @@ -1,7 +1,7 @@ package dev.su5ed.sinytra.connector.transformer; -import dev.su5ed.sinytra.adapter.patch.selector.AnnotationHandle; -import dev.su5ed.sinytra.adapter.patch.util.MethodQualifier; +import org.sinytra.adapter.patch.selector.AnnotationHandle; +import org.sinytra.adapter.patch.util.MethodQualifier; import dev.su5ed.sinytra.connector.transformer.jar.IntermediateMapping; import net.minecraftforge.fart.api.ClassProvider; import net.minecraftforge.fart.api.Transformer; diff --git a/src/main/java/dev/su5ed/sinytra/connector/transformer/jar/BytecodeFixerUpperFrontend.java b/src/main/java/dev/su5ed/sinytra/connector/transformer/jar/BytecodeFixerUpperFrontend.java index 7531402f..b800b010 100644 --- a/src/main/java/dev/su5ed/sinytra/connector/transformer/jar/BytecodeFixerUpperFrontend.java +++ b/src/main/java/dev/su5ed/sinytra/connector/transformer/jar/BytecodeFixerUpperFrontend.java @@ -1,9 +1,9 @@ package dev.su5ed.sinytra.connector.transformer.jar; import com.mojang.datafixers.util.Pair; -import dev.su5ed.sinytra.adapter.patch.fixes.BytecodeFixerUpper; -import dev.su5ed.sinytra.adapter.patch.fixes.SimpleTypeAdapter; -import dev.su5ed.sinytra.adapter.patch.fixes.TypeAdapter; +import org.sinytra.adapter.patch.fixes.BytecodeFixerUpper; +import org.sinytra.adapter.patch.fixes.SimpleTypeAdapter; +import org.sinytra.adapter.patch.fixes.TypeAdapter; import dev.su5ed.sinytra.connector.ConnectorUtil; import net.minecraftforge.coremod.api.ASMAPI; import net.minecraftforge.forgespi.locating.IModFile; diff --git a/src/main/java/dev/su5ed/sinytra/connector/transformer/jar/JarTransformInstance.java b/src/main/java/dev/su5ed/sinytra/connector/transformer/jar/JarTransformInstance.java index d3530fe1..2cfc13d8 100644 --- a/src/main/java/dev/su5ed/sinytra/connector/transformer/jar/JarTransformInstance.java +++ b/src/main/java/dev/su5ed/sinytra/connector/transformer/jar/JarTransformInstance.java @@ -5,13 +5,13 @@ import com.google.gson.JsonElement; import com.mojang.logging.LogUtils; import com.mojang.serialization.JsonOps; -import dev.su5ed.sinytra.adapter.patch.LVTOffsets; -import dev.su5ed.sinytra.adapter.patch.api.GlobalReferenceMapper; -import dev.su5ed.sinytra.adapter.patch.api.Patch; -import dev.su5ed.sinytra.adapter.patch.api.PatchEnvironment; -import dev.su5ed.sinytra.adapter.patch.serialization.PatchSerialization; -import dev.su5ed.sinytra.adapter.patch.util.provider.ClassLookup; -import dev.su5ed.sinytra.adapter.patch.util.provider.ZipClassLookup; +import org.sinytra.adapter.patch.LVTOffsets; +import org.sinytra.adapter.patch.api.GlobalReferenceMapper; +import org.sinytra.adapter.patch.api.Patch; +import org.sinytra.adapter.patch.api.PatchEnvironment; +import org.sinytra.adapter.patch.serialization.PatchSerialization; +import org.sinytra.adapter.patch.util.provider.ClassLookup; +import org.sinytra.adapter.patch.util.provider.ZipClassLookup; import dev.su5ed.sinytra.connector.locator.EmbeddedDependencies; import dev.su5ed.sinytra.connector.service.FabricMixinBootstrap; import dev.su5ed.sinytra.connector.transformer.AccessWidenerTransformer; diff --git a/src/main/java/dev/su5ed/sinytra/connector/transformer/jar/RenamingClassLookup.java b/src/main/java/dev/su5ed/sinytra/connector/transformer/jar/RenamingClassLookup.java index 4b904ef2..be3e871d 100644 --- a/src/main/java/dev/su5ed/sinytra/connector/transformer/jar/RenamingClassLookup.java +++ b/src/main/java/dev/su5ed/sinytra/connector/transformer/jar/RenamingClassLookup.java @@ -1,6 +1,6 @@ package dev.su5ed.sinytra.connector.transformer.jar; -import dev.su5ed.sinytra.adapter.patch.util.provider.ClassLookup; +import org.sinytra.adapter.patch.util.provider.ClassLookup; import net.minecraftforge.fart.api.ClassProvider; import net.minecraftforge.fart.internal.EnhancedClassRemapper; import net.minecraftforge.fart.internal.EnhancedRemapper; diff --git a/src/main/java/dev/su5ed/sinytra/connector/transformer/patch/ClassAnalysingTransformer.java b/src/main/java/dev/su5ed/sinytra/connector/transformer/patch/ClassAnalysingTransformer.java index 2d071d76..79e877ff 100644 --- a/src/main/java/dev/su5ed/sinytra/connector/transformer/patch/ClassAnalysingTransformer.java +++ b/src/main/java/dev/su5ed/sinytra/connector/transformer/patch/ClassAnalysingTransformer.java @@ -1,8 +1,8 @@ package dev.su5ed.sinytra.connector.transformer.patch; -import dev.su5ed.sinytra.adapter.patch.analysis.MethodCallAnalyzer; -import dev.su5ed.sinytra.adapter.patch.api.Patch; -import dev.su5ed.sinytra.adapter.patch.util.MethodQualifier; +import org.sinytra.adapter.patch.analysis.MethodCallAnalyzer; +import org.sinytra.adapter.patch.api.Patch; +import org.sinytra.adapter.patch.util.MethodQualifier; import dev.su5ed.sinytra.connector.transformer.jar.IntermediateMapping; import net.minecraftforge.srgutils.IMappingFile; import org.jetbrains.annotations.Nullable; diff --git a/src/main/java/dev/su5ed/sinytra/connector/transformer/patch/ClassNodeTransformer.java b/src/main/java/dev/su5ed/sinytra/connector/transformer/patch/ClassNodeTransformer.java index 3c42eb9b..74f46ab5 100644 --- a/src/main/java/dev/su5ed/sinytra/connector/transformer/patch/ClassNodeTransformer.java +++ b/src/main/java/dev/su5ed/sinytra/connector/transformer/patch/ClassNodeTransformer.java @@ -1,6 +1,6 @@ package dev.su5ed.sinytra.connector.transformer.patch; -import dev.su5ed.sinytra.adapter.patch.api.Patch; +import org.sinytra.adapter.patch.api.Patch; import net.minecraftforge.fart.api.Transformer; import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassWriter; diff --git a/src/main/java/dev/su5ed/sinytra/connector/transformer/patch/ConnectorRefmapHolder.java b/src/main/java/dev/su5ed/sinytra/connector/transformer/patch/ConnectorRefmapHolder.java index 5e2ae156..1f6b98cc 100644 --- a/src/main/java/dev/su5ed/sinytra/connector/transformer/patch/ConnectorRefmapHolder.java +++ b/src/main/java/dev/su5ed/sinytra/connector/transformer/patch/ConnectorRefmapHolder.java @@ -1,6 +1,6 @@ package dev.su5ed.sinytra.connector.transformer.patch; -import dev.su5ed.sinytra.adapter.patch.api.RefmapHolder; +import org.sinytra.adapter.patch.api.RefmapHolder; import dev.su5ed.sinytra.connector.transformer.SrgRemappingReferenceMapper; import java.util.HashSet; diff --git a/src/main/java/dev/su5ed/sinytra/connector/transformer/patch/EnvironmentStripperTransformer.java b/src/main/java/dev/su5ed/sinytra/connector/transformer/patch/EnvironmentStripperTransformer.java index 5a7d629f..87d82b83 100644 --- a/src/main/java/dev/su5ed/sinytra/connector/transformer/patch/EnvironmentStripperTransformer.java +++ b/src/main/java/dev/su5ed/sinytra/connector/transformer/patch/EnvironmentStripperTransformer.java @@ -1,9 +1,9 @@ package dev.su5ed.sinytra.connector.transformer.patch; -import dev.su5ed.sinytra.adapter.patch.api.ClassTransform; -import dev.su5ed.sinytra.adapter.patch.api.Patch; -import dev.su5ed.sinytra.adapter.patch.api.PatchContext; -import dev.su5ed.sinytra.adapter.patch.selector.AnnotationValueHandle; +import org.sinytra.adapter.patch.api.ClassTransform; +import org.sinytra.adapter.patch.api.Patch; +import org.sinytra.adapter.patch.api.PatchContext; +import org.sinytra.adapter.patch.selector.AnnotationValueHandle; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.loader.api.FabricLoader; diff --git a/src/main/java/dev/su5ed/sinytra/connector/transformer/patch/RedirectAccessorToMethod.java b/src/main/java/dev/su5ed/sinytra/connector/transformer/patch/RedirectAccessorToMethod.java index c75318b7..9aaf7bd9 100644 --- a/src/main/java/dev/su5ed/sinytra/connector/transformer/patch/RedirectAccessorToMethod.java +++ b/src/main/java/dev/su5ed/sinytra/connector/transformer/patch/RedirectAccessorToMethod.java @@ -1,11 +1,11 @@ package dev.su5ed.sinytra.connector.transformer.patch; import com.mojang.logging.LogUtils; -import dev.su5ed.sinytra.adapter.patch.api.MethodContext; -import dev.su5ed.sinytra.adapter.patch.api.MethodTransform; -import dev.su5ed.sinytra.adapter.patch.api.MixinConstants; -import dev.su5ed.sinytra.adapter.patch.api.Patch; -import dev.su5ed.sinytra.adapter.patch.api.PatchContext; +import org.sinytra.adapter.patch.api.MethodContext; +import org.sinytra.adapter.patch.api.MethodTransform; +import org.sinytra.adapter.patch.api.MixinConstants; +import org.sinytra.adapter.patch.api.Patch; +import org.sinytra.adapter.patch.api.PatchContext; import org.objectweb.asm.AnnotationVisitor; import org.objectweb.asm.tree.ClassNode; import org.objectweb.asm.tree.MethodNode; @@ -14,7 +14,7 @@ import java.util.Collection; import java.util.Set; -import static dev.su5ed.sinytra.adapter.patch.PatchInstance.MIXINPATCH; +import static org.sinytra.adapter.patch.PatchInstance.MIXINPATCH; public record RedirectAccessorToMethod(String value) implements MethodTransform { private static final Logger LOGGER = LogUtils.getLogger();