LlamaLad7 / MixinExtras

Companion library to SpongePowered Mixin with many custom injectors for a more expressive experience.
MIT License
309 stars 17 forks source link

[0.2.0-beta-5] Forge/Quilt launch failure for 1.19.3 Architectury #26

Closed kristofbolyai closed 1 year ago

kristofbolyai commented 1 year ago

Using

Architectury Forge/Fabric/Quilt 1.19.3

Gradle

build.gradle (quilt) - same as fabric

shadowImplementation(annotationProcessor("com.github.llamalad7.mixinextras:mixinextras-fabric:${rootProject.mixinextras_version}")) { transitive false }

build.gradle (forge)

implementation(annotationProcessor("com.github.llamalad7.mixinextras:mixinextras-common:${rootProject.mixinextras_version}"))
implementation(include("com.github.llamalad7.mixinextras:mixinextras-forge:${rootProject.mixinextras_version}"))

build.gradle (common)

implementation(annotationProcessor("com.github.llamalad7.mixinextras:mixinextras-common:${rootProject.mixinextras_version}"))

Expected

Forge, Fabric, Quilt runs fine.

Result

Quilt and Forge does not launch.

Quilt error

Dependency for mod 'com_github_llamalad7_mixinextras' on fabricloader versions [>=0.14.11] (0 valid options, 1 invalid options)
    x provided mod 'fabricloader' version '0.14.10' from mod 'quilt_loader' version 0.17.7 loaded from /Users/kristof/Artemis/.gradle/loom-cache/remapped_mods/loom_mappings_1_19_3_layered_hash_955958575_v2_arch_quilt/org/quiltmc/quilt-loader/0.17.7/quilt-loader-0.17.7.jar
    at org.quiltmc.loader.impl.QuiltLoaderImpl.load(QuiltLoaderImpl.java:214) ~[quilt-loader-0.17.7.jar:?]
    at org.quiltmc.loader.impl.launch.knot.Knot.init(Knot.java:141) ~[quilt-loader-0.17.7.jar:?]
    at org.quiltmc.loader.impl.launch.knot.Knot.launch(Knot.java:70) ~[quilt-loader-0.17.7.jar:?]
    at org.quiltmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:24) ~[quilt-loader-0.17.7.jar:?]
    at net.fabricmc.devlaunchinjector.Main.main(Main.java:86) ~[dev-launch-injector-0.2.1+build.8.jar:?]
    at dev.architectury.transformer.TransformerRuntime.main(TransformerRuntime.java:217) ~[architectury-transformer-5.2.72-runtime.jar:5.2.72]

Forge error

