nexusnode / crafting-dead

The Minecraft zombie survival mod.
http://craftingdead.net
Other
60 stars 37 forks source link

ConcurrentModificationException Minecraft Crash. #267

Closed 0xE69 closed 1 week ago

0xE69 commented 9 months ago

From the crash report, it's clear that the crash occurs within the context of rendering an entity, more specifically, it seems to be related to the AnimationController and GunRenderer classes within the crafting-dead-core mod (crafting-dead-core-1.18.2-1.8.0.429.jar). Here's a simplified path to where the issue occurs:

AnimationController tries to apply animations. GunRenderer attempts to render a gun item. A ConcurrentModificationException is thrown during this process.

---- Minecraft Crash Report ----
// Uh... Did I do that?

Time: 2/24/24, 1:01 PM
Description: Rendering entity in world

java.util.ConcurrentModificationException: null
    at java.util.ArrayDeque.nonNullElementAt(ArrayDeque.java:270) ~[?:?] {}
    at java.util.ArrayDeque$DeqIterator.next(ArrayDeque.java:700) ~[?:?] {}
    at com.craftingdead.core.client.animation.AnimationController.apply(AnimationController.java:48) ~[crafting-dead-core-1.18.2-1.8.0.429.jar%2364!/:1.18.2-1.8.0.429] {re:classloading}
    at com.craftingdead.core.client.renderer.item.GunRenderer.render(GunRenderer.java:180) ~[crafting-dead-core-1.18.2-1.8.0.429.jar%2364!/:1.18.2-1.8.0.429] {re:classloading}
    at com.craftingdead.core.client.renderer.item.ItemRenderDispatcher.renderItem(ItemRenderDispatcher.java:86) ~[crafting-dead-core-1.18.2-1.8.0.429.jar%2364!/:1.18.2-1.8.0.429] {re:classloading,re:mixin}
    at net.minecraft.client.renderer.entity.ItemRenderer.handler$zzo000$renderStatic(ItemRenderer.java:573) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.entity.ItemRenderer.m_174242_(ItemRenderer.java) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.ItemInHandRenderer.m_109322_(ItemInHandRenderer.java:123) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:securitycraft.mixins.json:taser.ItemInHandRendererMixin,pl:mixin:APP:craftingdeadimmerse.mixins.json:ItemInHandRendererAccessor,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.entity.layers.ItemInHandLayer.m_117184_(ItemInHandLayer.java:61) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:classloading}
    at net.minecraft.client.renderer.entity.layers.PlayerItemInHandLayer.m_117184_(PlayerItemInHandLayer.java:32) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:classloading}
    at net.minecraft.client.renderer.entity.layers.ItemInHandLayer.m_6494_(ItemInHandLayer.java:39) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:classloading}
    at net.minecraft.client.renderer.entity.layers.ItemInHandLayer.m_6494_(ItemInHandLayer.java:15) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:classloading}
    at net.minecraft.client.renderer.entity.LivingEntityRenderer.m_7392_(LivingEntityRenderer.java:131) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.entity.player.PlayerRenderer.m_7392_(PlayerRenderer.java:62) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:runtimedistcleaner:A,re:classloading,pl:mixin:APP:craftingdead.mixins.json:PlayerRendererMixin,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.entity.player.PlayerRenderer.m_7392_(PlayerRenderer.java:43) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:runtimedistcleaner:A,re:classloading,pl:mixin:APP:craftingdead.mixins.json:PlayerRendererMixin,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.entity.EntityRenderDispatcher.m_114384_(EntityRenderDispatcher.java:129) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.LevelRenderer.m_109517_(LevelRenderer.java:1428) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.LevelRenderer.m_109599_(LevelRenderer.java:1219) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.GameRenderer.m_109089_(GameRenderer.java:1061) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.GameRenderer.m_109093_(GameRenderer.java:835) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1046) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:immersiveengineering.mixins.json:accessors.client.MinecraftAccess,pl:mixin:APP:bookshelf.common.mixins.json:client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:balm.mixins.json:MinecraftMixin,pl:mixin:APP:craftingdeadimmerse.mixins.json:MinecraftMixin,pl:mixin:APP:securitycraft.mixins.json:camera.MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:665) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:immersiveengineering.mixins.json:accessors.client.MinecraftAccess,pl:mixin:APP:bookshelf.common.mixins.json:client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:balm.mixins.json:MinecraftMixin,pl:mixin:APP:craftingdeadimmerse.mixins.json:MinecraftMixin,pl:mixin:APP:securitycraft.mixins.json:camera.MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.main.Main.main(Main.java:205) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:classloading,pl:runtimedistcleaner:A}
    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.minecraftforge.fml.loading.targets.CommonClientLaunchHandler.lambda$launchService$0(CommonClientLaunchHandler.java:31) ~[fmlloader-1.18.2-40.2.0.jar%2317!/:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:149) [bootstraplauncher-1.0.0.jar:?] {}

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

