Iris Shaders

Iris Shaders

36M Downloads

Iris uses a Redirect to sort the entity list during rendering when a ModifyVariable would work, increasing the likelihood of mod conflicts

AlphaMode opened this issue ยท 4 comments

commented

Iris and Minecraft Version

iris-and-sodium-mc-1.17-1.1.2+build.9.jar

Are you running Sodium along with Iris?

Yes

Operating System

Windows 10

What is your GPU?

GeForce GTX (I don't know the model but its a mobile one)

Java Version

Java 16

Reproduction Steps

  1. Crashes on launch due to
    @Redirect(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/multiplayer/ClientLevel;entitiesForRendering()Ljava/lang/Iterable;"))
    which Twilight Forest also redirects to render its multipart entities

Crash Report file and latest.log

---- Minecraft Crash Report ----
// I bet Cylons wouldn't have this problem.

Time: 9/14/21, 11:28 AM
Description: Initializing game

org.spongepowered.asm.mixin.transformer.throwables.MixinTransformerError: An unexpected critical error was encountered
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:363)
	at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:208)
	at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:178)
	at org.spongepowered.asm.mixin.transformer.FabricMixinTransformerProxy.transformClassBytes(FabricMixinTransformerProxy.java:23)
	at net.fabricmc.loader.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:162)
	at net.fabricmc.loader.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:154)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
	at net.minecraft.class_310.<init>(class_310.java:573)
	at net.minecraft.client.main.Main.main(Main.java:179)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:234)
	at net.fabricmc.loader.launch.knot.Knot.launch(Knot.java:153)
	at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:28)
Caused by: org.spongepowered.asm.mixin.injection.throwables.InjectionError: Critical injection failure: Redirector renderMultiparts(Lnet/minecraft/class_638;)Ljava/lang/Iterable; in twilightforest.mixins.json:client.LevelRendererMixin failed injection check, (0/1) succeeded. Scanned 1 target(s). No refMap loaded.
	at org.spongepowered.asm.mixin.injection.struct.InjectionInfo.postInject(InjectionInfo.java:408)
	at org.spongepowered.asm.mixin.transformer.MixinTargetContext.applyInjections(MixinTargetContext.java:1291)
	at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyInjections(MixinApplicatorStandard.java:1042)
	at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyMixin(MixinApplicatorStandard.java:395)
	at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.apply(MixinApplicatorStandard.java:320)
	at org.spongepowered.asm.mixin.transformer.TargetClassContext.applyMixins(TargetClassContext.java:345)
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:569)
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:351)
	... 15 more


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

-- Head --
Thread: Render thread
Stacktrace:
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:363)
	at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:208)
	at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:178)
	at org.spongepowered.asm.mixin.transformer.FabricMixinTransformerProxy.transformClassBytes(FabricMixinTransformerProxy.java:23)
	at net.fabricmc.loader.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:162)
	at net.fabricmc.loader.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:154)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
	at net.minecraft.class_310.<init>(class_310.java:573)

-- Initialization --
Details:
Stacktrace:
	at net.minecraft.client.main.Main.main(Main.java:179)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:234)
	at net.fabricmc.loader.launch.knot.Knot.launch(Knot.java:153)
	at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:28)

