-
-
Notifications
You must be signed in to change notification settings - Fork 371
Incompatible with Pyro #1886
Description
Deciding to document this as a few people are reporting this now. I do not have a Pyro license so this makes testing difficult, I'll probably bother @HoratioGamer about testing possible solutions, though I believe this has to be fixed on @GiantNuker's end. This same issue also affects Optifine standalone.
Note that in the first log ref4063632994977090211.tmp is Pyro's mixin refmap. For some reason this is included in the mods folder as well, so you can see a fairly harmless stacktrace failing to open it as a zip file. Annoyingly enough, Pyro decides to use temporary files for it's mixin refmap, which are created and deleted on game open / close / crash.
Right before the crash stacktrace is a stacktrace with this
[10:01:18] [Client thread/WARN] [mixin]: @Redirect conflict. Skipping mixins.pyroclient.json:RenderGlobalMixin->@Redirect::redirect$checkFreecamChunkUpdates$zga000(Lnet/minecraft/client/renderer/ViewFrustum;DD)V with priority 1000, already redirected by mixins.kami.json:render.MixinRenderGlobal->@Redirect::redirect$updateSetupTerrain$zce000(Lnet/minecraft/client/renderer/ViewFrustum;DD)V with priority 1000
The most recent change made on our end was 20 days ago, at the time of writing, here.
History of said file here.
Funnily enough Mixin is saying it's caused by redirecting setupTerrain, which has been in place for a bit longer than the current changes. I will need an exact version hash of when this breaks from @HoratioGamer otherwise this makes troubleshooting harder.
The comment above said redirect already explains why it is necessary.
client/src/main/java/me/zeroeightsix/kami/mixin/client/render/MixinRenderGlobal.java
Lines 64 to 67 in b23e739
| /* | |
| * updateChunkPositions loadRenderers as well, but as long as you don't change your renderDistance in Freecam loadRenderers won't be called | |
| * One could add the same redirect for loadRenderers if needed | |
| */ |
This is most likely not the cause of the issue, so, continuing forward we have:
[10:01:18] [Client thread/WARN] [mixin]: Method overwrite conflict for getEntityOutlineShader in mixins.pyroclient.json:RenderGlobalAccessor, previously written by me.zeroeightsix.kami.mixin.client.accessor.render.AccessorRenderGlobal. Skipping method.
We certainly don't do any overwriting as far as I'm aware. This is just a warning, it just means our accessor will work while Pyro's presumably won't.
Now we have an actual stacktrace,
[10:01:18] [Client thread/INFO] [STDERR]: [org.spongepowered.asm.mixin.transformer.MixinTransformer:transformClassBytes:519]: org.spongepowered.asm.mixin.injection.throwables.InjectionError: Critical injection failure: Redirector redirect$checkFreecamChunkUpdates$zga000(Lnet/minecraft/client/renderer/ViewFrustum;DD)V in mixins.pyroclient.json:RenderGlobalMixin failed injection check, (0/1) succeeded. Using refmap file:/tmp/ref4063632994977090211.tmp
Which doesn't look promising. It looks like Pyro's redirect is failing due to ours, which is necessary as explained above. They probably have a redirect for the same reason? Not sure what could be done about that.
This stacktrace is also referenced at the end of the actual stacktrace here
java.lang.NoClassDefFoundError: net/minecraft/client/renderer/RenderGlobal
at net.minecraftforge.client.ForgeHooksClient.shouldUseVanillaReloadableListener(ForgeHooksClient.java:951)
at net.minecraft.client.resources.SimpleReloadableResourceManager.func_110544_b(SimpleReloadableResourceManager.java:131)
at net.minecraft.client.resources.SimpleReloadableResourceManager.func_110541_a(SimpleReloadableResourceManager.java:112)
at net.minecraft.client.Minecraft.func_110436_a(Minecraft.java:808)
at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:247)
at net.minecraft.client.Minecraft.func_71384_a(Minecraft.java:467)
at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:378)
at net.minecraft.client.main.Main.main(SourceFile:123)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:196)
at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:231)
at org.multimc.EntryPoint.listen(EntryPoint.java:143)
at org.multimc.EntryPoint.main(EntryPoint.java:34)
Caused by: java.lang.ClassNotFoundException: net.minecraft.client.renderer.RenderGlobal
at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
... 22 more
Caused by: org.spongepowered.asm.mixin.transformer.throwables.MixinTransformerError: An unexpected critical error was encountered
at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:521)
at org.spongepowered.asm.mixin.transformer.Proxy.transform(Proxy.java:72)
at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:279)
at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:176)
... 24 more
Caused by: org.spongepowered.asm.mixin.injection.throwables.InjectionError: Critical injection failure: Redirector redirect$checkFreecamChunkUpdates$zga000(Lnet/minecraft/client/renderer/ViewFrustum;DD)V in mixins.pyroclient.json:RenderGlobalMixin failed injection check, (0/1) succeeded. Using refmap file:/tmp/ref4063632994977090211.tmp
at org.spongepowered.asm.mixin.injection.struct.InjectionInfo.postInject(InjectionInfo.java:290)
at org.spongepowered.asm.mixin.transformer.MixinTargetContext.applyInjections(MixinTargetContext.java:1203)
at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyInjections(MixinApplicatorStandard.java:938)
at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyMixin(MixinApplicatorStandard.java:322)
at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.apply(MixinApplicatorStandard.java:280)
at org.spongepowered.asm.mixin.transformer.TargetClassContext.applyMixins(TargetClassContext.java:353)
at org.spongepowered.asm.mixin.transformer.MixinTransformer.apply(MixinTransformer.java:724)
at org.spongepowered.asm.mixin.transformer.MixinTransformer.applyMixins(MixinTransformer.java:703)
at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:509)
... 27 more
Which is fairly interesting. I'm not quite sure why failing to redirect a method will cause java.lang.NoClassDefFoundError: net/minecraft/client/renderer/RenderGlobal. Tried troubleshooting this before, in tickets 109 and 201 (201 has been left open until this is resolved).
I'm not quite sure what to do from here, the log can be found here for more investigation.
Log running on the first version that breaks (2.01.01-baf7588e) can be found here. Knowing the version isn't very helpful, as that version was a 16k line diff, since it was the GUI update