Error with IC2 Classic in development environment
bdew opened this issue ยท 1 comments
Issue description
Looks like IC2C is initializing some cache when client has finished loading and that calls fillItemCategory on Mekanism item that tries to read the max charge from server config which isn't loaded at that point.
As the error says it currently only errors in dev but will be happening in prod in the future.
Also it makes it a pain for me to work on Advanced Generators which has integration with both mods.
Exception message: java.lang.IllegalStateException: Cannot get config value before config is loaded.
This error is currently only thrown in the development environment, to avoid breaking published mods.
In a future version, this will also throw in the production environment.
Stacktrace:
at com.google.common.base.Preconditions.checkState(Preconditions.java:502) ~[guava-31.0.1-jre.jar%2398!/:?] {}
at net.minecraftforge.common.ForgeConfigSpec$ConfigValue.get(ForgeConfigSpec.java:844) ~[forge-1.19.2-43.1.52_mapped_official_1.19.2-recomp.jar%23182%23194!/:?] {re:classloading}
at mekanism.common.config.value.CachedResolvableConfigValue.get(CachedResolvableConfigValue.java:39) ~[Mekanism-1.19.2-10.3.5.474_mapped_official_1.19.2.jar%23196!/:10.3.5] {re:classloading}
at mekanism.common.config.value.CachedFloatingLongValue.get(CachedFloatingLongValue.java:17) ~[Mekanism-1.19.2-10.3.5.474_mapped_official_1.19.2.jar%23196!/:10.3.5] {re:classloading}
at mekanism.common.item.ItemEnergized.fillItemCategory(ItemEnergized.java:66) ~[Mekanism-1.19.2-10.3.5.474_mapped_official_1.19.2.jar%23196!/:10.3.5] {re:classloading}
at ic2.core.platform.recipes.helpers.ItemStackCache.init(ItemStackCache.java:42) ~[ic2_classic-242942-4060461_mapped_official_1.19.2.jar%23198!/:1.19.2-2.0.1] {re:classloading}
at ic2.core.IC2.complete(IC2.java:358) ~[ic2_classic-242942-4060461_mapped_official_1.19.2.jar%23198!/:1.19.2-2.0.1] {re:mixin,re:classloading}
at net.minecraftforge.eventbus.EventBus.doCastFilter(EventBus.java:260) ~[eventbus-6.0.3.jar%23107!/:?] {}
at net.minecraftforge.eventbus.EventBus.lambda$addListener$11(EventBus.java:252) ~[eventbus-6.0.3.jar%23107!/:?] {}
at net.minecraftforge.eventbus.EventBus.post(EventBus.java:315) ~[eventbus-6.0.3.jar%23107!/:?] {}
at net.minecraftforge.eventbus.EventBus.post(EventBus.java:296) ~[eventbus-6.0.3.jar%23107!/:?] {}
at net.minecraftforge.fml.javafmlmod.FMLModContainer.acceptEvent(FMLModContainer.java:107) ~[javafmllanguage-1.19.2-43.1.52.jar%23184!/:?] {}
at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$10(ModContainer.java:122) ~[fmlcore-1.19.2-43.1.52.jar%23187!/:?] {}
at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] {}
at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?] {}
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {}
at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {}
at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {}
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {}
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {}
Steps to reproduce
No response
Minecraft version
1.19.2 (Latest)
Forge version
43.1.52
Mekanism version
10.3.5 (Latest)
Other relevant versions
No response
If a (crash)log is relevant for this issue, link it here: (It's almost always relevant)
https://gist.github.com/bdew/8c7c5a6addce8ea20eeaacae2466842c
Honestly sort of sounds like IC2C is caching things at a point earlier than it is reasonable to do so. Given for our case it has to do with energy storage values, but I am sure plenty of other mods are also using configs. Though I will look at changing it for the next build when I get around to working on it, as one thing that does somewhat confuse me is I vaguely recall vanilla calling fillItemCategory earlier for clients (which I would presume this would crash on but doesn't), though maybe vanilla stopped doing that sometime recently