Curios API (Fabric)

Curios API (Fabric)

830k Downloads

[Bug]: Incorrect slot config syntax corrupts all save games and crashes new world creation

CTNOriginals opened this issue ยท 2 comments

commented

Version Info

  • Minecraft, 1.20.1
  • Mod version, 5.14.1+1.20.1

Description of the Bug

I downloaded this mod as a dependency for Elytra Slot, loaded a survival world of mine with it, worked fine and as expected, was looking for a way to add more slots for things, found the curious API config and added a slot in the "Common" category. The slot that i added just had "Test" as its content.
I was unaware of the syntax as it was not described to me anywhere.
When i saved this, nothing really happened and i forgot about it. When i restarted my game and tried to load the same save game, i was greeted with screenshot 1 (see below), and when i tried to load the world in safe mode, i was met with screenshot 2.
When trying to create a new world, the game crashed (see crash log below).

Steps to Reproduce

  • Add a new slot in the config with faulty syntax.
    • Error: Load any save game
    • Crash: Click the "Create new world" button

Note

I am aware that it is my fault i didnt real all readmes before trying stuff, but that doesnt take way from the fact that this error should never take place and instead should just warn the user that the slot they tried to add is incorrect.

Screenshots

Image
Image

Crash log
crash-2025-05-20_15.21.58-client.txt

Relevant Log Outputs

Error when trying to load the world with incorrect slot syntax:

