quilt-loader icon indicating copy to clipboard operation
quilt-loader copied to clipboard

Mod paths with `[` and `]` cause loading to fail

Open AlexIIL opened this issue 2 years ago • 10 comments

As reported in discord.

This results in an error like this:

java.lang.RuntimeException: Could not execute entrypoint stage 'client' due to errors, provided by 'inventoryhud'!
	at Not Enough Crashes deobfuscated stack trace.(1.18.1+build.22)
	at org.quiltmc.loader.impl.entrypoint.EntrypointUtils.lambda$invoke0$2(EntrypointUtils.java:63)
	at org.quiltmc.loader.impl.util.ExceptionUtil.gatherExceptions(ExceptionUtil.java:33)
	at org.quiltmc.loader.impl.entrypoint.EntrypointUtils.invoke0(EntrypointUtils.java:61)
	at org.quiltmc.loader.impl.entrypoint.EntrypointUtils.invokeContainer(EntrypointUtils.java:46)
	at org.quiltmc.loader.impl.entrypoint.EntrypointUtils.invoke(EntrypointUtils.java:33)
	at org.quiltmc.loader.impl.game.minecraft.Hooks.startClient(Hooks.java:53)
	at net.minecraft.client.MinecraftClient.<init>(MinecraftClient:443)
	at net.minecraft.client.main.Main.main(Main:198)
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:568)
	at org.quiltmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:423)
	at org.quiltmc.loader.impl.launch.knot.Knot.launch(Knot.java:76)
	at org.quiltmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:24)
Caused by: org.quiltmc.loader.impl.entrypoint.QuiltEntrypointException: Exception while loading entries for entrypoint 'client' provided by 'inventoryhud'
	at org.quiltmc.loader.impl.entrypoint.EntrypointStorage.lambda$getEntrypointContainers$1(EntrypointStorage.java:222)
	at org.quiltmc.loader.impl.entrypoint.EntrypointContainerImpl.getEntrypoint(EntrypointContainerImpl.java:51)
	at org.quiltmc.loader.impl.entrypoint.EntrypointUtils.lambda$invoke$0(EntrypointUtils.java:33)
	at org.quiltmc.loader.impl.entrypoint.EntrypointUtils.invoke0(EntrypointUtils.java:59)
	... 12 more
Caused by: org.quiltmc.loader.impl.util.ExceptionUtil$WrappedException: java.net.URISyntaxException: Illegal character in path at index 75: file:/C:/Users/mDragon/AppData/Roaming/.minecraft/mods/InventoryHUD-fabric-[1.19]+-3.4.2.jar
	at org.quiltmc.loader.impl.util.ExceptionUtil.wrap(ExceptionUtil.java:51)
	at org.quiltmc.loader.impl.util.UrlUtil.asPath(UrlUtil.java:67)
	at org.quiltmc.loader.impl.launch.knot.KnotClassDelegate.lambda$getMetadata$0(KnotClassDelegate.java:196)
	at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708)
	at org.quiltmc.loader.impl.launch.knot.KnotClassDelegate.getMetadata(KnotClassDelegate.java:190)
	at org.quiltmc.loader.impl.launch.knot.KnotClassDelegate.getMetadata(KnotClassDelegate.java:186)
	at org.quiltmc.loader.impl.launch.knot.KnotClassDelegate.tryLoadClass(KnotClassDelegate.java:153)
	at org.quiltmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:156)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:520)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:467)
	at org.quiltmc.loader.impl.util.DefaultLanguageAdapter.create(DefaultLanguageAdapter.java:49)
	at org.quiltmc.loader.impl.entrypoint.EntrypointStorage$NewEntry.getOrCreate(EntrypointStorage.java:112)
	at org.quiltmc.loader.impl.entrypoint.EntrypointStorage.lambda$getEntrypointContainers$1(EntrypointStorage.java:220)
	... 15 more
Caused by: java.net.URISyntaxException: Illegal character in path at index 75: file:/C:/Users/mDragon/AppData/Roaming/.minecraft/mods/InventoryHUD-fabric-[1.19]+-3.4.2.jar
	at java.net.URI$Parser.fail(URI.java:2974)
	at java.net.URI$Parser.checkChars(URI.java:3145)
	at java.net.URI$Parser.parseHierarchical(URI.java:3227)
	at java.net.URI$Parser.parse(URI.java:3175)
	at java.net.URI.<init>(URI.java:623)
	at java.net.URL.toURI(URL.java:1056)
	at org.quiltmc.loader.impl.util.UrlUtil.asPath(UrlUtil.java:65)
	... 27 more

A likely culprit is UrlUtil.asPath, which might need to perform url unencoding

AlexIIL avatar Jun 19 '22 15:06 AlexIIL

example mod that can't be load is : inventory hud+

EGOIST1372 avatar Jun 22 '22 12:06 EGOIST1372

I had this problem too

CuteLittleSky avatar Jun 27 '22 05:06 CuteLittleSky

In fact, if mod's filename contains one of [ or ] instead of both of them, the game will crash

Redlnn avatar Jun 30 '22 15:06 Redlnn

As you said renaming folder still crashing https://paste.atlauncher.com/view/f1e6c641-3753-4d14-9d9d-b3ed4f39a951

ardissaps avatar Jul 05 '22 04:07 ardissaps

any news on this issue?

EGOIST1372 avatar Jul 08 '22 18:07 EGOIST1372

No. If there was, we'd post it here.

AlexIIL avatar Jul 08 '22 20:07 AlexIIL

Same, Please fix it quickly :(

bling-yshs avatar Jul 23 '22 07:07 bling-yshs

@bling-yshs you can just rename the Jar of the Mod (removing [ and ]) and it will load fine

byquanton avatar Jul 28 '22 10:07 byquanton

@bling-yshs you can just rename the Jar of the Mod (removing [ and ]) and it will load fine

Yes, I actually already knew that, but I wish Quilt would have fixed the bug sooner.

bling-yshs avatar Jul 28 '22 10:07 bling-yshs

I tested, and this does not happen on Quilt Loader versions bellow 1.17 for some reason. Maybe something changed there thats causing the crash now, but its definitely the Quilt Loaders fault. Tested on a new instance of a multi instance launcher, with just Quilt loader, Quilted API beta 22, and Inventory HUD+ 3.4.2

Hlebuw3k avatar Aug 13 '22 09:08 Hlebuw3k

Not fixed in 0.17.5 since the original fix broke a few things. Instead this will be fixed in 0.18.x with loader plugins.

AlexIIL avatar Oct 24 '22 22:10 AlexIIL