[08:31:18] [main/ERROR] (JarInJarDependencyLocator) Failed to load mod file META-INF/jars/MixinExtras-0.2.0-beta.5.jar from mixinextras-forge-0.2.0-beta.5.jar
Exception in thread "main" net.minecraftforge.forgespi.locating.ModFileLoadingException: Failed to load mod file mixinextras-forge-0.2.0-beta.5.jar
    at MC-BOOTSTRAP/fmlloader@1.19.3-44.0.11/net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator.loadModFileFrom(JarInJarDependencyLocator.java:89)
    at MC-BOOTSTRAP/JarJarSelector@0.3.18/net.minecraftforge.jarjar.selection.JarSelector.recursivelyDetectContainedJars(JarSelector.java:144)
    at MC-BOOTSTRAP/JarJarSelector@0.3.18/net.minecraftforge.jarjar.selection.JarSelector.detect(JarSelector.java:122)
    at MC-BOOTSTRAP/JarJarSelector@0.3.18/net.minecraftforge.jarjar.selection.JarSelector.detectAndSelect(JarSelector.java:33)
    at MC-BOOTSTRAP/fmlloader@1.19.3-44.0.11/net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator.scanMods(JarInJarDependencyLocator.java:49)
    at MC-BOOTSTRAP/fmlloader@1.19.3-44.0.11/net.minecraftforge.fml.loading.moddiscovery.ModDiscoverer.discoverMods(ModDiscoverer.java:127)
    at MC-BOOTSTRAP/fmlloader@1.19.3-44.0.11/net.minecraftforge.fml.loading.FMLLoader.beginModScan(FMLLoader.java:166)
    at MC-BOOTSTRAP/fmlloader@1.19.3-44.0.11/net.minecraftforge.fml.loading.FMLServiceProvider.beginScanning(FMLServiceProvider.java:86)
    at MC-BOOTSTRAP/cpw.mods.modlauncher@10.0.8/cpw.mods.modlauncher.TransformationServiceDecorator.runScan(TransformationServiceDecorator.java:112)
    at MC-BOOTSTRAP/cpw.mods.modlauncher@10.0.8/cpw.mods.modlauncher.TransformationServicesHandler.lambda$runScanningTransformationServices$8(TransformationServicesHandler.java:100)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
    at java.base/java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1779)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575)
    at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)
    at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616)
    at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:622)
    at java.base/java.util.stream.ReferencePipeline.toList(ReferencePipeline.java:627)
    at MC-BOOTSTRAP/cpw.mods.modlauncher@10.0.8/cpw.mods.modlauncher.TransformationServicesHandler.runScanningTransformationServices(TransformationServicesHandler.java:102)
    at MC-BOOTSTRAP/cpw.mods.modlauncher@10.0.8/cpw.mods.modlauncher.TransformationServicesHandler.initializeTransformationServices(TransformationServicesHandler.java:55)
    at MC-BOOTSTRAP/cpw.mods.modlauncher@10.0.8/cpw.mods.modlauncher.Launcher.run(Launcher.java:87)
    at MC-BOOTSTRAP/cpw.mods.modlauncher@10.0.8/cpw.mods.modlauncher.Launcher.main(Launcher.java:77)
    at MC-BOOTSTRAP/cpw.mods.modlauncher@10.0.8/cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26)
    at MC-BOOTSTRAP/cpw.mods.modlauncher@10.0.8/cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23)
    at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141)
    at net.fabricmc.devlaunchinjector.Main.main(Main.java:86)
    at dev.architectury.transformer.TransformerRuntime.main(TransformerRuntime.java:217)
Caused by: java.lang.IllegalArgumentException: Out of range 1 to 1 for length 1
    at JarJarFileSystems@0.3.18/net.minecraftforge.jarjar.nio.pathfs.PathPath.subpath(PathPath.java:97)
    at JarJarFileSystems@0.3.18/net.minecraftforge.jarjar.nio.pathfs.PathPath.relativize(PathPath.java:186)
    at JarJarFileSystems@0.3.18/net.minecraftforge.jarjar.nio.pathfs.PathFileSystem.getOuterTarget(PathFileSystem.java:152)
    at JarJarFileSystems@0.3.18/net.minecraftforge.jarjar.nio.pathfs.PathFileSystem.checkAccess(PathFileSystem.java:225)
    at JarJarFileSystems@0.3.18/net.minecraftforge.jarjar.nio.pathfs.PathFileSystemProvider.checkAccess(PathFileSystemProvider.java:180)
    at java.base/java.nio.file.Files.exists(Files.java:2527)
    at cpw.mods.securejarhandler/cpw.mods.jarhandling.impl.Jar.lambda$new$3(Jar.java:80)
    at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:178)
    at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575)
    at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)
    at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616)
    at cpw.mods.securejarhandler/cpw.mods.jarhandling.impl.Jar.<init>(Jar.java:80)
    at cpw.mods.securejarhandler/cpw.mods.jarhandling.SecureJar.from(SecureJar.java:70)
    at MC-BOOTSTRAP/fmlloader@1.19.3-44.0.11/net.minecraftforge.fml.loading.moddiscovery.AbstractModProvider.createMod(AbstractModProvider.java:38)
    at MC-BOOTSTRAP/fmlloader@1.19.3-44.0.11/net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator.loadModFileFrom(JarInJarDependencyLocator.java:84)
    ... 27 more
kristofbolyai commented 1 year ago

Followed the wiki on gist. I am happy to assist in anything related, if needed. I have PRd this so you can clone and test easily, if there is a need to.

LlamaLad7 commented 1 year ago

The platform-specific artifacts are mods, you must not shade them, you must include them. Your quilt issue is because I depend on FabricLoader 0.14.11 to ensure this fix is present. Your forge issue is caused by a JarJar bug. In both cases simply update your loader. Quilt 0.18.2 and Forge 44.0.20 are the earliest that will work. Feel-free to re-open if you're still having issues.

