aboutsummaryrefslogtreecommitdiff
path: root/libraries/launcher/org/polymc/LauncherFactory.java
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/launcher/org/polymc/LauncherFactory.java')
-rw-r--r--libraries/launcher/org/polymc/LauncherFactory.java63
1 files changed, 63 insertions, 0 deletions
diff --git a/libraries/launcher/org/polymc/LauncherFactory.java b/libraries/launcher/org/polymc/LauncherFactory.java
new file mode 100644
index 00000000..c8c63f80
--- /dev/null
+++ b/libraries/launcher/org/polymc/LauncherFactory.java
@@ -0,0 +1,63 @@
+// SPDX-License-Identifier: GPL-3.0-only
+/*
+ * PolyMC - Minecraft Launcher
+ * Copyright (C) 2022 icelimetea, <fr3shtea@outlook.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package org.polymc;
+
+import org.polymc.impl.OneSixLauncher;
+import org.polymc.utils.Parameters;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public final class LauncherFactory {
+
+ private static final LauncherFactory INSTANCE = new LauncherFactory();
+
+ private final Map<String, LauncherProvider> launcherRegistry = new HashMap<>();
+
+ private LauncherFactory() {
+ launcherRegistry.put("onesix", new LauncherProvider() {
+ @Override
+ public Launcher provide(Parameters parameters) {
+ return new OneSixLauncher(parameters);
+ }
+ });
+ }
+
+ public Launcher createLauncher(Parameters parameters) {
+ String name = parameters.first("launcher");
+
+ LauncherProvider launcherProvider = launcherRegistry.get(name);
+
+ if (launcherProvider == null)
+ throw new IllegalArgumentException("Invalid launcher type: " + name);
+
+ return launcherProvider.provide(parameters);
+ }
+
+ public static LauncherFactory getInstance() {
+ return INSTANCE;
+ }
+
+ public interface LauncherProvider {
+
+ Launcher provide(Parameters parameters);
+
+ }
+
+}