79 lines
2.3 KiB
Java
79 lines
2.3 KiB
Java
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;
|
|
import me.unurled.sacredrealms.sr.components.clientbuild.ClientBuildManager;
|
|
import me.unurled.sacredrealms.sr.components.combat.CombatManager;
|
|
import me.unurled.sacredrealms.sr.components.entity.EntityManager;
|
|
import me.unurled.sacredrealms.sr.components.item.ItemManager;
|
|
import me.unurled.sacredrealms.sr.components.player.PlayerManager;
|
|
import me.unurled.sacredrealms.sr.components.treasure.TreasureManager;
|
|
import me.unurled.sacredrealms.sr.data.DataManager;
|
|
import org.bukkit.Bukkit;
|
|
import org.jetbrains.annotations.NotNull;
|
|
import org.jetbrains.annotations.Nullable;
|
|
|
|
public class Managers {
|
|
|
|
private final List<Manager> managers;
|
|
|
|
public Managers() {
|
|
managers = new ArrayList<>();
|
|
// register managers here (like a new instance of them)
|
|
|
|
register(
|
|
List.of(
|
|
DataManager.class,
|
|
PlayerManager.class,
|
|
CombatManager.class,
|
|
ItemManager.class,
|
|
EntityManager.class,
|
|
ClientBuildManager.class,
|
|
TreasureManager.class));
|
|
}
|
|
|
|
private void register(@NotNull List<Class<? extends Manager>> clazz) {
|
|
int i = 0;
|
|
for (Class<? extends Manager> c : clazz) {
|
|
Bukkit.getScheduler()
|
|
.runTaskLater(
|
|
SR.getInstance(),
|
|
() -> {
|
|
try {
|
|
c.getDeclaredConstructor().newInstance();
|
|
} catch (InstantiationException
|
|
| IllegalAccessException
|
|
| InvocationTargetException
|
|
| NoSuchMethodException e) {
|
|
error("Failed to register manager: " + c.getSimpleName());
|
|
}
|
|
},
|
|
10L * i);
|
|
i++;
|
|
}
|
|
}
|
|
|
|
public void addManager(Manager manager) {
|
|
managers.add(manager);
|
|
}
|
|
|
|
public void unload() {
|
|
for (Manager manager : managers) {
|
|
manager.unload();
|
|
}
|
|
}
|
|
|
|
@Nullable
|
|
public Manager getManager(Class<? extends Manager> clazz) {
|
|
for (Manager manager : managers) {
|
|
if (manager.getClass().equals(clazz)) {
|
|
return manager;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
}
|