SR-Game/src/main/java/me/unurled/sacredrealms/sr/managers/Managers.java
unurled 7816bbe384
All checks were successful
Build / build (push) Successful in 3m22s
transition to paper plugin
2024-07-03 18:44:00 +02:00

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;
}
}