diff options
| author | Raven Szewczyk <git@eigenraven.me> | 2024-05-24 19:13:49 +0100 |
|---|---|---|
| committer | Raven Szewczyk <git@eigenraven.me> | 2024-05-24 19:13:49 +0100 |
| commit | 9b6fc0420059c6b399506cee841290766b72bd53 (patch) | |
| tree | 9a769dda9b37d90d6cdb27e4f8b6b7b2293d5ec1 /gtpp/src/main/java/gtPlusPlus/plugin/manager | |
| parent | 227856cdae4dae22fca53f2dc027cac476123bd0 (diff) | |
| parent | 75915e9e1fce7a8ee500add139b42e806e9497b5 (diff) | |
| download | GT5-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.java | 94 |
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) {} + } +} |