-- Head --
Thread: Render thread
Stacktrace:
    at java.util.ArrayDeque.nonNullElementAt(ArrayDeque.java:270) ~[?:?] {}
    at java.util.ArrayDeque$DeqIterator.next(ArrayDeque.java:700) ~[?:?] {}
    at com.craftingdead.core.client.animation.AnimationController.apply(AnimationController.java:48) ~[crafting-dead-core-1.18.2-1.8.0.429.jar%2364!/:1.18.2-1.8.0.429] {re:classloading}
    at com.craftingdead.core.client.renderer.item.GunRenderer.render(GunRenderer.java:180) ~[crafting-dead-core-1.18.2-1.8.0.429.jar%2364!/:1.18.2-1.8.0.429] {re:classloading}
    at com.craftingdead.core.client.renderer.item.ItemRenderDispatcher.renderItem(ItemRenderDispatcher.java:86) ~[crafting-dead-core-1.18.2-1.8.0.429.jar%2364!/:1.18.2-1.8.0.429] {re:classloading,re:mixin}
    at net.minecraft.client.renderer.entity.ItemRenderer.handler$zzo000$renderStatic(ItemRenderer.java:573) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.entity.ItemRenderer.m_174242_(ItemRenderer.java) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.ItemInHandRenderer.m_109322_(ItemInHandRenderer.java:123) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:securitycraft.mixins.json:taser.ItemInHandRendererMixin,pl:mixin:APP:craftingdeadimmerse.mixins.json:ItemInHandRendererAccessor,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.entity.layers.ItemInHandLayer.m_117184_(ItemInHandLayer.java:61) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:classloading}
    at net.minecraft.client.renderer.entity.layers.PlayerItemInHandLayer.m_117184_(PlayerItemInHandLayer.java:32) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:classloading}
    at net.minecraft.client.renderer.entity.layers.ItemInHandLayer.m_6494_(ItemInHandLayer.java:39) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:classloading}
    at net.minecraft.client.renderer.entity.layers.ItemInHandLayer.m_6494_(ItemInHandLayer.java:15) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:classloading}
    at net.minecraft.client.renderer.entity.LivingEntityRenderer.m_7392_(LivingEntityRenderer.java:131) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.entity.player.PlayerRenderer.m_7392_(PlayerRenderer.java:62) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:runtimedistcleaner:A,re:classloading,pl:mixin:APP:craftingdead.mixins.json:PlayerRendererMixin,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.entity.player.PlayerRenderer.m_7392_(PlayerRenderer.java:43) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:runtimedistcleaner:A,re:classloading,pl:mixin:APP:craftingdead.mixins.json:PlayerRendererMixin,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.entity.EntityRenderDispatcher.m_114384_(EntityRenderDispatcher.java:129) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.LevelRenderer.m_109517_(LevelRenderer.java:1428) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.LevelRenderer.m_109599_(LevelRenderer.java:1219) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.GameRenderer.m_109089_(GameRenderer.java:1061) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}
