Canvas Renderer

Canvas Renderer

202k Downloads

strange config-related incompatibility with cit resewn

wouu opened this issue ยท 2 comments

commented

System Informatinon

  • Minecraft Version: 1.18.1
  • Canvas Version: 88bdbc6
  • Operating System: windows 11
  • Graphics Card: geforce rtx 2080s

Other mods and versions installed

  • cit resewn 0.8.1

How you triggered the behavior

356

What you expected would happen

  • both mods would work correctly, allowing me to assert my dominance over cringe and unbased forge and optifine users

What actually happened

  • the game crashed, and i was ridiculed by the cringe and unbased forge and optifine users
  • however upon deleting the config folder, the game started as normal, and i was able to temporarily assert my dominance over the cringe and unbased forge and optifine users, until i started the game again, which is when it started crashing again

Logs and screenshots

[08:06:57] [Render thread/ERROR]: Mixin apply for mod citresewn failed citresewn.mixins.json:cititem.ItemRendererMixin -> net.minecraft.class_918: org.spongepowered.asm.mixin.injection.throwables.InvalidInjectionException @At("LOAD" ordinal=-1 index=-1) on net/minecraft/class_918::fixMojankCITs with priority 1000 cannot inject into net/minecraft/class_918::method_23179(Lnet/minecraft/class_1799;Lnet/minecraft/class_809$class_811;ZLnet/minecraft/class_4587;Lnet/minecraft/class_4597;IILnet/minecraft/class_1087;)V merged by grondag.canvas.mixin.MixinItemRenderer with priority 1000 [PREINJECT Applicator Phase -> citresewn.mixins.json:cititem.ItemRendererMixin -> Prepare Injections ->  -> localvar$zcc000$fixMojankCITs(Lnet/minecraft/class_1087;)Lnet/minecraft/class_1087; -> Prepare]
org.spongepowered.asm.mixin.injection.throwables.InvalidInjectionException: @At("LOAD" ordinal=-1 index=-1) on net/minecraft/class_918::fixMojankCITs with priority 1000 cannot inject into net/minecraft/class_918::method_23179(Lnet/minecraft/class_1799;Lnet/minecraft/class_809$class_811;ZLnet/minecraft/class_4587;Lnet/minecraft/class_4597;IILnet/minecraft/class_1087;)V merged by grondag.canvas.mixin.MixinItemRenderer with priority 1000 [PREINJECT Applicator Phase -> citresewn.mixins.json:cititem.ItemRendererMixin -> Prepare Injections ->  -> localvar$zcc000$fixMojankCITs(Lnet/minecraft/class_1087;)Lnet/minecraft/class_1087; -> Prepare]
	at org.spongepowered.asm.mixin.injection.code.Injector.findTargetNodes(Injector.java:305) ~[sponge-mixin-0.10.7+mixin.0.8.4.jar:0.10.7+mixin.0.8.4]
	at org.spongepowered.asm.mixin.injection.code.Injector.find(Injector.java:240) ~[sponge-mixin-0.10.7+mixin.0.8.4.jar:0.10.7+mixin.0.8.4]
	at org.spongepowered.asm.mixin.injection.struct.InjectionInfo.prepare(InjectionInfo.java:421) ~[sponge-mixin-0.10.7+mixin.0.8.4.jar:0.10.7+mixin.0.8.4]
	at org.spongepowered.asm.mixin.transformer.MixinTargetContext.prepareInjections(MixinTargetContext.java:1338) ~[sponge-mixin-0.10.7+mixin.0.8.4.jar:0.10.7+mixin.0.8.4]
	at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.prepareInjections(MixinApplicatorStandard.java:1043) ~[sponge-mixin-0.10.7+mixin.0.8.4.jar:0.10.7+mixin.0.8.4]
	at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyMixin(MixinApplicatorStandard.java:393) ~[sponge-mixin-0.10.7+mixin.0.8.4.jar:0.10.7+mixin.0.8.4]
	at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.apply(MixinApplicatorStandard.java:325) ~[sponge-mixin-0.10.7+mixin.0.8.4.jar:0.10.7+mixin.0.8.4]
	at org.spongepowered.asm.mixin.transformer.TargetClassContext.apply(TargetClassContext.java:421) ~[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:403) ~[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.12.jar:?]
	at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.tryLoadClass(KnotClassDelegate.java:150) ~[fabric-loader-0.12.12.jar:?]
	at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:155) ~[fabric-loader-0.12.12.jar:?]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?]
	at net.minecraft.class_1921.<clinit>(class_1921.java:415) ~[client-intermediary.jar:?]
	at net.minecraft.class_898.<clinit>(class_898.java:53) ~[client-intermediary.jar:?]
	at grondag.canvas.CanvasMod.init(CanvasMod.java:88) ~[canvas-fabric-mc118-99.0.0-LOCAL.jar:?]
	at io.vram.canvas.CanvasFabricMod.onInitializeClient(CanvasFabricMod.java:45) ~[canvas-fabric-mc118-99.0.0-LOCAL.jar:?]
	at net.fabricmc.loader.impl.entrypoint.EntrypointUtils.invoke0(EntrypointUtils.java:47) [fabric-loader-0.12.12.jar:?]
	at net.fabricmc.loader.impl.entrypoint.EntrypointUtils.invoke(EntrypointUtils.java:35) [fabric-loader-0.12.12.jar:?]
	at net.fabricmc.loader.impl.game.minecraft.Hooks.startClient(Hooks.java:53) [fabric-loader-0.12.12.jar:?]
	at net.minecraft.class_310.<init>(class_310.java:452) [client-intermediary.jar:?]
	at net.minecraft.client.main.Main.main(Main.java:199) [client-intermediary.jar:?]
	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:608) [fabric-loader-0.12.12.jar:?]
	at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:77) [fabric-loader-0.12.12.jar:?]
	at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) [fabric-loader-0.12.12.jar:?]
	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 org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:210) [NewLaunch.jar:?]
	at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:245) [NewLaunch.jar:?]
	at org.multimc.EntryPoint.listen(EntryPoint.java:143) [NewLaunch.jar:?]
	at org.multimc.EntryPoint.main(EntryPoint.java:34) [NewLaunch.jar:?]
