From f8c7b8497e9687e15123caca7d4fde54f5bf067a Mon Sep 17 00:00:00 2001 From: Joe Date: Thu, 11 Sep 2025 17:35:30 +0100 Subject: Allow you to specify the libraries in the program args rather than always using the runtime classpath --- enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java | 8 ++++---- enigma-swing/src/main/java/cuchaz/enigma/gui/Main.java | 4 +++- .../src/main/java/cuchaz/enigma/gui/elements/MenuBar.java | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) (limited to 'enigma-swing/src/main/java/cuchaz') diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java index 5ea9ab1..1853a9f 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java @@ -55,7 +55,6 @@ import cuchaz.enigma.api.view.GuiView; import cuchaz.enigma.api.view.entry.EntryReferenceView; import cuchaz.enigma.classhandle.ClassHandle; import cuchaz.enigma.classhandle.ClassHandleProvider; -import cuchaz.enigma.classprovider.ClasspathClassProvider; import cuchaz.enigma.gui.config.NetConfig; import cuchaz.enigma.gui.config.UiConfig; import cuchaz.enigma.gui.dialog.ProgressDialog; @@ -136,11 +135,11 @@ public class GuiController implements ClientPacketHandler, GuiView, DataInvalida return project != null && project.getMapper().isDirty(); } - public CompletableFuture openJar(final List jarPaths) { + public CompletableFuture openJar(final List jarPaths, final List libraries) { this.gui.onStartOpenJar(); return ProgressDialog.runOffThread(gui.getFrame(), progress -> { - project = enigma.openJars(jarPaths, new ClasspathClassProvider(), progress, false); + project = enigma.openJars(jarPaths, libraries, progress, false); project.addDataInvalidationListener(this); indexTreeBuilder = new IndexTreeBuilder(project.getJarIndex()); chp = new ClassHandleProvider(project, UiConfig.getDecompiler().service); @@ -275,11 +274,12 @@ public class GuiController implements ClientPacketHandler, GuiView, DataInvalida public void reloadAll() { List jarPaths = this.project.getJarPaths(); + List libraryPaths = this.project.getLibraryPaths(); MappingFormat loadedMappingFormat = this.loadedMappingFormat; Path loadedMappingPath = this.loadedMappingPath; this.closeJar(); - CompletableFuture f = this.openJar(jarPaths); + CompletableFuture f = this.openJar(jarPaths, libraryPaths); if (loadedMappingFormat != null && loadedMappingPath != null) { f.whenComplete((v, t) -> this.openMappings(loadedMappingFormat, loadedMappingPath)); diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/Main.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/Main.java index 66402ad..b9ad19e 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/Main.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/Main.java @@ -40,6 +40,7 @@ public class Main { OptionParser parser = new OptionParser(); OptionSpec jar = parser.accepts("jar", "Jar file to open at startup; if there are multiple jars, the order must be the same between all collab session members").withRequiredArg().withValuesConvertedBy(PathConverter.INSTANCE); + OptionSpec library = parser.accepts("library", "The libraries for the input jar files").withRequiredArg().withValuesConvertedBy(PathConverter.INSTANCE); OptionSpec mappings = parser.accepts("mappings", "Mappings file to open at startup").withRequiredArg().withValuesConvertedBy(PathConverter.INSTANCE); @@ -140,7 +141,8 @@ public class Main { if (options.has(jar)) { List jarPaths = options.valuesOf(jar); - controller.openJar(jarPaths).whenComplete((v, t) -> { + List libraryPaths = options.valuesOf(library); + controller.openJar(jarPaths, libraryPaths).whenComplete((v, t) -> { if (options.has(mappings)) { Path mappingsPath = options.valueOf(mappings); diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java index 1789def..02fa9e3 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java @@ -244,7 +244,7 @@ public class MenuBar { // checks if the file name corresponds to an existing file if (paths.stream().allMatch(Files::exists)) { - this.gui.getController().openJar(paths); + this.gui.getController().openJar(paths, gui.getController().project.getLibraryPaths()); } UiConfig.setLastSelectedDir(d.getCurrentDirectory().getAbsolutePath()); -- cgit v1.2.3