-- Entity being rendered --
Details:
    Entity Type: minecraft:player (net.minecraft.client.player.RemotePlayer)
    Entity ID: 485172
    Entity Name: St3virous
    Entity's Exact location: 1672.77, 79.00, 580.57
    Entity's Block location: World: (1672,79,580), Section: (at 8,15,4 in 104,4,36; chunk contains blocks 1664,-64,576 to 1679,319,591), Region: (3,1; contains chunks 96,32 to 127,63, blocks 1536,-64,512 to 2047,319,1023)
    Entity's Momentum: 0.07, -0.08, -0.09
    Entity's Passengers: []
    Entity's Vehicle: null
Stacktrace:
    at net.minecraft.client.renderer.entity.EntityRenderDispatcher.m_114384_(EntityRenderDispatcher.java:129) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.LevelRenderer.m_109517_(LevelRenderer.java:1428) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.LevelRenderer.m_109599_(LevelRenderer.java:1219) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.GameRenderer.m_109089_(GameRenderer.java:1061) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.GameRenderer.m_109093_(GameRenderer.java:835) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1046) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:immersiveengineering.mixins.json:accessors.client.MinecraftAccess,pl:mixin:APP:bookshelf.common.mixins.json:client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:balm.mixins.json:MinecraftMixin,pl:mixin:APP:craftingdeadimmerse.mixins.json:MinecraftMixin,pl:mixin:APP:securitycraft.mixins.json:camera.MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:665) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:immersiveengineering.mixins.json:accessors.client.MinecraftAccess,pl:mixin:APP:bookshelf.common.mixins.json:client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:balm.mixins.json:MinecraftMixin,pl:mixin:APP:craftingdeadimmerse.mixins.json:MinecraftMixin,pl:mixin:APP:securitycraft.mixins.json:camera.MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.main.Main.main(Main.java:205) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:classloading,pl:runtimedistcleaner:A}
    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.minecraftforge.fml.loading.targets.CommonClientLaunchHandler.lambda$launchService$0(CommonClientLaunchHandler.java:31) ~[fmlloader-1.18.2-40.2.0.jar%2317!/:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:149) [bootstraplauncher-1.0.0.jar:?] {}

-- Renderer details --
Details:
    Assigned renderer: net.minecraft.client.renderer.entity.player.PlayerRenderer@37c0c1e3
    Location: -1.55,-1.62,-0.33 - World: (-2,-2,-1), Section: (at 14,14,15 in -1,-1,-1; chunk contains blocks -16,-64,-16 to -1,319,-1), Region: (-1,-1; contains chunks -32,-32 to -1,-1, blocks -512,-64,-512 to -1,319,-1)
    Rotation: -153.05322
    Delta: 0.06012571
Stacktrace:
    at net.minecraft.client.renderer.entity.EntityRenderDispatcher.m_114384_(EntityRenderDispatcher.java:129) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.LevelRenderer.m_109517_(LevelRenderer.java:1428) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.LevelRenderer.m_109599_(LevelRenderer.java:1219) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.GameRenderer.m_109089_(GameRenderer.java:1061) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.renderer.GameRenderer.m_109093_(GameRenderer.java:835) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1046) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:immersiveengineering.mixins.json:accessors.client.MinecraftAccess,pl:mixin:APP:bookshelf.common.mixins.json:client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:balm.mixins.json:MinecraftMixin,pl:mixin:APP:craftingdeadimmerse.mixins.json:MinecraftMixin,pl:mixin:APP:securitycraft.mixins.json:camera.MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:665) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:immersiveengineering.mixins.json:accessors.client.MinecraftAccess,pl:mixin:APP:bookshelf.common.mixins.json:client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:balm.mixins.json:MinecraftMixin,pl:mixin:APP:craftingdeadimmerse.mixins.json:MinecraftMixin,pl:mixin:APP:securitycraft.mixins.json:camera.MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.main.Main.main(Main.java:205) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:classloading,pl:runtimedistcleaner:A}
    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.minecraftforge.fml.loading.targets.CommonClientLaunchHandler.lambda$launchService$0(CommonClientLaunchHandler.java:31) ~[fmlloader-1.18.2-40.2.0.jar%2317!/:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:149) [bootstraplauncher-1.0.0.jar:?] {}

