
Emojiful prevents client to start when Github is down
SanderKnauff opened this issue ยท 4 comments
Running Emojiful 1.16.3 2.1.1
My client fails to load at startup. Looking in to the logs and code, this seems to be caused by a request to github not being possible.
The stacktrace from latest.log can be found below:
[12Mar2021 19:37:32.619] [Worker-Main-15/ERROR] [net.minecraftforge.fml.javafmlmod.FMLModContainer/]: Exception caught during firing event: null
Index: 1
Listeners:
0: NORMAL
1: net.minecraftforge.eventbus.EventBus$$Lambda$2986/441004239@d35eab5
java.lang.NullPointerException
at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:770)
at com.google.common.collect.Lists.newArrayList(Lists.java:112)
at com.hrznstudio.emojiful.Emojiful.readCategory(Emojiful.java:50)
at com.hrznstudio.emojiful.ClientProxy.loadCustomEmojis(ClientProxy.java:190)
at com.hrznstudio.emojiful.ClientProxy.preInitEmojis(ClientProxy.java:178)
at com.hrznstudio.emojiful.ClientProxy.setup(ClientProxy.java:57)
at com.hrznstudio.emojiful.ClientProxy$$Lambda$3987/1706536711.accept(Unknown Source)
at net.minecraftforge.eventbus.EventBus.doCastFilter(EventBus.java:247)
at net.minecraftforge.eventbus.EventBus.lambda$addListener$11(EventBus.java:239)
at net.minecraftforge.eventbus.EventBus$$Lambda$2986/441004239.invoke(Unknown Source)
at net.minecraftforge.eventbus.EventBus.post(EventBus.java:297)
at net.minecraftforge.fml.javafmlmod.FMLModContainer.acceptEvent(FMLModContainer.java:120)
at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$4(ModContainer.java:121)
at net.minecraftforge.fml.ModContainer$$Lambda$3769/1562960136.run(Unknown Source)
at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1618)
at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1610)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1689)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
[12Mar2021 19:37:32.620] [Worker-Main-15/ERROR] [net.minecraftforge.fml.javafmlmod.FMLModContainer/LOADING]: Caught exception during event FMLClientSetupEvent dispatch for modid emojiful
java.lang.NullPointerException: null
at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:770) ~[guava-21.0.jar:?]
at com.google.common.collect.Lists.newArrayList(Lists.java:112) ~[guava-21.0.jar:?]
at com.hrznstudio.emojiful.Emojiful.readCategory(Emojiful.java:50) ~[?:1.16.3-2.1.1]
at com.hrznstudio.emojiful.ClientProxy.loadCustomEmojis(ClientProxy.java:190) ~[?:1.16.3-2.1.1]
at com.hrznstudio.emojiful.ClientProxy.preInitEmojis(ClientProxy.java:178) ~[?:1.16.3-2.1.1]
at com.hrznstudio.emojiful.ClientProxy.setup(ClientProxy.java:57) ~[?:1.16.3-2.1.1]
at com.hrznstudio.emojiful.ClientProxy$$Lambda$3987/1706536711.accept(Unknown Source) ~[?:?]
at net.minecraftforge.eventbus.EventBus.doCastFilter(EventBus.java:247) ~[eventbus-3.0.5-service.jar:?]
at net.minecraftforge.eventbus.EventBus.lambda$addListener$11(EventBus.java:239) ~[eventbus-3.0.5-service.jar:?]
at net.minecraftforge.eventbus.EventBus$$Lambda$2986/441004239.invoke(Unknown Source) ~[?:?]
at net.minecraftforge.eventbus.EventBus.post(EventBus.java:297) ~[eventbus-3.0.5-service.jar:?]
at net.minecraftforge.fml.javafmlmod.FMLModContainer.acceptEvent(FMLModContainer.java:120) [?:35.1]
at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$4(ModContainer.java:121) [?:?]
at net.minecraftforge.fml.ModContainer$$Lambda$3769/1562960136.run(Unknown Source) [?:?]
at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1618) [?:1.8.0_51]
at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1610) [?:1.8.0_51]
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) [?:1.8.0_51]
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) [?:1.8.0_51]
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1689) [?:1.8.0_51]
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) [?:1.8.0_51]
Perhaps a solution would be to cache them locally, and update them when they change?
While it is rare for the main and fallback to both fail, it would be better if the mod would not crash anyway when these files are not available. I feel like a mod should not depend on external resources for it to load.
What if someone has no internet connection, but wants to play in a singleplayer world?
At the moment they would have to remove the mod from their pack/instance just to boot it up. Having error handling or placeholders for when asset downloading fails would be much more user friendly.