Shadows-of-Fire / FastSuite

A mod that increases recipe performance globally
MIT License
12 stars 3 forks source link

Crash on putting Draconic Staff (from Draconic Evolution) into Smithing Table #36

Open EndDragon438 opened 2 months ago

EndDragon438 commented 2 months ago
Minecraft version: 1.20.1
Mod version: 7.4.0
Minecraft Forge version: 47.2.20
Mod Pack: All The Mods 9: To The Sky

crash report link (ATM9Sky)

This behaviour doesn't show up with only Draconic Evolution, so it's being caused by another mod. After checking prev issues in this repository this seems likely to be caused by Apotheosis.

After testing, I was unable to replicate this issue in both ATM9Sky (v1.0.7 and v1.0.5) outside of the survival world it first happened in, and in a cut-down testing pack with just DE and Apotheosis (I also tested with FastSuite, with no crash) I'm unsure what would be causing the crash in that specific world, I've tested with: enchantments, affixes, charged and uncharged staff but only gotten the crash in that one survival world. My crash log may have more information but it's too dense for me to read very well.

Shadows-of-Fire commented 2 months ago

This is being caused by a litany of things. The true cause is FastSuite, though it only happens when DE and Apoth are present due to how they interact together with FS.

Draconic Evolution has a non-threadsafe capability stored on its ItemStack(s) here. Part of what this capability is used for is resolution of stats on modular items, in this case the attack damage for an IModularTieredItem.

Apoth's smithing table recipes check if an item may be affixed by attempting to resolve a loot category, of which the fallback for checking for SWORD class item checks the attack damage of the item, triggering a call to getOrCreate in the non-threadsafe moduleDataCache from DE. Normally this would be fine, but because FS is threading the recipes, and because Apoth adds more than one recipe which does this check, it is possible for two getOrCreate calls to occur on different threads, triggering the crash you see here.

From your end, the only fix you can apply is to blacklist the minecraft:smithing recipe type in FastSuite's config file, which will prevent it from threading smithing recipes, until https://github.com/Shadows-of-Fire/FastSuite/pull/27 can be implemented properly.

EndDragon438 commented 2 months ago

got it, thanks for the quick (and detailed!) reply and good luck on the fix!