aboutsummaryrefslogtreecommitdiff
path: root/gtpp/src/main/java/gtPlusPlus/plugin/manager
diff options
context:
space:
mode:
authorRaven Szewczyk <git@eigenraven.me>2024-05-24 19:13:49 +0100
committerRaven Szewczyk <git@eigenraven.me>2024-05-24 19:13:49 +0100
commit9b6fc0420059c6b399506cee841290766b72bd53 (patch)
tree9a769dda9b37d90d6cdb27e4f8b6b7b2293d5ec1 /gtpp/src/main/java/gtPlusPlus/plugin/manager
parent227856cdae4dae22fca53f2dc027cac476123bd0 (diff)
parent75915e9e1fce7a8ee500add139b42e806e9497b5 (diff)
downloadGT5-Unofficial-9b6fc0420059c6b399506cee841290766b72bd53.tar.gz
GT5-Unofficial-9b6fc0420059c6b399506cee841290766b72bd53.tar.bz2
GT5-Unofficial-9b6fc0420059c6b399506cee841290766b72bd53.zip
Merge in GTplusplus with history
git-subtree-dir: gtpp git-subtree-mainline: 227856cdae4dae22fca53f2dc027cac476123bd0 git-subtree-split: 75915e9e1fce7a8ee500add139b42e806e9497b5
Diffstat (limited to 'gtpp/src/main/java/gtPlusPlus/plugin/manager')
-rw-r--r--gtpp/src/main/java/gtPlusPlus/plugin/manager/Core_Manager.java94
1 files changed, 94 insertions, 0 deletions
diff --git a/gtpp/src/main/java/gtPlusPlus/plugin/manager/Core_Manager.java b/gtpp/src/main/java/gtPlusPlus/plugin/manager/Core_Manager.java
new file mode 100644
index 0000000000..be1dafd231
--- /dev/null
+++ b/gtpp/src/main/java/gtPlusPlus/plugin/manager/Core_Manager.java
@@ -0,0 +1,94 @@
+package gtPlusPlus.plugin.manager;
+
+import gtPlusPlus.api.interfaces.IPlugin;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.api.objects.data.AutoMap;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
+
+public class Core_Manager {
+
+ public static AutoMap<IPlugin> mPlugins = new AutoMap<>();
+
+ /**
+ * @param plugin - Dynamically registers the plugin for loading.
+ */
+ public static void registerPlugin(IPlugin plugin) {
+ Logger.INFO("[Plugin] " + "Registered " + plugin.getPluginName() + ".");
+ mPlugins.put(plugin);
+ }
+
+ /**
+ * Dynamically loads all class objects within the "gtPlusPlus.plugin" package.
+ */
+ public static void veryEarlyInit() {
+ if (ReflectionUtils.dynamicallyLoadClassesInPackage("gtPlusPlus.plugin")) {
+ Logger.INFO("[Plugin] Plugin System loaded.");
+ }
+ }
+
+ public static boolean preInit() {
+ try {
+ for (IPlugin h : mPlugins) {
+ if (h.preInit()) {
+ Logger.INFO("[Plugin] Completed Pre-Init Phase for " + h.getPluginName() + ".");
+ } else {
+ Logger.INFO("[Plugin] Failed during Pre-Init Phase for " + h.getPluginName() + ".");
+ }
+ }
+ return true;
+ } catch (Throwable ignored) {}
+ return false;
+ }
+
+ public static boolean init() {
+ try {
+ for (IPlugin h : mPlugins) {
+ if (h.init()) {
+ Logger.INFO("[Plugin] Completed Init Phase for " + h.getPluginName() + ".");
+ } else {
+ Logger.INFO("[Plugin] Failed during Init Phase for " + h.getPluginName() + ".");
+ }
+ }
+ return true;
+ } catch (Throwable ignored) {}
+ return false;
+ }
+
+ public static boolean postInit() {
+ try {
+ for (IPlugin h : mPlugins) {
+ if (h.postInit()) {
+ Logger.INFO("[Plugin] Completed Post-Init Phase for " + h.getPluginName() + ".");
+ } else {
+ Logger.INFO("[Plugin] Failed during Post-Init Phase for " + h.getPluginName() + ".");
+ }
+ }
+ return true;
+ } catch (Throwable ignored) {}
+ return false;
+ }
+
+ public static void serverStart() {
+ try {
+ for (IPlugin h : mPlugins) {
+ if (h.serverStart()) {
+ Logger.INFO("[Plugin] Completed Server Start Phase for " + h.getPluginName() + ".");
+ } else {
+ Logger.INFO("[Plugin] Failed during Server Start Phase for " + h.getPluginName() + ".");
+ }
+ }
+ } catch (Throwable ignored) {}
+ }
+
+ public static void serverStop() {
+ try {
+ for (IPlugin h : mPlugins) {
+ if (h.serverStop()) {
+ Logger.INFO("[Plugin] Completed Server Stop Phase for " + h.getPluginName() + ".");
+ } else {
+ Logger.INFO("[Plugin] Failed during Server Stop Phase for " + h.getPluginName() + ".");
+ }
+ }
+ } catch (Throwable ignored) {}
+ }
+}