Tetra

Tetra

12M Downloads

Switching Optifine shaders, then rendering a modular item, crashes the game.

AdamEternal opened this issue ยท 10 comments

commented

Bug Report

Note: this could be the same issue as #368, but I'm not sure, so I'm making a new Github issue.

Observed Behaviour
When I switch what Optifine shaders I'm using mid-game (including "off" and "internal"), from that point on, until the game closes, looking at any modular item from Tetra crashes the game. If I try to craft it, if it's in my hotbar, if it's in my inventory and I open my inventory, or if it's in the world nearby as an item entity, the game crashes. The issue does not persist after re-launching the game, but the Optifine shader I chose is still chosen. The issue will occur again if I change my Optifine shader.

Crash log: https://pastebin.com/raw/HGF7CLeu

Expected Behaviour
I expect for the game to not crash under those circumstances.

Minimal setup needed to reproduce

  • Forge version: 36.1.2
  • Tetra version: 3.8.0
  • Tetra configuration: https://pastebin.com/raw/gVn1Zchd (I changed nothing in the config.)
  • Other mods:
    • mGui 3.1.3
    • Optifine 1.16.5 HD U G7

Steps to reproduce

  1. Enter a world.
  2. Change which Optifine shaders you're using. (Changing between "off" and "internal" counts.)
  3. Cause the game to render a modular Tetra item. (Have a hammer in your hotbar, for example.)
commented

Confirming that this still repros (crash log) with:

  • Minecraft 1.16.5
  • Forge 36.2.19
  • Tetra 3.19.0 (via Better Minecraft Plus v30)
  • OptiFine_1.16.5_HD_U_G8
  • ComplementaryShaders 4.2.2

Inline copy of the stack to make it easier for others to search for the issue:

Description: Rendering item

com.google.common.util.concurrent.UncheckedExecutionException: java.lang.ArrayIndexOutOfBoundsException: 6
	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2217) ~[guava-21.0.jar:?] {}
	at com.google.common.cache.LocalCache.get(LocalCache.java:4154) ~[guava-21.0.jar:?] {}
	at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:5060) ~[guava-21.0.jar:?] {}
	at se.mickelus.tetra.client.model.ModularOverrideList.func_239290_a_(ModularOverrideList.java:68) ~[tetra:3.19.0] {re:classloading}
	at net.minecraft.client.renderer.ItemRenderer.func_184393_a(ItemRenderer.java:365) ~[?:?] {re:mixin,pl:accesstransformer:B,xf:OptiFine:default,re:classloading,pl:accesstransformer:B,xf:OptiFine:default,pl:mixin:APP:supplementaries.mixins.json:ItemRendererMixin,pl:mixin:APP:obfuscate.mixins.json:client.ItemRendererMixin,pl:mixin:APP:dungeons_mobs.mixins.json:ItemRendererMixin,pl:mixin:APP:quark.mixins.json:client.ItemRendererMixin,pl:mixin:APP:charm.mixins.json:ItemRendererMixin,pl:mixin:A}
	at net.minecraft.client.renderer.ItemRenderer.func_239387_b_(ItemRenderer.java:459) ~[?:?] {re:mixin,pl:accesstransformer:B,xf:OptiFine:default,re:classloading,pl:accesstransformer:B,xf:OptiFine:default,pl:mixin:APP:supplementaries.mixins.json:ItemRendererMixin,pl:mixin:APP:obfuscate.mixins.json:client.ItemRendererMixin,pl:mixin:APP:dungeons_mobs.mixins.json:ItemRendererMixin,pl:mixin:APP:quark.mixins.json:client.ItemRendererMixin,pl:mixin:APP:charm.mixins.json:ItemRendererMixin,pl:mixin:A}
	at net.minecraft.client.renderer.ItemRenderer.func_239390_c_(ItemRenderer.java:443) ~[?:?] {re:mixin,pl:accesstransformer:B,xf:OptiFine:default,re:classloading,pl:accesstransformer:B,xf:OptiFine:default,pl:mixin:APP:supplementaries.mixins.json:ItemRendererMixin,pl:mixin:APP:obfuscate.mixins.json:client.ItemRendererMixin,pl:mixin:APP:dungeons_mobs.mixins.json:ItemRendererMixin,pl:mixin:APP:quark.mixins.json:client.ItemRendererMixin,pl:mixin:APP:charm.mixins.json:ItemRendererMixin,pl:mixin:A}
	at net.minecraft.client.gui.toasts.RecipeToast.func_230444_a_(SourceFile:52) ~[?:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.client.gui.toasts.ToastGui$ToastInstance.func_193684_a(SourceFile:112) ~[?:?] {re:classloading}
	at net.minecraft.client.gui.toasts.ToastGui.func_238541_a_(SourceFile:32) ~[?:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.client.Minecraft.func_195542_b(Minecraft.java:979) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:randompatches.mixins.json:client.MinecraftMixin,pl:mixin:APP:betterendforge.mixins.json:MinecraftMixin,pl:mixin:APP:fallingleaves.mixins.json:MinecraftClientMixin,pl:mixin:APP:flywheel.mixins.json:ShaderCloseMixin,pl:mixin:APP:abnormals_core.mixins.json:client.MinecraftMixin,pl:mixin:APP:outer_end.mixins.json:BackgroundMusicMixin,pl:mixin:APP:charm.mixins.json:accessor.MinecraftAccessor,pl:mixin:APP:fancymenu.general.mixin.json:MixinMinecraft,pl:mixin:APP:drippyloadingscreen.mixin.json:MixinMinecraft,pl:mixin:APP:create.mixins.json:WindowResizeMixin,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:607) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:randompatches.mixins.json:client.MinecraftMixin,pl:mixin:APP:betterendforge.mixins.json:MinecraftMixin,pl:mixin:APP:fallingleaves.mixins.json:MinecraftClientMixin,pl:mixin:APP:flywheel.mixins.json:ShaderCloseMixin,pl:mixin:APP:abnormals_core.mixins.json:client.MinecraftMixin,pl:mixin:APP:outer_end.mixins.json:BackgroundMusicMixin,pl:mixin:APP:charm.mixins.json:accessor.MinecraftAccessor,pl:mixin:APP:fancymenu.general.mixin.json:MixinMinecraft,pl:mixin:APP:drippyloadingscreen.mixin.json:MixinMinecraft,pl:mixin:APP:create.mixins.json:WindowResizeMixin,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.client.main.Main.main(Main.java:184) ~[minecraft-1.16.5-client.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_301] {}
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_301] {}
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_301] {}
	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_301] {}
	at net.minecraftforge.fml.loading.FMLClientLaunchProvider.lambda$launchService$0(FMLClientLaunchProvider.java:51) ~[forge-1.16.5-36.2.19-launcher.jar:36.2] {}
	at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.0.9.jar:?] {}
	at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.0.9.jar:?] {}
	at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.0.9.jar:?] {}
	at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.0.9.jar:?] {re:classloading}
	at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.0.9.jar:?] {re:classloading}
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_301] {}
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_301] {}
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_301] {}
	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_301] {}
	at io.github.zekerzhayard.forgewrapper.installer.Main.main(Main.java:57) [ForgeWrapper-1.5.3.jar:1.5.3] {}
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_301] {}
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_301] {}
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_301] {}
	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_301] {}
	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:?] {}