[08:06:57] [Render thread/INFO]: [Indigo] Different rendering plugin detected; not applying Indigo.
[08:06:58] [Render thread/INFO]: Failed to find module info for %localappdata%\Programs\MultiMC\instances\1.18.1\natives\lwjgl.dll
com.sun.jna.platform.win32.Win32Exception: The specified resource type cannot be found in the image file.
	at net.minecraft.class_6498.method_37964(class_6498.java:62) ~[client-intermediary.jar:?]
	at net.minecraft.class_6498.method_37961(class_6498.java:48) ~[client-intermediary.jar:?]
	at net.minecraft.class_6498.method_37968(class_6498.java:132) ~[client-intermediary.jar:?]
	at net.minecraft.class_129.method_577(class_129.java:84) [client-intermediary.jar:?]
	at net.minecraft.class_6498.method_37966(class_6498.java:131) [client-intermediary.jar:?]
	at net.minecraft.client.main.Main.main(Main.java:207) [client-intermediary.jar:?]
	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:608) [fabric-loader-0.12.12.jar:?]
	at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:77) [fabric-loader-0.12.12.jar:?]
	at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) [fabric-loader-0.12.12.jar:?]
	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 org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:210) [NewLaunch.jar:?]
	at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:245) [NewLaunch.jar:?]
	at org.multimc.EntryPoint.listen(EntryPoint.java:143) [NewLaunch.jar:?]
	at org.multimc.EntryPoint.main(EntryPoint.java:34) [NewLaunch.jar:?]
---- Minecraft Crash Report ----
// dababy real??? less goo, yeah yeah

Time: 24/12/2021, 8:06 am
Description: Initializing game

java.lang.RuntimeException: Could not execute entrypoint stage 'client' due to errors, provided by 'canvas'!
	at net.fabricmc.loader.impl.entrypoint.EntrypointUtils.lambda$invoke0$0(EntrypointUtils.java:51)
	at net.fabricmc.loader.impl.util.ExceptionUtil.gatherExceptions(ExceptionUtil.java:33)
	at net.fabricmc.loader.impl.entrypoint.EntrypointUtils.invoke0(EntrypointUtils.java:49)
	at net.fabricmc.loader.impl.entrypoint.EntrypointUtils.invoke(EntrypointUtils.java:35)
	at net.fabricmc.loader.impl.game.minecraft.Hooks.startClient(Hooks.java:53)
	at net.minecraft.class_310.<init>(class_310.java:452)
	at net.minecraft.client.main.Main.main(Main.java:199)
	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 net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:608)
	at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:77)
	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:210)
	at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:245)
	at org.multimc.EntryPoint.listen(EntryPoint.java:143)
	at org.multimc.EntryPoint.main(EntryPoint.java:34)