kristofbolyai commented 1 year ago

@LlamaLad7 Thank you for your help! You might need to leave a note on the min loader versions though (yes I know we were using awfully outdated ones..).

However, I still have issues with getting this to work.

New issue: Changed fabric and quilt build.gradle to:

include(implementation(annotationProcessor("com.github.llamalad7.mixinextras:mixinextras-fabric:${rootProject.mixinextras_version}")))

With this I am fully in spec with the Wiki. Now, development environment runs fine. However, on Fabric Loader 0.14.18, production environment, I get a mixin error.

Minecraft has crashed!
net.fabricmc.loader.impl.FormattedException: java.lang.BootstrapMethodError: java.lang.RuntimeException: Mixin transformation of net.minecraft.class_1735 failed
    at net.fabricmc.loader.impl.FormattedException.ofLocalized(FormattedException.java:63)
    at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:464)
    at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)
    at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:214)
    at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:249)
    at org.multimc.EntryPoint.listen(EntryPoint.java:143)
    at org.multimc.EntryPoint.main(EntryPoint.java:34)
Caused by: java.lang.BootstrapMethodError: java.lang.RuntimeException: Mixin transformation of net.minecraft.class_1735 failed
    at net.minecraft.class_3917.<clinit>(class_3917.java:20)
    at net.minecraft.class_7923.method_47461(class_7923.java:131)
    at net.minecraft.class_7923.method_47485(class_7923.java:208)
    at net.minecraft.class_7923.method_47482(class_7923.java:223)
    at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:721)
    at net.minecraft.class_7923.method_47487(class_7923.java:221)
    at net.minecraft.class_2966.redirect$zgd000$fabric-registry-sync-v0$initialize(class_2966.java:565)
    at net.minecraft.class_2966.method_12851(class_2966.java:61)
    at net.minecraft.client.main.Main.method_44604(Main.java:161)
    at net.minecraft.client.main.Main.main(Main.java:51)
    at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:462)
    ... 10 more
Caused by: java.lang.RuntimeException: Mixin transformation of net.minecraft.class_1735 failed
    at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:427)
    at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.tryLoadClass(KnotClassDelegate.java:323)
    at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.loadClass(KnotClassDelegate.java:218)
    at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:112)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    ... 21 more
Caused by: org.spongepowered.asm.mixin.transformer.throwables.MixinTransformerError: An unexpected critical error was encountered
    at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:392)
    at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:234)
    at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:202)
    at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:422)
    ... 25 more
Caused by: org.spongepowered.asm.mixin.transformer.throwables.MixinPreProcessorException: Attach error for wynntils.mixins.json:SlotMixin from mod wynntils during activity: [Transform -> Method onSetItem(Lnet/minecraft/class_1263;ILnet/minecraft/class_1799;Lcom/wynntils/mixinextras/shadow/injector/wrapoperation/Operation;)V -> INVOKEINTERFACE -> com/wynntils/mixinextras/shadow/injector/wrapoperation/Operation::call:([Ljava/lang/Object;)Ljava/lang/Object;]
    at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.attach(MixinPreProcessorStandard.java:313)
    at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.createContextFor(MixinPreProcessorStandard.java:277)
    at org.spongepowered.asm.mixin.transformer.MixinInfo.createContextFor(MixinInfo.java:1289)
    at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.apply(MixinApplicatorStandard.java:294)
    at org.spongepowered.asm.mixin.transformer.TargetClassContext.apply(TargetClassContext.java:421)
    at org.spongepowered.asm.mixin.transformer.TargetClassContext.applyMixins(TargetClassContext.java:403)
    at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:363)
    ... 28 more
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: com.wynntils.mixinextras.shadow.injector.wrapoperation.Operation
    at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.transformMemberReference(MixinPreProcessorStandard.java:786)
    at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.transformMethod(MixinPreProcessorStandard.java:772)
    at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.transform(MixinPreProcessorStandard.java:738)
    at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.attach(MixinPreProcessorStandard.java:307)
    ... 34 more
Caused by: java.lang.ClassNotFoundException: com.wynntils.mixinextras.shadow.injector.wrapoperation.Operation
    ... 38 more
LlamaLad7 commented 1 year ago

Remove the relocation code

kristofbolyai commented 1 year ago

Thank you, again!