mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-09-09 11:55:52 -04:00
Add: Load plugins by command line
This commit is contained in:
parent
80599013f2
commit
eb311abe83
@ -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=<your plugin class>: 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");
|
||||
|
@ -61,7 +61,7 @@ public class AppDataUpgrader extends IUpgrader {
|
||||
String mainClass = jarFile.getManifest().getMainAttributes().getValue("Main-Class");
|
||||
if (mainClass != null) {
|
||||
ArrayList<String> al = new ArrayList<>(Arrays.asList(args));
|
||||
al.add("nofound");
|
||||
al.add("--noupdate");
|
||||
AccessController.doPrivileged((PrivilegedExceptionAction<Void>) () -> {
|
||||
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
|
||||
|
@ -34,11 +34,8 @@ public abstract class IUpgrader implements Consumer<SimpleEvent<VersionNumber>>
|
||||
*
|
||||
* @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.
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user