Caused by: java.lang.ArrayIndexOutOfBoundsException: 6
	at net.minecraftforge.client.model.pipeline.BakedQuadBuilder.put(BakedQuadBuilder.java:103) ~[forge:?] {re:classloading}
	at se.mickelus.tetra.client.model.ModularItemModel.putVertex(ModularItemModel.java:275) ~[tetra:3.19.0] {re:classloading}
	at se.mickelus.tetra.client.model.ModularItemModel.buildQuad(ModularItemModel.java:236) ~[tetra:3.19.0] {re:classloading}
	at se.mickelus.tetra.client.model.ModularItemModel.buildSideQuad(ModularItemModel.java:209) ~[tetra:3.19.0] {re:classloading}
	at se.mickelus.tetra.client.model.ModularItemModel.getQuadsForSprite(ModularItemModel.java:133) ~[tetra:3.19.0] {re:classloading}
	at se.mickelus.tetra.client.model.ModularItemModel.realBake(ModularItemModel.java:89) ~[tetra:3.19.0] {re:classloading}
	at se.mickelus.tetra.client.model.ModularOverrideList.getOverrideModel(ModularOverrideList.java:83) ~[tetra:3.19.0] {re:classloading}
	at se.mickelus.tetra.client.model.ModularOverrideList.lambda$getOverrideModel$0(ModularOverrideList.java:68) ~[tetra:3.19.0] {re:classloading}
	at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:5065) ~[guava-21.0.jar:?] {}
	at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3716) ~[guava-21.0.jar:?] {}
	at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2424) ~[guava-21.0.jar:?] {}
	at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2298) ~[guava-21.0.jar:?] {}
	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2211) ~[guava-21.0.jar:?] {}
	... 35 more
commented

I was having the same problem. Turning off custom items, custom GUIs, and custom entity models in optifine fixed this for me.

commented

Happens on 1.18.2 Forge 40.2.0 too, but having the items in your hotbar doesn't crash the game, only an inventory (maybe because I have complementary in basic rp mode?). It is interesting to me that if you restart the game but still have shaders enabled, it works, and it still crashes if you turn off shaders before you restart the game.
Something else I noticed while I had not enough crashes installed crashes installed, you will be taken back to the main menu when it crashes but if you rejoin your server before restarting the game it still crashes. Restarting the game is the only thing that seems to magically be fixing this issue.

commented

Same issue here, I was just testing things out for a modpack im creating and i was going to test a modded enchant on a modified tetra diamond pickaxe, but as soon as I drop the vanilla pickaxe in the workbench i instantly crash.

commented

Hey, with the latest new update to tetra, you can actually use tools and the rest with optifine without the game crashing as far as i can tell, however, whenever you use shaders with optifine the game crashes.

commented

Hey mickelus, do you have an ETA on when this will be fixed?

commented

Can confirm. Had a crash under similar circumstances.

Crash log: https://pastebin.com/Y5gGRskh

Minecraft: 1.16.4
Forge: 35.1.37
Tetra: 3.8.0
Optifine: OptiFine_1.16.4_HD_U_G7

commented

Also crashed in similar circumstances

commented

Does it still crash if you reload resources (F3 + T) after changing shaders?

commented

Does it still crash if you reload resources (F3 + T) after changing shaders?

Yes. Just tested. Reloading resources seems to have no effect on the results.