-- System Details --
Details:
	Minecraft Version: 1.17.1
	Minecraft Version ID: 1.17.1
	Operating System: Windows 10 (amd64) version 10.0
	Java Version: 16.0.1, Microsoft
	Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Microsoft
	Memory: 1310798856 bytes (1250 MiB) / 1811939328 bytes (1728 MiB) up to 2147483648 bytes (2048 MiB)
	CPUs: 12
	Processor Vendor: GenuineIntel
	Processor Name: Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
	Identifier: Intel64 Family 6 Model 158 Stepping 10
	Microarchitecture: Coffee Lake
	Frequency (GHz): 2.21
	Number of physical packages: 1
	Number of physical CPUs: 6
	Number of logical CPUs: 12
	Graphics card #0 name: Intel(R) UHD Graphics 630
	Graphics card #0 vendor: Intel Corporation (0x8086)
	Graphics card #0 VRAM (MB): 1024.00
	Graphics card #0 deviceId: 0x3e9b
	Graphics card #0 versionInfo: DriverVersion=23.20.16.4973
	Graphics card #1 name: NVIDIA GeForce GTX 1060 with Max-Q Design
	Graphics card #1 vendor: NVIDIA (0x10de)
	Graphics card #1 VRAM (MB): 4095.00
	Graphics card #1 deviceId: 0x1c20
	Graphics card #1 versionInfo: DriverVersion=27.21.14.6231
	Memory slot #0 capacity (MB): 8192.00
	Memory slot #0 clockSpeed (GHz): 2.67
	Memory slot #0 type: DDR4
	Memory slot #1 capacity (MB): 8192.00
	Memory slot #1 clockSpeed (GHz): 2.67
	Memory slot #1 type: DDR4
	Virtual memory max (MB): 31025.23
	Virtual memory used (MB): 22051.21
	Swap memory total (MB): 14848.00
	Swap memory used (MB): 1342.42
	JVM Flags: 9 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx2G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M
	Fabric Mods: 
		architectury: Architectury 2.0.7
		cardinal-components-base: Cardinal Components API (base) 3.0.0
		cardinal-components-entity: Cardinal Components API (entities) 3.0.0
		cloth-api: Cloth API 2.0.54
		cloth-basic-math: Cloth Basic Math 0.5.1
		cloth-client-events-v0: Cloth Client Events v0 2.0.54
		cloth-common-events-v1: Cloth Common Events v1 2.0.54
		cloth-config2: Cloth Config v5 5.0.38
		cloth-datagen-api-v1: Cloth Datagen v1 2.0.54
		cloth-scissors-api-v1: Cloth Scissors API v1 2.0.54
		cloth-utils-v1: Cloth Utils v1 2.0.54
		com_electronwill_night-config_core: core 3.6.3
		com_electronwill_night-config_toml: toml 3.6.2
		fabric: Fabric API 0.40.1+1.17
		fabric-api-base: Fabric API Base 0.3.0+a02b446313
		fabric-api-lookup-api-v1: Fabric API Lookup API (v1) 1.3.0+cbda931818
		fabric-biome-api-v1: Fabric Biome API (v1) 3.2.0+cbda931818
		fabric-blockrenderlayer-v1: Fabric BlockRenderLayer Registration (v1) 1.1.5+a02b446318
		fabric-command-api-v1: Fabric Command API (v1) 1.1.3+5ab9934c18
		fabric-commands-v0: Fabric Commands (v0) 0.2.2+92519afa18
		fabric-containers-v0: Fabric Containers (v0) 0.1.12+cbda931818
		fabric-content-registries-v0: Fabric Content Registries (v0) 0.3.0+cbda931818
		fabric-crash-report-info-v1: Fabric Crash Report Info (v1) 0.1.5+be9da31018
		fabric-dimensions-v1: Fabric Dimensions API (v1) 2.0.11+6cefd57718
		fabric-entity-events-v1: Fabric Entity Events (v1) 1.2.3+87cc6e4c18
		fabric-events-interaction-v0: Fabric Events Interaction (v0) 0.4.10+fc40aa9d18
		fabric-events-lifecycle-v0: Fabric Events Lifecycle (v0) 0.2.1+92519afa18
		fabric-game-rule-api-v1: Fabric Game Rule API (v1) 1.0.7+cbda931818
		fabric-item-api-v1: Fabric Item API (v1) 1.2.4+cbda931818
		fabric-item-groups-v0: Fabric Item Groups (v0) 0.2.10+b7ab612118
		fabric-key-binding-api-v1: Fabric Key Binding API (v1) 1.0.4+cbda931818
		fabric-keybindings-v0: Fabric Key Bindings (v0) 0.2.2+36b77c3e18
		fabric-lifecycle-events-v1: Fabric Lifecycle Events (v1) 1.4.4+a02b44633d
		fabric-loot-tables-v1: Fabric Loot Tables (v1) 1.0.4+a02b446318
		fabric-mining-levels-v0: Fabric Mining Levels (v0) 0.1.3+92519afa18
		fabric-models-v0: Fabric Models (v0) 0.3.0+a02b446318
		fabric-networking-api-v1: Fabric Networking API (v1) 1.0.13+cbda931818
		fabric-networking-blockentity-v0: Fabric Networking Block Entity (v0) 0.2.11+a02b446318
		fabric-networking-v0: Fabric Networking (v0) 0.3.2+92519afa18
		fabric-object-builder-api-v1: Fabric Object Builder API (v1) 1.10.9+cbda931818
		fabric-object-builders-v0: Fabric Object Builders (v0) 0.7.3+a02b446318
		fabric-particles-v1: Fabric Particles (v1) 0.2.4+a02b446318
		fabric-registry-sync-v0: Fabric Registry Sync (v0) 0.7.10+e2961fee18
		fabric-renderer-api-v1: Fabric Renderer API (v1) 0.4.4+cbda931818
		fabric-renderer-indigo: Fabric Renderer - Indigo 0.4.8+cbda931818
		fabric-renderer-registries-v1: Fabric Renderer Registries (v1) 3.2.3+4658223018
		fabric-rendering-data-attachment-v1: Fabric Rendering Data Attachment (v1) 0.1.5+a02b446313
		fabric-rendering-fluids-v1: Fabric Rendering Fluids (v1) 0.1.14+4658223018
		fabric-rendering-v0: Fabric Rendering (v0) 1.1.4+4658223018
		fabric-rendering-v1: Fabric Rendering (v1) 1.8.2+ffb6d41e18
		fabric-resource-loader-v0: Fabric Resource Loader (v0) 0.4.8+a00e834b18
		fabric-screen-api-v1: Fabric Screen API (v1) 1.0.4+198a96213d
		fabric-screen-handler-api-v1: Fabric Screen Handler API (v1) 1.1.8+cbda931818
		fabric-structure-api-v1: Fabric Structure API (v1) 1.1.13+5ab9934c18
		fabric-tag-extensions-v0: Fabric Tag Extensions (v0) 1.2.1+b06cb95b18
		fabric-textures-v0: Fabric Textures (v0) 1.0.6+a02b446318
		fabric-tool-attribute-api-v1: Fabric Tool Attribute API (v1) 1.2.12+b7ab612118
		fabric-transfer-api-v1: Fabric Transfer API (v1) 1.3.1+4658223018
		fabricloader: Fabric Loader 0.11.6
		iris: Iris 1.1.2+build.9
		java: OpenJDK 64-Bit Server VM 16
		minecraft: Minecraft 1.17.1
		modid: Example Mod 1.0.8
		modmenu: Mod Menu 2.0.4
		mojangster: Mojangster 1.17-1.4.0
		patchwork-eventbus: Patchwork EventBus 2.1.0
		roughlyenoughitems: Roughly Enough Items 6.0.249-alpha
		sodium: Sodium 0.3.2+IRIS2-build.9
		twilightforest: The Twilight Forest 4.0
	Launched Version: fabric-loader-0.11.6-1.17.1
	Backend library: LWJGL version 3.2.2 build 10
	Backend API: GeForce GTX 1060 with Max-Q Design/PCIe/SSE2 GL version 3.2.0 NVIDIA 462.31, NVIDIA Corporation
	Window size: <not initialized>
	GL Caps: Using framebuffer using OpenGL 3.2
	GL debug messages: 
	Using VBOs: Yes
	Is Modded: Definitely; Client brand changed to 'fabric'
	Type: Client (map_client.txt)
	CPU: 12x Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz

Additional context

No response

commented

Maybe a event hook could be implemented for a work around?

commented

I think it would be easier if both mods used the more appropriate ModifyVariable injector here, with TwilightForest using the default mixin priority and Iris using a higher mixin priority in order to ensure that the sorting is applied after TF adds its entities to the list.

commented

Fixed in lasted commit from twilight forest

commented

Reopening as there were iris changes wanted to prevent future issues, and this is a good tracking issue