aboutsummaryrefslogtreecommitdiff
path: root/libraries/launcher/org/multimc/LauncherFactory.java
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/launcher/org/multimc/LauncherFactory.java')
-rw-r--r--libraries/launcher/org/multimc/LauncherFactory.java23
1 files changed, 16 insertions, 7 deletions
diff --git a/libraries/launcher/org/multimc/LauncherFactory.java b/libraries/launcher/org/multimc/LauncherFactory.java
index b5d0dd5b..2b370058 100644
--- a/libraries/launcher/org/multimc/LauncherFactory.java
+++ b/libraries/launcher/org/multimc/LauncherFactory.java
@@ -5,30 +5,39 @@ import org.multimc.utils.ParamBucket;
import java.util.HashMap;
import java.util.Map;
-import java.util.function.Function;
public final class LauncherFactory {
private static final LauncherFactory INSTANCE = new LauncherFactory();
- private final Map<String, Function<ParamBucket, Launcher>> launcherRegistry = new HashMap<>();
+ private final Map<String, LauncherProvider> launcherRegistry = new HashMap<>();
private LauncherFactory() {
- launcherRegistry.put("onesix", OneSixLauncher::new);
+ launcherRegistry.put("onesix", new LauncherProvider() {
+ @Override
+ public Launcher provide(ParamBucket parameters) {
+ return new OneSixLauncher(parameters);
+ }
+ });
}
public Launcher createLauncher(String name, ParamBucket parameters) {
- Function<ParamBucket, Launcher> launcherCreator =
- launcherRegistry.get(name);
+ LauncherProvider launcherProvider = launcherRegistry.get(name);
- if (launcherCreator == null)
+ if (launcherProvider == null)
throw new IllegalArgumentException("Invalid launcher type: " + name);
- return launcherCreator.apply(parameters);
+ return launcherProvider.provide(parameters);
}
public static LauncherFactory getInstance() {
return INSTANCE;
}
+ public interface LauncherProvider {
+
+ Launcher provide(ParamBucket parameters);
+
+ }
+
}