isXander / YetAnotherConfigLib

YetAnotherConfigLib (yacl) is just that. A builder-based configuration library for Minecraft.
GNU Lesser General Public License v3.0
96 stars 37 forks source link

YACL crashes fabric's error gui #83

Open Qendolin opened 1 year ago

Qendolin commented 1 year ago

Related to https://github.com/isXander/YetAnotherConfigLib/issues/74

When mod resolution fails and fabric tries to show the error gui, yacl / yacl's dependency causes an exception:

[14:39:06] [main/INFO] (FabricLoader/GameProvider) Loading Minecraft 1.20.1 with Fabric Loader 0.14.21
[14:39:06] [ForkJoinPool-1-worker-1/WARN] (FabricLoader/Metadata) Mod betterclouds uses the version ${version} which isn't compatible with Loader's extended semantic version format (Could not parse version number component '${version}'!), SemVer is recommended for reliably evaluating dependencies and prioritizing newer version
[14:39:06] [main/WARN] (FabricLoader/Resolution) Mod resolution failed
[14:39:06] [main/INFO] (FabricLoader/Resolution) Immediate reason: [HARD_DEP betterclouds ${version} {depends fabric @ [*]}, HARD_DEP_INCOMPATIBLE_PRESELECTED fabric-api 0.83.0+1.20 {depends minecraft @ [>=1.20- <1.20.1-]}, ROOT_FORCELOAD_SINGLE betterclouds ${version}]
[14:39:06] [main/INFO] (FabricLoader/Resolution) Reason: [HARD_DEP fabric-api 0.83.0+1.20 {depends minecraft @ [>=1.20- <1.20.1-]}]
[14:39:06] [main/INFO] (FabricLoader/Resolution) Fix: add [], remove [], replace [[minecraft 1.20.1] -> add:minecraft 1.20-0 ([(1.20-,1.20.1-)])]
[14:39:06] [main/ERROR] (FabricLoader) Incompatible mod set!
 net.fabricmc.loader.impl.FormattedException: Mod resolution encountered an incompatible mod set!
A potential solution has been determined:
     - Replace 'Minecraft' (minecraft) 1.20.1 with any version between 1.20- (exclusive) and 1.20.1- (exclusive).
Unmet dependency listing:
     - Mod 'Fabric API' (fabric-api) 0.83.0+1.20 requires any version between 1.20- (inclusive) and 1.20.1- (exclusive) of 'Minecraft' (minecraft), but only the wrong version is present: 1.20.1!
    at net.fabricmc.loader.impl.FormattedException.ofLocalized(FormattedException.java:51) ~[fabric-loader-0.14.21.jar:?]
    at net.fabricmc.loader.impl.FabricLoaderImpl.load(FabricLoaderImpl.java:192) ~[fabric-loader-0.14.21.jar:?]
    at net.fabricmc.loader.impl.launch.knot.Knot.init(Knot.java:148) ~[fabric-loader-0.14.21.jar:?]
    at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:68) ~[fabric-loader-0.14.21.jar:?]
    at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) ~[fabric-loader-0.14.21.jar:?]
    at net.fabricmc.devlaunchinjector.Main.main(Main.java:86) ~[?:?]
[14:39:07] [main/WARN] (FabricLoader) Failed to open the error gui!
 java.lang.reflect.InvocationTargetException: null
    at java.awt.EventQueue.invokeAndWait(EventQueue.java:1369) ~[?:?]
    at java.awt.EventQueue.invokeAndWait(EventQueue.java:1344) ~[?:?]
    at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1480) ~[?:?]
    at net.fabricmc.loader.impl.gui.FabricMainWindow.open0(FabricMainWindow.java:94) ~[fabric-loader-0.14.21.jar:?]
    at net.fabricmc.loader.impl.gui.FabricMainWindow.open(FabricMainWindow.java:88) ~[fabric-loader-0.14.21.jar:?]
    at net.fabricmc.loader.impl.gui.FabricGuiEntry.open(FabricGuiEntry.java:51) ~[fabric-loader-0.14.21.jar:?]
    at net.fabricmc.loader.impl.gui.FabricGuiEntry.displayError(FabricGuiEntry.java:141) ~[fabric-loader-0.14.21.jar:?]
    at net.fabricmc.loader.impl.gui.FabricGuiEntry.displayError(FabricGuiEntry.java:108) ~[fabric-loader-0.14.21.jar:?]
    at net.fabricmc.loader.impl.launch.FabricLauncherBase.handleFormattedException(FabricLauncherBase.java:84) ~[fabric-loader-0.14.21.jar:?]
    at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:76) ~[fabric-loader-0.14.21.jar:?]
    at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) ~[fabric-loader-0.14.21.jar:?]
    at net.fabricmc.devlaunchinjector.Main.main(Main.java:86) ~[?:?]
Caused by: java.util.ServiceConfigurationError: javax.imageio.spi.ImageInputStreamSpi: Provider com.twelvemonkeys.imageio.stream.BufferedFileImageInputStreamSpi not found
    at java.util.ServiceLoader.fail(ServiceLoader.java:593) ~[?:?]
    at java.util.ServiceLoader$LazyClassPathLookupIterator.nextProviderClass(ServiceLoader.java:1219) ~[?:?]
    at java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1228) ~[?:?]
    at java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1273) ~[?:?]
    at java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1309) ~[?:?]
    at java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1393) ~[?:?]
    at javax.imageio.spi.IIORegistry.registerApplicationClasspathSpis(IIORegistry.java:185) ~[?:?]
    at javax.imageio.spi.IIORegistry.<init>(IIORegistry.java:113) ~[?:?]
    at javax.imageio.spi.IIORegistry.getDefaultInstance(IIORegistry.java:134) ~[?:?]
    at javax.imageio.ImageIO.<clinit>(ImageIO.java:66) ~[?:?]
    at net.fabricmc.loader.impl.gui.FabricMainWindow.loadImage(FabricMainWindow.java:225) ~[fabric-loader-0.14.21.jar:?]
    at net.fabricmc.loader.impl.gui.FabricMainWindow.createUi(FabricMainWindow.java:109) ~[fabric-loader-0.14.21.jar:?]
    at net.fabricmc.loader.impl.gui.FabricMainWindow.lambda$open0$0(FabricMainWindow.java:95) ~[fabric-loader-0.14.21.jar:?]
    at java.awt.event.InvocationEvent.dispatch$$$capture(InvocationEvent.java:308) ~[?:?]
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java) ~[?:?]
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:771) ~[?:?]
    at java.awt.EventQueue$4.run(EventQueue.java:722) ~[?:?]
    at java.awt.EventQueue$4.run(EventQueue.java:716) ~[?:?]
    at java.security.AccessController.doPrivileged(AccessController.java:399) ~[?:?]
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) ~[?:?]
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:741) ~[?:?]
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) ~[?:?]
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) ~[?:?]
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) ~[?:?]
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) ~[?:?]
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) ~[?:?]
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) ~[?:?]

This is an example the error gui that should normally be shown: image

isXander commented 1 year ago

Spoken to the Fabric devs. This is a fabric loader bug. However, this issue is only prevalent in development environments and causes by a classloader conflict.