@ -16,7 +16,8 @@
|
||||
|
||||
package org.prismlauncher.launcher;
|
||||
|
||||
|
||||
public interface Launcher {
|
||||
|
||||
void launch() throws Throwable;
|
||||
|
||||
}
|
||||
|
@ -35,7 +35,6 @@
|
||||
|
||||
package org.prismlauncher.launcher;
|
||||
|
||||
|
||||
import org.prismlauncher.launcher.impl.LegacyLauncher;
|
||||
import org.prismlauncher.launcher.impl.StandardLauncher;
|
||||
import org.prismlauncher.utils.Parameters;
|
||||
@ -43,10 +42,10 @@ import org.prismlauncher.utils.Parameters;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
public final class LauncherFactory {
|
||||
|
||||
private static final Map<String, LauncherProvider> launcherRegistry = new HashMap<>();
|
||||
|
||||
|
||||
static {
|
||||
launcherRegistry.put("standard", new LauncherProvider() {
|
||||
@Override
|
||||
@ -63,15 +62,15 @@ public final class LauncherFactory {
|
||||
}
|
||||
private LauncherFactory() {
|
||||
}
|
||||
|
||||
|
||||
public static Launcher createLauncher(Parameters parameters) {
|
||||
String name = parameters.getString("launcher");
|
||||
|
||||
|
||||
LauncherProvider launcherProvider = launcherRegistry.get(name);
|
||||
|
||||
|
||||
if (launcherProvider == null)
|
||||
throw new IllegalArgumentException("Invalid launcher type: " + name);
|
||||
|
||||
|
||||
return launcherProvider.provide(parameters);
|
||||
}
|
||||
}
|
||||
|
@ -35,10 +35,10 @@
|
||||
|
||||
package org.prismlauncher.launcher;
|
||||
|
||||
|
||||
import org.prismlauncher.utils.Parameters;
|
||||
|
||||
|
||||
public interface LauncherProvider {
|
||||
|
||||
Launcher provide(Parameters parameters);
|
||||
|
||||
}
|
||||
|
@ -15,7 +15,6 @@
|
||||
|
||||
package org.prismlauncher.launcher.impl;
|
||||
|
||||
|
||||
import org.prismlauncher.exception.ParseException;
|
||||
import org.prismlauncher.launcher.Launcher;
|
||||
import org.prismlauncher.utils.Parameters;
|
||||
@ -26,9 +25,8 @@ import java.lang.invoke.MethodType;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public abstract class AbstractLauncher implements Launcher {
|
||||
|
||||
|
||||
private static final int DEFAULT_WINDOW_WIDTH = 854;
|
||||
private static final int DEFAULT_WINDOW_HEIGHT = 480;
|
||||
|
||||
@ -44,21 +42,21 @@ public abstract class AbstractLauncher implements Launcher {
|
||||
protected final String serverAddress, serverPort;
|
||||
|
||||
protected final ClassLoader classLoader;
|
||||
|
||||
|
||||
protected AbstractLauncher(Parameters params) {
|
||||
classLoader = ClassLoader.getSystemClassLoader();
|
||||
|
||||
|
||||
mcParams = params.getList("param", new ArrayList<String>());
|
||||
mainClass = params.getString("mainClass", "net.minecraft.client.Minecraft");
|
||||
|
||||
|
||||
serverAddress = params.getString("serverAddress", null);
|
||||
serverPort = params.getString("serverPort", null);
|
||||
|
||||
|
||||
String windowParams = params.getString("windowParams", null);
|
||||
|
||||
|
||||
if ("max".equals(windowParams) || windowParams == null) {
|
||||
maximize = windowParams != null;
|
||||
|
||||
|
||||
width = DEFAULT_WINDOW_WIDTH;
|
||||
height = DEFAULT_WINDOW_HEIGHT;
|
||||
} else {
|
||||
@ -82,7 +80,7 @@ public abstract class AbstractLauncher implements Launcher {
|
||||
protected Class<?> loadMain() throws ClassNotFoundException {
|
||||
return classLoader.loadClass(mainClass);
|
||||
}
|
||||
|
||||
|
||||
protected void loadAndInvokeMain() throws Throwable {
|
||||
invokeMain(loadMain());
|
||||
}
|
||||
|
@ -15,7 +15,6 @@
|
||||
|
||||
package org.prismlauncher.launcher.impl;
|
||||
|
||||
|
||||
import org.prismlauncher.applet.LegacyFrame;
|
||||
import org.prismlauncher.utils.LegacyUtils;
|
||||
import org.prismlauncher.utils.Parameters;
|
||||
@ -45,15 +44,15 @@ public final class LegacyLauncher extends AbstractLauncher {
|
||||
|
||||
public LegacyLauncher(Parameters params) {
|
||||
super(params);
|
||||
|
||||
|
||||
user = params.getString("userName");
|
||||
session = params.getString("sessionId");
|
||||
title = params.getString("windowTitle", "Minecraft");
|
||||
appletClass = params.getString("appletClass", "net.minecraft.client.MinecraftApplet");
|
||||
|
||||
|
||||
List<String> traits = params.getList("traits", Collections.<String>emptyList());
|
||||
noApplet = traits.contains("noapplet");
|
||||
|
||||
|
||||
cwd = System.getProperty("user.dir");
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user