diff --git a/src/main/java/me/unurled/sacredrealms/sr/managers/Managers.java b/src/main/java/me/unurled/sacredrealms/sr/managers/Managers.java index 8c8d429..80241ee 100644 --- a/src/main/java/me/unurled/sacredrealms/sr/managers/Managers.java +++ b/src/main/java/me/unurled/sacredrealms/sr/managers/Managers.java @@ -1,5 +1,8 @@ package me.unurled.sacredrealms.sr.managers; +import static me.unurled.sacredrealms.sr.utils.Logger.error; + +import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.List; import me.unurled.sacredrealms.sr.SR; @@ -20,18 +23,36 @@ public class Managers { managers = new ArrayList<>(); // register managers here (like a new instance of them) - Bukkit.getScheduler() - .runTaskLater( - SR.getInstance(), - () -> { - new DataManager(); - new PlayerManager(); - new ItemManager(); - new CombatManager(); - new CommandManager(); - new EntityManager(); - }, - 10L); + register( + List.of( + DataManager.class, + PlayerManager.class, + ItemManager.class, + CombatManager.class, + CommandManager.class, + EntityManager.class, + ClientBuildManager.class)); + } + + private void register(List> clazz) { + int i = 0; + for (Class c : clazz) { + Bukkit.getScheduler() + .runTaskLater( + SR.getInstance(), + () -> { + try { + c.getDeclaredConstructor().newInstance(); + } catch (InstantiationException + | IllegalAccessException + | InvocationTargetException + | NoSuchMethodException e) { + error("Failed to register manager: " + c.getSimpleName()); + } + }, + 5L * i); + i++; + } } public void addManager(Manager manager) {