1111import java .util .List ;
1212
1313public final class ModuleManager {
14- private static final List <@ NotNull PluginModule > modules = new ArrayList <>() ;
14+ private final List <@ NotNull PluginModule > modules ;
1515
16- private ModuleManager () {
16+ public ModuleManager (@ NotNull JavaPlugin plugin ) {
17+ final var logger = plugin .getComponentLogger ();
18+
19+ modules = new ArrayList <>();
20+ for (final var clazz : discoverModules ()) {
21+ try {
22+ final var constructor = clazz .getConstructor (JavaPlugin .class );
23+ final var module = constructor .newInstance (plugin );
24+ modules .add (module );
25+ } catch (Exception exception ) {
26+ logger .warn ("Failed to initialize {}: {}" , clazz .getSimpleName (), exception .getMessage ());
27+ }
28+ }
29+
30+ logger .info ("Initialized {} modules" , modules .size ());
1731 }
1832
19- public static List <@ NotNull Class <? extends PluginModule >> discoverModules () {
33+ public void reloadModules () {
34+ modules .forEach (PluginModule ::reload );
35+ }
36+
37+ private List <@ NotNull Class <? extends PluginModule >> discoverModules () {
2038 try {
2139 final var moduleClasses = new ArrayList <Class <? extends PluginModule >>();
22- final var classLoader = ModuleManager . class .getClassLoader ();
40+ final var classLoader = getClass () .getClassLoader ();
2341 final var classPath = ClassPath .from (classLoader );
2442
2543 final var packageName = "com.uravgcode.modernessentials.module" ;
@@ -39,25 +57,4 @@ private ModuleManager() {
3957 throw new RuntimeException (exception );
4058 }
4159 }
42-
43- public static void initializeModules (@ NotNull JavaPlugin plugin ) {
44- final var logger = plugin .getComponentLogger ();
45-
46- modules .clear ();
47- for (final var clazz : discoverModules ()) {
48- try {
49- final var constructor = clazz .getConstructor (JavaPlugin .class );
50- final var module = constructor .newInstance (plugin );
51- modules .add (module );
52- } catch (Exception exception ) {
53- logger .warn ("Failed to initialize {}: {}" , clazz .getSimpleName (), exception .getMessage ());
54- }
55- }
56-
57- logger .info ("Initialized {} modules" , modules .size ());
58- }
59-
60- public static void reloadModules () {
61- modules .forEach (PluginModule ::reload );
62- }
6360}
0 commit comments