diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Main.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Main.java index 4bc5c2c2a..941e17b9b 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Main.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Main.java @@ -107,8 +107,22 @@ public final class Main implements Runnable { public static void main(String[] args) throws IOException { { PluginManager.getPlugin(DefaultPlugin.class); - if (IUpgrader.NOW_UPGRADER.parseArguments(getVersionNumber(), args)) - return; + for (String s : args) + if (s.startsWith("--plugin=")) { + String c = s.substring("--plugin=".length()); + try { + PluginManager.getPlugin(Class.forName(c)); + } catch (ClassNotFoundException ex) { + System.out.println("Class: " + c + " not found, please add your plugin jar to class path."); + } + } else if (s.startsWith("--help")) { + System.out.println("HMCL command line help"); + System.out.println("--noupdate: this arg will prevent HMCL from initializing the newest app version in %appdata%/.hmcl"); + System.out.println("--plugin=: this arg will allow a new plugin to be loaded, please keep your jar in system class path and this class extends IPlugin."); + return; + } + + IUpgrader.NOW_UPGRADER.parseArguments(getVersionNumber(), args); System.setProperty("awt.useSystemAAFontSettings", "on"); System.setProperty("swing.aatext", "true"); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/util/upgrade/AppDataUpgrader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/util/upgrade/AppDataUpgrader.java index 30a15fa27..585b86927 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/util/upgrade/AppDataUpgrader.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/util/upgrade/AppDataUpgrader.java @@ -61,7 +61,7 @@ public class AppDataUpgrader extends IUpgrader { String mainClass = jarFile.getManifest().getMainAttributes().getValue("Main-Class"); if (mainClass != null) { ArrayList al = new ArrayList<>(Arrays.asList(args)); - al.add("nofound"); + al.add("--noupdate"); AccessController.doPrivileged((PrivilegedExceptionAction) () -> { new URLClassLoader(new URL[] { jar.toURI().toURL() }, URLClassLoader.getSystemClassLoader().getParent()).loadClass(mainClass) @@ -75,8 +75,8 @@ public class AppDataUpgrader extends IUpgrader { } @Override - public boolean parseArguments(VersionNumber nowVersion, String[] args) { - if (!ArrayUtils.contains(args, "nofound")) + public void parseArguments(VersionNumber nowVersion, String[] args) { + if (!ArrayUtils.contains(args, "--noupdate")) try { File f = AppDataUpgraderTask.HMCL_VER_FILE; if (f.exists()) { @@ -86,15 +86,14 @@ public class AppDataUpgrader extends IUpgrader { String j = m.get("loc"); if (j != null) { File jar = new File(j); - if (jar.exists()) - return launchNewerVersion(args, jar); + if (jar.exists() && launchNewerVersion(args, jar)) + System.exit(0); } } } } catch (Throwable t) { HMCLog.err("Failed to execute newer version application", t); } - return false; } @Override diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/util/upgrade/IUpgrader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/util/upgrade/IUpgrader.java index d32656024..56ba37a65 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/util/upgrade/IUpgrader.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/util/upgrade/IUpgrader.java @@ -34,11 +34,8 @@ public abstract class IUpgrader implements Consumer> * * @param nowVersion now launcher version * @param args Application CommandLine Arguments - * - * @return true if it is needed to break the main thread to shutdown this - * application. */ - public abstract boolean parseArguments(VersionNumber nowVersion, String[] args); + public abstract void parseArguments(VersionNumber nowVersion, String[] args); /** * Just download the new app. diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/util/upgrade/NewFileUpgrader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/util/upgrade/NewFileUpgrader.java index ee0049f11..59bff6ec8 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/util/upgrade/NewFileUpgrader.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/util/upgrade/NewFileUpgrader.java @@ -35,14 +35,13 @@ import org.jackhuang.hellominecraft.util.sys.IOUtils; public class NewFileUpgrader extends IUpgrader { @Override - public boolean parseArguments(VersionNumber nowVersion, String[] args) { + public void parseArguments(VersionNumber nowVersion, String[] args) { int i = ArrayUtils.indexOf(args, "--removeOldLauncher"); if (i != -1 && i < args.length - 1) { File f = new File(args[i + 1]); if (f.exists()) f.deleteOnExit(); } - return false; } @Override