Sacred realms

This commit is contained in:
unurled 2024-02-26 21:04:42 +01:00
commit aa1c13c74c
Signed by: unurled
GPG key ID: FDBC9CBE1F82423F
28 changed files with 1651 additions and 0 deletions

View file

@ -0,0 +1,47 @@
package me.unurled.sacredrealms.sr.managers;
import me.unurled.sacredrealms.sr.SR;
import org.bukkit.Bukkit;
import org.bukkit.event.Listener;
public class Manager implements Listener {
/** Constructor for the Manager class */
public Manager() {
SR.getInstance().getManagers().addManager(this);
Bukkit.getScheduler()
.runTaskAsynchronously(
SR.getInstance(),
() -> {
load();
Bukkit.getPluginManager().registerEvents(this, SR.getInstance());
});
}
/**
* Get an instance of a manager
*
* @param clazz The class of the manager
* @return The instance of the manager
* @param <T> The type of the manager
*/
public static <T extends Manager> Manager getInstance(Class<? extends Manager> clazz) {
return clazz.cast(SR.getInstance().getManagers().getManager(clazz));
}
/** Load the manager */
public void load() {
loadData();
}
/** Unload the manager */
public void unload() {
saveData();
}
/** Save the data */
public void saveData() {}
/** Load the data */
public void loadData() {}
}

View file

@ -0,0 +1,52 @@
package me.unurled.sacredrealms.sr.managers;
import java.util.ArrayList;
import java.util.List;
import me.unurled.sacredrealms.sr.SR;
import me.unurled.sacredrealms.sr.components.combat.CombatManager;
import me.unurled.sacredrealms.sr.components.item.ItemManager;
import me.unurled.sacredrealms.sr.components.player.PlayerManager;
import me.unurled.sacredrealms.sr.data.DataManager;
import org.bukkit.Bukkit;
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)
Bukkit.getScheduler()
.runTaskLater(
SR.getInstance(),
() -> {
new DataManager();
new PlayerManager();
new ItemManager();
new CombatManager();
},
10L);
}
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;
}
}