From df9f52d1543d2445abc90fe25fc8fe78af8b02a2 Mon Sep 17 00:00:00 2001 From: FalsePattern <30945458+FalsePattern@users.noreply.github.com> Date: Sat, 11 Feb 2023 11:22:59 +0100 Subject: [PATCH] More robust jar detection for mixins --- .../falsepattern/lib/mixin/IMixinPlugin.java | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/falsepattern/lib/mixin/IMixinPlugin.java b/src/main/java/com/falsepattern/lib/mixin/IMixinPlugin.java index 41eca8d..0c42233 100644 --- a/src/main/java/com/falsepattern/lib/mixin/IMixinPlugin.java +++ b/src/main/java/com/falsepattern/lib/mixin/IMixinPlugin.java @@ -33,8 +33,9 @@ import net.minecraft.launchwrapper.Launch; import java.io.File; import java.io.FileNotFoundException; -import java.io.IOException; +import java.net.URL; import java.nio.file.Path; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -55,12 +56,29 @@ public interface IMixinPlugin extends IMixinConfigPlugin { @StableAPI.Expose static File findJarOf(final ITargetedMod mod) { + File result = null; try (val stream = walk(MODS_DIRECTORY_PATH)) { - return stream.filter(mod::isMatchingJar).map(Path::toFile).findFirst().orElse(null); - } catch (IOException e) { + result = stream.filter(mod::isMatchingJar) + .map(Path::toFile) + .findFirst() + .orElse(null); + } catch (Exception e) { e.printStackTrace(); - return null; } + if (result == null) { + try { + result = Arrays.stream(Launch.classLoader.getURLs()) + .map(URL::getPath) + .map(Paths::get) + .filter(mod::isMatchingJar) + .map(Path::toFile) + .findFirst() + .orElse(null); + } catch (Exception e) { + e.printStackTrace(); + } + } + return result; } @StableAPI.Expose