From d36485185be6ef6e580a0664a5a4a5ac8748b707 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Mon, 30 Jun 2025 20:36:21 +0100 Subject: [PATCH] Improve libraries folder detection --- .../installer/detector/IFileDetector.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/github/zekerzhayard/forgewrapper/installer/detector/IFileDetector.java b/src/main/java/io/github/zekerzhayard/forgewrapper/installer/detector/IFileDetector.java index 4f1b7c3..1d3fb1f 100644 --- a/src/main/java/io/github/zekerzhayard/forgewrapper/installer/detector/IFileDetector.java +++ b/src/main/java/io/github/zekerzhayard/forgewrapper/installer/detector/IFileDetector.java @@ -29,9 +29,17 @@ default Path getLibraryDir() { return Paths.get(libraryDir).toAbsolutePath(); } try { - Path launcher = Paths.get(Launcher.class.getProtectionDomain().getCodeSource().getLocation().toURI()).toAbsolutePath(); - // / /modlauncher/mods /cpw /libraries - return launcher.getParent().getParent().getParent().getParent().getParent().toAbsolutePath(); + Path launcher = Paths.get(Launcher.class.getProtectionDomain().getCodeSource().getLocation().toURI()); + + while (!launcher.getFileName().toString().equals("libraries")) { + launcher = launcher.getParent(); + + if (launcher == null || launcher.getFileName() == null) { + throw new UnsupportedOperationException("Could not detect the libraries folder - it can be manually specified with `-Dforgewrapper.librariesDir=` (Java runtime argument)"); + } + } + + return launcher.toAbsolutePath(); } catch (URISyntaxException e) { throw new RuntimeException(e); }