Caused by: java.lang.ExceptionInInitializerError
	at net.minecraft.class_898.<clinit>(class_898.java:53)
	at grondag.canvas.CanvasMod.init(CanvasMod.java:88)
	at io.vram.canvas.CanvasFabricMod.onInitializeClient(CanvasFabricMod.java:45)
	at net.fabricmc.loader.impl.entrypoint.EntrypointUtils.invoke0(EntrypointUtils.java:47)
	... 19 more
Caused by: java.lang.RuntimeException: Mixin transformation of net.minecraft.class_918 failed
	at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:252)
	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 net.minecraft.class_1921.<clinit>(class_1921.java:415)
	... 23 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:247)
	... 27 more
Caused by: org.spongepowered.asm.mixin.throwables.MixinApplyError: Mixin [citresewn.mixins.json:cititem.ItemRendererMixin] from phase [DEFAULT] in config [citresewn.mixins.json] from mod [citresewn] FAILED during APPLY
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.handleMixinError(MixinProcessor.java:638)
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.handleMixinApplyError(MixinProcessor.java:589)
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:379)
	... 30 more
Caused by: org.spongepowered.asm.mixin.injection.throwables.InvalidInjectionException: @At("LOAD" ordinal=-1 index=-1) on net/minecraft/class_918::fixMojankCITs with priority 1000 cannot inject into net/minecraft/class_918::method_23179(Lnet/minecraft/class_1799;Lnet/minecraft/class_809$class_811;ZLnet/minecraft/class_4587;Lnet/minecraft/class_4597;IILnet/minecraft/class_1087;)V merged by grondag.canvas.mixin.MixinItemRenderer with priority 1000 [PREINJECT Applicator Phase -> citresewn.mixins.json:cititem.ItemRendererMixin -> Prepare Injections ->  -> localvar$zcc000$fixMojankCITs(Lnet/minecraft/class_1087;)Lnet/minecraft/class_1087; -> Prepare]
	at org.spongepowered.asm.mixin.injection.code.Injector.findTargetNodes(Injector.java:305)
	at org.spongepowered.asm.mixin.injection.code.Injector.find(Injector.java:240)
	at org.spongepowered.asm.mixin.injection.struct.InjectionInfo.prepare(InjectionInfo.java:421)
	at org.spongepowered.asm.mixin.transformer.MixinTargetContext.prepareInjections(MixinTargetContext.java:1338)
	at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.prepareInjections(MixinApplicatorStandard.java:1043)
	at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyMixin(MixinApplicatorStandard.java:393)
	at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.apply(MixinApplicatorStandard.java:325)
	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)
	... 30 more


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Render thread
Stacktrace:
	at net.fabricmc.loader.impl.entrypoint.EntrypointUtils.lambda$invoke0$0(EntrypointUtils.java:51)
	at net.fabricmc.loader.impl.util.ExceptionUtil.gatherExceptions(ExceptionUtil.java:33)
	at net.fabricmc.loader.impl.entrypoint.EntrypointUtils.invoke0(EntrypointUtils.java:49)
	at net.fabricmc.loader.impl.entrypoint.EntrypointUtils.invoke(EntrypointUtils.java:35)
	at net.fabricmc.loader.impl.game.minecraft.Hooks.startClient(Hooks.java:53)
	at net.minecraft.class_310.<init>(class_310.java:452)

see also: shsupercm/citresewn #83

commented

canvas is using Overwrite in MixinItemRenderer#L54 which is usually frowned upon in the fabric community as it causes incompatibility with any mod trying to inject into the method

SHsuperCM/CITResewn#83 (comment)

commented

Thank you for the report. Cross-posting my response from the CIT issue:

Canvas does use @overwrite in a handful of places. It may be possible to relax this at the cost of some performance and additional complexity but the way CIT is working here isn't consistent with how the Fabric rendering API was designed. FRAPI intended that mods would alter models instead of trying to hack into rendering code directly which is prone to conflicts. (Canvas is an implementation of the API, so it's expected to make invasive changes.)

Item model output with FRAPI can be fully dynamic and with the FREX rendering API the options are even more powerful. If I'm not able to make CIT compatible then I may consider producing a CIT implementation that uses supported APIs.