diff --git a/api/src/main/java/org/geysermc/api/Geyser.java b/api/src/main/java/org/geysermc/api/Geyser.java new file mode 100644 index 00000000..e8f68d16 --- /dev/null +++ b/api/src/main/java/org/geysermc/api/Geyser.java @@ -0,0 +1,18 @@ +package org.geysermc.api; + +import org.geysermc.api.plugin.Plugin; + +import java.util.ArrayList; +import java.util.List; + +public class Geyser { + private static final List plugins = new ArrayList<>(); + + public static List getPlugins() { + return new ArrayList<>(plugins); + } + + public static void add(Plugin p) { + plugins.add(p); + } +} diff --git a/api/src/main/java/org/geysermc/api/plugin/Plugin.java b/api/src/main/java/org/geysermc/api/plugin/Plugin.java index 0dde7cd9..90299b6d 100644 --- a/api/src/main/java/org/geysermc/api/plugin/Plugin.java +++ b/api/src/main/java/org/geysermc/api/plugin/Plugin.java @@ -8,4 +8,8 @@ public class Plugin { public void onDisable() { } + + public void onLoad() { + + } } diff --git a/connector/src/main/java/org/geysermc/connector/GeyserConnector.java b/connector/src/main/java/org/geysermc/connector/GeyserConnector.java index c782c003..ec3ac0b1 100644 --- a/connector/src/main/java/org/geysermc/connector/GeyserConnector.java +++ b/connector/src/main/java/org/geysermc/connector/GeyserConnector.java @@ -24,6 +24,7 @@ import org.geysermc.connector.command.GeyserCommandMap; import org.geysermc.connector.configuration.GeyserConfiguration; import org.geysermc.connector.console.ConsoleCommandReader; import org.geysermc.connector.console.GeyserLogger; +import org.geysermc.connector.plugin.Loader; import java.io.File; import java.io.FileOutputStream; @@ -93,6 +94,9 @@ public class GeyserConnector { logger.severe("Failed to create config.yml! Make sure it's up to date and writable!"); shutdown(); } + + Loader.start(); + commandMap = new GeyserCommandMap(this); } diff --git a/connector/src/main/java/org/geysermc/connector/plugin/Loader.java b/connector/src/main/java/org/geysermc/connector/plugin/Loader.java index 4775a6a4..e51bbd48 100644 --- a/connector/src/main/java/org/geysermc/connector/plugin/Loader.java +++ b/connector/src/main/java/org/geysermc/connector/plugin/Loader.java @@ -2,6 +2,7 @@ package org.geysermc.connector.plugin; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import org.geysermc.api.Geyser; import org.geysermc.api.plugin.Plugin; import java.io.File; @@ -58,7 +59,11 @@ public class Loader extends ClassLoader { is.close(); - ((Plugin) Class.forName(yml.main, true, l).newInstance()).onEnable(); + Plugin plugin = (Plugin) Class.forName(yml.main, true, l).newInstance(); + + plugin.onLoad(); + + Geyser.add(plugin); } catch (Exception e) { System.out.println("Error loading plugin " + f.getName()); @@ -66,6 +71,9 @@ public class Loader extends ClassLoader { } } } + for(Plugin p : Geyser.getPlugins()) { + p.onEnable(); + } LOADER = l; }