[15:29:17] [Render thread/WARN] [ModernFix/]: Initial datapack load took 312.0 ms
[15:29:17] [Render thread/WARN] [minecraft/WorldOpenFlows]: Failed to load level data or datapacks, can't proceed with server load
java.util.concurrent.ExecutionException: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
	at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396) ~[?:?] {re:mixin}
	at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2073) ~[?:?] {re:mixin}
	at net.minecraft.client.gui.screens.worldselection.WorldOpenFlows.m_246486_(WorldOpenFlows.java:164) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:mixin,pl:runtimedistcleaner:A,re:classloading,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.WorldOpenFlowsMixin,pl:mixin:APP:kubejs-common.mixins.json:WorldOpenFlowsMixin,pl:mixin:APP:yeetusexperimentus.mixins.json:WorldOpenFlowsMixin,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.client.gui.screens.worldselection.WorldOpenFlows.m_233122_(WorldOpenFlows.java:113) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:mixin,pl:runtimedistcleaner:A,re:classloading,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.WorldOpenFlowsMixin,pl:mixin:APP:kubejs-common.mixins.json:WorldOpenFlowsMixin,pl:mixin:APP:yeetusexperimentus.mixins.json:WorldOpenFlowsMixin,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.client.gui.screens.worldselection.WorldOpenFlows.doLoadLevel(WorldOpenFlows.java:181) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:mixin,pl:runtimedistcleaner:A,re:classloading,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.WorldOpenFlowsMixin,pl:mixin:APP:kubejs-common.mixins.json:WorldOpenFlowsMixin,pl:mixin:APP:yeetusexperimentus.mixins.json:WorldOpenFlowsMixin,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.client.gui.screens.worldselection.WorldOpenFlows.m_233145_(WorldOpenFlows.java:169) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:mixin,pl:runtimedistcleaner:A,re:classloading,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.WorldOpenFlowsMixin,pl:mixin:APP:kubejs-common.mixins.json:WorldOpenFlowsMixin,pl:mixin:APP:yeetusexperimentus.mixins.json:WorldOpenFlowsMixin,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.client.gui.screens.worldselection.WorldOpenFlows.m_233178_(WorldOpenFlows.java:189) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:mixin,pl:runtimedistcleaner:A,re:classloading,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.WorldOpenFlowsMixin,pl:mixin:APP:kubejs-common.mixins.json:WorldOpenFlowsMixin,pl:mixin:APP:yeetusexperimentus.mixins.json:WorldOpenFlowsMixin,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.client.gui.screens.DatapackLoadFailureScreen.m_95904_(DatapackLoadFailureScreen.java:24) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:classloading}
	at net.minecraft.client.gui.components.Button.m_5691_(Button.java:38) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:mixin,pl:runtimedistcleaner:A,re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.client.gui.components.AbstractButton.m_5716_(AbstractButton.java:55) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:mixin,pl:runtimedistcleaner:A,re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.client.gui.components.AbstractWidget.m_6375_(AbstractWidget.java:175) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at net.minecraft.client.gui.components.events.ContainerEventHandler.m_6375_(ContainerEventHandler.java:38) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:mixin,re:computing_frames,re:classloading}
	at net.minecraft.client.MouseHandler.m_168084_(MouseHandler.java:92) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:mixin,pl:runtimedistcleaner:A,re:classloading,pl:mixin:APP:balm.mixins.json:MouseHandlerAccessor,pl:mixin:APP:konkrete.mixin.json:MixinMouseHandler,pl:mixin:APP:mixins.cofhcore.json:MouseHandlerMixin,pl:mixin:APP:emi.mixins.json:MouseMixin,pl:mixin:APP:mafglib.mixins.json:MixinMouse,pl:mixin:APP:justzoom.mixins.json:client.MixinMouseHandler,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.client.gui.screens.Screen.m_96579_(Screen.java:437) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:computing_frames,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:configured.common.mixins.json:client.ScreenMixin,pl:mixin:APP:balm.mixins.json:ScreenAccessor,pl:mixin:APP:konkrete.mixin.json:IMixinScreen,pl:mixin:APP:emi.mixins.json:ScreenMixin,pl:mixin:APP:patchouli_xplat.mixins.json:client.AccessorScreen,pl:mixin:APP:kubejs-common.mixins.json:ScreenMixin,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.client.MouseHandler.m_91530_(MouseHandler.java:89) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:mixin,pl:runtimedistcleaner:A,re:classloading,pl:mixin:APP:balm.mixins.json:MouseHandlerAccessor,pl:mixin:APP:konkrete.mixin.json:MixinMouseHandler,pl:mixin:APP:mixins.cofhcore.json:MouseHandlerMixin,pl:mixin:APP:emi.mixins.json:MouseMixin,pl:mixin:APP:mafglib.mixins.json:MixinMouse,pl:mixin:APP:justzoom.mixins.json:client.MixinMouseHandler,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.client.MouseHandler.m_168091_(MouseHandler.java:189) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:mixin,pl:runtimedistcleaner:A,re:classloading,pl:mixin:APP:balm.mixins.json:MouseHandlerAccessor,pl:mixin:APP:konkrete.mixin.json:MixinMouseHandler,pl:mixin:APP:mixins.cofhcore.json:MouseHandlerMixin,pl:mixin:APP:emi.mixins.json:MouseMixin,pl:mixin:APP:mafglib.mixins.json:MixinMouse,pl:mixin:APP:justzoom.mixins.json:client.MixinMouseHandler,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.util.thread.BlockableEventLoop.execute(BlockableEventLoop.java:102) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:mixin,pl:accesstransformer:B,re:computing_frames,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:perf.fix_loop_spin_waiting.BlockableEventLoopMixin,pl:mixin:A}
	at net.minecraft.client.MouseHandler.m_91565_(MouseHandler.java:188) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:mixin,pl:runtimedistcleaner:A,re:classloading,pl:mixin:APP:balm.mixins.json:MouseHandlerAccessor,pl:mixin:APP:konkrete.mixin.json:MixinMouseHandler,pl:mixin:APP:mixins.cofhcore.json:MouseHandlerMixin,pl:mixin:APP:emi.mixins.json:MouseMixin,pl:mixin:APP:mafglib.mixins.json:MixinMouse,pl:mixin:APP:justzoom.mixins.json:client.MixinMouseHandler,pl:mixin:A,pl:runtimedistcleaner:A}
	at org.lwjgl.glfw.GLFWMouseButtonCallbackI.callback(GLFWMouseButtonCallbackI.java:43) ~[lwjgl-glfw-3.3.1.jar%2364!/:build 7] {}
	at org.lwjgl.system.JNI.invokeV(Native Method) ~[lwjgl-3.3.1.jar%2370!/:build 7] {}
	at org.lwjgl.glfw.GLFW.glfwWaitEventsTimeout(GLFW.java:3474) ~[lwjgl-glfw-3.3.1.jar%2364!/:build 7] {re:mixin}
	at com.mojang.blaze3d.systems.RenderSystem.limitDisplayFPS(RenderSystem.java:237) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:classloading}
	at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1173) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.blast_search_trees.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:feature.measure_time.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.world_leaks.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.concurrency.MinecraftMixin,pl:mixin:APP:modernfix-forge.mixins.json:feature.measure_time.MinecraftMixin_Forge,pl:mixin:APP:forgematica.mixins.json:MixinMinecraftClient,pl:mixin:APP:pickupnotifier.common.mixins.json:client.MinecraftMixin,pl:mixin:APP:balm.mixins.json:MinecraftMixin,pl:mixin:APP:konkrete.mixin.json:MixinMinecraft,pl:mixin:APP:emi.mixins.json:MinecraftClientMixin,pl:mixin:APP:mafglib.mixins.json:MixinMinecraftClient,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:kubejs-common.mixins.json:MinecraftClientMixin,pl:mixin:APP:modernfix-common.mixins.json:feature.remove_telemetry.MinecraftMixin_Telemetry,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:718) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.blast_search_trees.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:feature.measure_time.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.world_leaks.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.concurrency.MinecraftMixin,pl:mixin:APP:modernfix-forge.mixins.json:feature.measure_time.MinecraftMixin_Forge,pl:mixin:APP:forgematica.mixins.json:MixinMinecraftClient,pl:mixin:APP:pickupnotifier.common.mixins.json:client.MinecraftMixin,pl:mixin:APP:balm.mixins.json:MinecraftMixin,pl:mixin:APP:konkrete.mixin.json:MixinMinecraft,pl:mixin:APP:emi.mixins.json:MinecraftClientMixin,pl:mixin:APP:mafglib.mixins.json:MixinMinecraftClient,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:kubejs-common.mixins.json:MinecraftClientMixin,pl:mixin:APP:modernfix-common.mixins.json:feature.remove_telemetry.MinecraftMixin_Telemetry,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.client.main.Main.main(Main.java:218) ~[minecraft-1.20.1-client.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[?:?] {}
	at java.lang.reflect.Method.invoke(Method.java:580) ~[?:?] {re:mixin}
	at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.runTarget(CommonLaunchHandler.java:111) ~[fmlloader-1.20.1-47.4.0.jar:?] {}
	at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.clientService(CommonLaunchHandler.java:99) ~[fmlloader-1.20.1-47.4.0.jar:?] {}
	at net.minecraftforge.fml.loading.targets.CommonClientLaunchHandler.lambda$makeService$0(CommonClientLaunchHandler.java:25) ~[fmlloader-1.20.1-47.4.0.jar:?] {}
	at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:30) ~[modlauncher-10.0.9.jar:?] {}
	at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) ~[modlauncher-10.0.9.jar:?] {}
	at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) ~[modlauncher-10.0.9.jar:?] {}
	at cpw.mods.modlauncher.Launcher.run(Launcher.java:108) ~[modlauncher-10.0.9.jar:?] {}
	at cpw.mods.modlauncher.Launcher.main(Launcher.java:78) ~[modlauncher-10.0.9.jar:?] {}
	at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) ~[modlauncher-10.0.9.jar:?] {}
	at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) ~[modlauncher-10.0.9.jar:?] {}
	at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) ~[bootstraplauncher-1.1.2.jar:?] {}
	at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[?:?] {}
	at java.lang.reflect.Method.invoke(Method.java:580) ~[?:?] {re:mixin}
	at io.github.zekerzhayard.forgewrapper.installer.Main.main(Main.java:67) ~[?:?] {}
	at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[?:?] {}
	at java.lang.reflect.Method.invoke(Method.java:580) ~[?:?] {re:mixin}
	at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:243) ~[?:?] {}
	at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:278) ~[?:?] {}
	at org.multimc.EntryPoint.listen(EntryPoint.java:143) ~[?:?] {}
	at org.multimc.EntryPoint.main(EntryPoint.java:34) ~[?:?] {}
Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
	at top.theillusivec4.curios.common.data.CuriosSlotManager.fromConfig(CuriosSlotManager.java:231) ~[curios-forge-5.14.1+1.20.1.jar%23186!/:5.14.1+1.20.1] {re:classloading}
	at top.theillusivec4.curios.common.data.CuriosSlotManager.apply(CuriosSlotManager.java:151) ~[curios-forge-5.14.1+1.20.1.jar%23186!/:5.14.1+1.20.1] {re:classloading}
	at top.theillusivec4.curios.common.data.CuriosSlotManager.m_5787_(CuriosSlotManager.java:41) ~[curios-forge-5.14.1+1.20.1.jar%23186!/:5.14.1+1.20.1] {re:classloading}
	at net.minecraft.server.packs.resources.SimplePreparableReloadListener.m_10789_(SimplePreparableReloadListener.java:13) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:classloading,re:mixin}
	at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:718) ~[?:?] {}
	at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {}
	at net.minecraft.server.packs.resources.SimpleReloadInstance.m_143940_(SimpleReloadInstance.java:69) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:mixin,re:classloading,pl:mixin:APP:modernfix-common.mixins.json:feature.measure_time.SimpleReloadInstanceMixin,pl:mixin:A}
	at net.minecraft.util.thread.BlockableEventLoop.m_6367_(BlockableEventLoop.java:156) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:mixin,pl:accesstransformer:B,re:computing_frames,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:perf.fix_loop_spin_waiting.BlockableEventLoopMixin,pl:mixin:A}
	at net.minecraft.util.thread.ReentrantBlockableEventLoop.m_6367_(ReentrantBlockableEventLoop.java:23) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:mixin,re:computing_frames,re:classloading}
	at net.minecraft.util.thread.BlockableEventLoop.m_7245_(BlockableEventLoop.java:130) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:mixin,pl:accesstransformer:B,re:computing_frames,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:perf.fix_loop_spin_waiting.BlockableEventLoopMixin,pl:mixin:A}
	at net.minecraft.util.thread.BlockableEventLoop.m_18701_(BlockableEventLoop.java:139) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:mixin,pl:accesstransformer:B,re:computing_frames,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:perf.fix_loop_spin_waiting.BlockableEventLoopMixin,pl:mixin:A}
	at net.minecraft.client.Minecraft.m_18701_(Minecraft.java:4941) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.blast_search_trees.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:feature.measure_time.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.world_leaks.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.concurrency.MinecraftMixin,pl:mixin:APP:modernfix-forge.mixins.json:feature.measure_time.MinecraftMixin_Forge,pl:mixin:APP:forgematica.mixins.json:MixinMinecraftClient,pl:mixin:APP:pickupnotifier.common.mixins.json:client.MinecraftMixin,pl:mixin:APP:balm.mixins.json:MinecraftMixin,pl:mixin:APP:konkrete.mixin.json:MixinMinecraft,pl:mixin:APP:emi.mixins.json:MinecraftClientMixin,pl:mixin:APP:mafglib.mixins.json:MixinMinecraftClient,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:kubejs-common.mixins.json:MinecraftClientMixin,pl:mixin:APP:modernfix-common.mixins.json:feature.remove_telemetry.MinecraftMixin_Telemetry,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.client.gui.screens.worldselection.WorldOpenFlows.m_246486_(WorldOpenFlows.java:163) ~[client-1.20.1-20230612.114412-srg.jar%23228!/:?] {re:mixin,pl:runtimedistcleaner:A,re:classloading,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.WorldOpenFlowsMixin,pl:mixin:APP:kubejs-common.mixins.json:WorldOpenFlowsMixin,pl:mixin:APP:yeetusexperimentus.mixins.json:WorldOpenFlowsMixin,pl:mixin:A,pl:runtimedistcleaner:A}
	... 44 more
commented

Just to clarify, when you say "corrupts all save games", do you mean actual corruption where the save is irreversibly damaged or that the save game is just unable to load?

commented

Hey @TheIllusiveC4, sorry for the late response.
I did double check this and the saves do not get permanently corrupted as far as I can tell.
Once you undo the thing that causes the error to occur, the saves return to their playable state.