
Trying and failing to use OptiFabric in a dev environment
james090500 opened this issue ยท 5 comments
I am trying to use OptiFabric in my dev environment to fix some bugs.
I have tried specifying these two jars as well to no avail.
[00:38:49] [main/INFO] (FabricLoader/Mixin) SpongePowered MIXIN Subsystem Version=0.8.4 Source=file:/C:/Users/james/.gradle/caches/modules-2/files-2.1/net.fabricmc/sponge-mixin/0.10.7+mixin.0.8.4/7a4ca9d54d9ae564dea0363d668036a8420ed9b8/sponge-mixin-0.10.7+mixin.0.8.4.jar Service=Knot/Fabric Env=CLIENT
[00:38:49] [main/INFO] (FabricLoader/Mixin) Loaded Fabric development mappings for mixin remapper!
[00:38:49] [main/INFO] (FabricLoader/Mixin) Compatibility level set to JAVA_16
[00:38:49] [main/INFO] (FabricLoader/Mixin) Compatibility level set to JAVA_17
Setting up optifine for the first time, this may take a few seconds.
Failed to setup optifine:
java.lang.AssertionError: Unable to find Minecraft dev jar! Tried C:\Users\james\IdeaProjects\WorldEditCUI\.gradle\loom-cache\1.18.1\loom.mappings.1_18_1.layered+hash.2192-v2\minecraft-1.18.1-client.jar, C:\Users\james\IdeaProjects\WorldEditCUI\.gradle\loom-cache\1.18.1\minecraft-1.18.1-client.jar and C:\Users\james\IdeaProjects\WorldEditCUI\.gradle\loom-cache\1.18.1\minecraft-client.jar
Please supply it explicitly with -Doptifabric.mc-jar
at me.modmuss50.optifabric.mod.OptifineSetup.getMinecraftJar(OptifineSetup.java:350)
at me.modmuss50.optifabric.mod.OptifineSetup.getRuntime(OptifineSetup.java:98)
at me.modmuss50.optifabric.mod.OptifabricSetup.run(OptifabricSetup.java:43)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at com.chocohead.mm.Plugin.getMixins(Plugin.java:340)
at org.spongepowered.asm.mixin.transformer.PluginHandle.getMixins(PluginHandle.java:128)
at org.spongepowered.asm.mixin.transformer.MixinConfig.postInitialise(MixinConfig.java:796)
at org.spongepowered.asm.mixin.transformer.MixinProcessor.prepareConfigs(MixinProcessor.java:568)
at org.spongepowered.asm.mixin.transformer.MixinProcessor.select(MixinProcessor.java:462)
at org.spongepowered.asm.mixin.transformer.MixinProcessor.checkSelect(MixinProcessor.java:438)
at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:290)
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:247)
at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.tryLoadClass(KnotClassDelegate.java:150)
at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:155)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:467)
at net.fabricmc.loader.impl.util.DefaultLanguageAdapter.create(DefaultLanguageAdapter.java:50)
at net.fabricmc.loader.impl.entrypoint.EntrypointStorage$NewEntry.getOrCreate(EntrypointStorage.java:117)
at net.fabricmc.loader.impl.entrypoint.EntrypointContainerImpl.getEntrypoint(EntrypointContainerImpl.java:53)
at net.fabricmc.loader.impl.entrypoint.EntrypointUtils.invoke0(EntrypointUtils.java:47)
at net.fabricmc.loader.impl.entrypoint.EntrypointUtils.invoke(EntrypointUtils.java:35)
at net.fabricmc.loader.impl.launch.knot.Knot.init(Knot.java:157)
at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:71)
at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
at net.fabricmc.devlaunchinjector.Main.main(Main.java:86)
It's not the local project cached jars you want but the global Gradle cache ones, when there's access wideners it's hard to find them sometimes. I think in your case what you want is -Doptifabric.mc-jar=C:/Users/james/.gradle/caches/fabric-loom/1.18.1/minecraft-client.jar
.
This works, we got a little futher but now a crash.. Unsure if this is related to my dev environment
Found existing patched optifine jar, using that
[12:42:48] [main/ERROR] (FabricLoader) Minecraft has crashed!
net.fabricmc.loader.impl.FormattedException: java.lang.ExceptionInInitializerError
at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:604) ~[fabric-loader-0.12.11.jar:?]
at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:77) [fabric-loader-0.12.11.jar:?]
at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) [fabric-loader-0.12.11.jar:?]
at net.fabricmc.devlaunchinjector.Main.main(Main.java:86) [dev-launch-injector-0.2.1+build.8.jar:?]
Caused by: java.lang.ExceptionInInitializerError
at net.minecraft.CrashReport.getFriendlyReport(CrashReport.java:173) ~[[email protected]:?]
at net.minecraft.CrashReport.preload(CrashReport.java:343) ~[[email protected]:?]
at net.minecraft.client.main.Main.main(Main.java:145) ~[[email protected]:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:602) ~[fabric-loader-0.12.11.jar:?]
... 3 more
Caused by: java.lang.RuntimeException: Mixin transformation of net.minecraft.client.KeyboardHandler failed
at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:252) ~[fabric-loader-0.12.11.jar:?]
at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.tryLoadClass(KnotClassDelegate.java:150) ~[fabric-loader-0.12.11.jar:?]
at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:155) ~[fabric-loader-0.12.11.jar:?]
at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?]
at java.lang.Class.getDeclaredFields0(Native Method) ~[?:?]
at java.lang.Class.privateGetDeclaredFields(Class.java:3297) ~[?:?]
at java.lang.Class.getDeclaredFields(Class.java:2371) ~[?:?]
at net.optifine.reflect.FieldLocatorTypes.<init>(FieldLocatorTypes.java:25) ~[Optifine-mapped.jar:?]
at net.optifine.reflect.Reflector.<clinit>(Reflector.java:502) ~[Optifine-mapped.jar:?]
at net.minecraft.CrashReport.getFriendlyReport(CrashReport.java:173) ~[[email protected]:?]
at net.minecraft.CrashReport.preload(CrashReport.java:343) ~[[email protected]:?]
at net.minecraft.client.main.Main.main(Main.java:145) ~[[email protected]:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:602) ~[fabric-loader-0.12.11.jar:?]
... 3 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) ~[sponge-mixin-0.10.7+mixin.0.8.4.jar:0.10.7+mixin.0.8.4]
at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:234) ~[sponge-mixin-0.10.7+mixin.0.8.4.jar:0.10.7+mixin.0.8.4]
at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:202) ~[sponge-mixin-0.10.7+mixin.0.8.4.jar:0.10.7+mixin.0.8.4]
at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:247) ~[fabric-loader-0.12.11.jar:?]
at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.tryLoadClass(KnotClassDelegate.java:150) ~[fabric-loader-0.12.11.jar:?]
at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:155) ~[fabric-loader-0.12.11.jar:?]
at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?]
at java.lang.Class.getDeclaredFields0(Native Method) ~[?:?]
at java.lang.Class.privateGetDeclaredFields(Class.java:3297) ~[?:?]
at java.lang.Class.getDeclaredFields(Class.java:2371) ~[?:?]
at net.optifine.reflect.FieldLocatorTypes.<init>(FieldLocatorTypes.java:25) ~[Optifine-mapped.jar:?]
at net.optifine.reflect.Reflector.<clinit>(Reflector.java:502) ~[Optifine-mapped.jar:?]
at net.minecraft.CrashReport.getFriendlyReport(CrashReport.java:173) ~[[email protected]:?]
at net.minecraft.CrashReport.preload(CrashReport.java:343) ~[[email protected]:?]
at net.minecraft.client.main.Main.main(Main.java:145) ~[[email protected]:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:602) ~[fabric-loader-0.12.11.jar:?]
... 3 more
Caused by: java.util.NoSuchElementException
at com.google.common.collect.MoreCollectors$ToOptionalState.getElement(MoreCollectors.java:162) ~[guava-31.0.1-jre.jar:?]
at com.google.common.collect.MoreCollectors.lambda$static$1(MoreCollectors.java:74) ~[guava-31.0.1-jre.jar:?]
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:686) ~[?:?]
at me.modmuss50.optifabric.patcher.fixes.KeyboardFix.fix(KeyboardFix.java:28) ~[OptiFabric-llama-SNAPSHOT.jar:?]
at me.modmuss50.optifabric.mod.OptifineInjector.lambda$null$0(OptifineInjector.java:66) ~[OptiFabric-llama-SNAPSHOT.jar:?]
at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?]
at me.modmuss50.optifabric.mod.OptifineInjector.lambda$setup$1(OptifineInjector.java:66) ~[OptiFabric-llama-SNAPSHOT.jar:?]
at com.chocohead.mm.Extension.preApply(Extension.java:40) ~[Fabric-ASM-v2.3.jar:?]
at org.spongepowered.asm.mixin.transformer.ext.Extensions.preApply(Extensions.java:156) ~[sponge-mixin-0.10.7+mixin.0.8.4.jar:0.10.7+mixin.0.8.4]
at org.spongepowered.asm.mixin.transformer.TargetClassContext.preApply(TargetClassContext.java:413) ~[sponge-mixin-0.10.7+mixin.0.8.4.jar:0.10.7+mixin.0.8.4]
at org.spongepowered.asm.mixin.transformer.TargetClassContext.applyMixins(TargetClassContext.java:401) ~[sponge-mixin-0.10.7+mixin.0.8.4.jar:0.10.7+mixin.0.8.4]
at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:363) ~[sponge-mixin-0.10.7+mixin.0.8.4.jar:0.10.7+mixin.0.8.4]
at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:234) ~[sponge-mixin-0.10.7+mixin.0.8.4.jar:0.10.7+mixin.0.8.4]
at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:202) ~[sponge-mixin-0.10.7+mixin.0.8.4.jar:0.10.7+mixin.0.8.4]
at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:247) ~[fabric-loader-0.12.11.jar:?]
at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.tryLoadClass(KnotClassDelegate.java:150) ~[fabric-loader-0.12.11.jar:?]
at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:155) ~[fabric-loader-0.12.11.jar:?]
at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?]
at java.lang.Class.getDeclaredFields0(Native Method) ~[?:?]
at java.lang.Class.privateGetDeclaredFields(Class.java:3297) ~[?:?]
at java.lang.Class.getDeclaredFields(Class.java:2371) ~[?:?]
at net.optifine.reflect.FieldLocatorTypes.<init>(FieldLocatorTypes.java:25) ~[Optifine-mapped.jar:?]
at net.optifine.reflect.Reflector.<clinit>(Reflector.java:502) ~[Optifine-mapped.jar:?]
at net.minecraft.CrashReport.getFriendlyReport(CrashReport.java:173) ~[[email protected]:?]
at net.minecraft.CrashReport.preload(CrashReport.java:343) ~[[email protected]:?]
at net.minecraft.client.main.Main.main(Main.java:145) ~[[email protected]:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:602) ~[fabric-loader-0.12.11.jar:?]
... 3 more
Disconnected from the target VM, address: '127.0.0.1:63443', transport: 'socket'
Process finished with exit code 1
This is almost certainly from running with Mojang's mappings, I never tried that so could quite believe there'd be some undiscovered issues still. Should be easy enough to fix, but in the meantime if you're eager to make progress you should be able to add nameSyntheticMembers = false
to the layered mappings to get past this (see FabricMC/fabric-loom#538). It sets the stack to avoid renaming lambdas and other synthetic methods which otherwise wouldn't have non-Intermediary names, which is the presumption OptiFabric is clearly making to cause that crash, and will be default behaviour come Loom 0.11.
Slightly different error this time.