-- Affected level --
Details:
    All players: 6 total; [LocalPlayer['jjstiver8'/31442, l='ClientLevel', x=1674.31, y=79.00, z=580.90], RemotePlayer['ShilhohTony'/305137, l='ClientLevel', x=1687.44, y=90.28, z=588.44], RemotePlayer['H3artlessG0D2099'/4600, l='ClientLevel', x=1702.67, y=78.00, z=584.57], RemotePlayer['TryHardTomato'/444785, l='ClientLevel', x=1675.24, y=85.00, z=572.75], RemotePlayer['St3virous'/485172, l='ClientLevel', x=1672.77, y=79.00, z=580.57], RemotePlayer['kimmiekaze'/5152, l='ClientLevel', x=1675.84, y=81.00, z=581.04]]
    Chunk stats: 841, 642
    Level dimension: minecraft:spawn
    Level spawn location: World: (232,64,376), Section: (at 8,0,8 in 14,4,23; chunk contains blocks 224,-64,368 to 239,319,383), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,-64,0 to 511,319,511)
    Level time: 135230 game time, 135230 day time
    Server brand: Magma
    Server type: Non-integrated multiplayer server
Stacktrace:
    at net.minecraft.client.multiplayer.ClientLevel.m_6026_(ClientLevel.java:407) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:runtimedistcleaner:A,re:classloading,pl:mixin:APP:architectury.mixins.json:MixinClientLevel,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.m_91354_(Minecraft.java:2262) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:immersiveengineering.mixins.json:accessors.client.MinecraftAccess,pl:mixin:APP:bookshelf.common.mixins.json:client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:balm.mixins.json:MinecraftMixin,pl:mixin:APP:craftingdeadimmerse.mixins.json:MinecraftMixin,pl:mixin:APP:securitycraft.mixins.json:camera.MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:682) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:immersiveengineering.mixins.json:accessors.client.MinecraftAccess,pl:mixin:APP:bookshelf.common.mixins.json:client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:balm.mixins.json:MinecraftMixin,pl:mixin:APP:craftingdeadimmerse.mixins.json:MinecraftMixin,pl:mixin:APP:securitycraft.mixins.json:camera.MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}
    at net.minecraft.client.main.Main.main(Main.java:205) ~[client-1.18.2-20220404.173914-srg.jar%2385!/:?] {re:classloading,pl:runtimedistcleaner:A}
    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.minecraftforge.fml.loading.targets.CommonClientLaunchHandler.lambda$launchService$0(CommonClientLaunchHandler.java:31) ~[fmlloader-1.18.2-40.2.0.jar%2317!/:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) [modlauncher-9.1.3.jar%235!/:?] {}
    at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:149) [bootstraplauncher-1.0.0.jar:?] {}
0xE69 commented 7 months ago

The issue in the code is likely occurring in the apply method. If an animation is not alive during the apply method, it's not removed from the queue. If an animation becomes not alive during its apply method (which might be called from another thread), it could cause a ConcurrentModificationException.

GitHub\crafting-dead\crafting-dead-core\src\main\java\com\craftingdead\core\client\animation\AnimationController.java

To fix this, we can use an Iterator in the apply method, similar to how you used it in the tick method. Changes recommended;

    for (var animation : this.animations) {
      if (animation.isAlive()) {
        animation.apply(partialTicks, poseStack);
      }
    }
  }

Change to:

    var iterator = this.animations.iterator();
    while (iterator.hasNext()) {
        var animation = iterator.next();
        if (animation.isAlive()) {
            animation.apply(partialTicks, poseStack);
        } else {
            iterator.remove();
        }
    }
}

This way, if an animation is not alive, it will be safely removed from the queue.

0xE69 commented 7 months ago

https://github.com/nexusnode/crafting-dead/commit/6bc51ca286dac89f19dcdec97a050940a277653f

Review requested.

0xE69 commented 1 week ago

Marked as fixed.