| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- package me.lethunderhawk.fluxapi.npc;
- import me.lethunderhawk.fluxapi.FluxService;
- import me.lethunderhawk.fluxapi.npc.abstraction.DummyNPC;
- import me.lethunderhawk.fluxapi.npc.abstraction.NPCLocation;
- import me.lethunderhawk.fluxapi.npc.abstraction.NPCOptions;
- import me.lethunderhawk.fluxapi.npc.command.NPCCommand;
- import me.lethunderhawk.fluxapi.npc.listener.NPCListener;
- import me.lethunderhawk.fluxapi.npc.listener.WorldLoadListener;
- import me.lethunderhawk.fluxapi.npc.manager.NPCManager;
- import me.lethunderhawk.fluxapi.npc.registry.NPCRegistry;
- import me.lethunderhawk.fluxapi.util.config.ConfigLoader;
- import me.lethunderhawk.fluxapi.util.interfaces.BazaarFluxModule;
- import org.bukkit.Bukkit;
- import org.bukkit.configuration.serialization.ConfigurationSerialization;
- import org.bukkit.event.HandlerList;
- import org.bukkit.plugin.java.JavaPlugin;
- public final class NPCModule extends BazaarFluxModule {
- private final String saveLocation = "/npc/npcs.yml";
- private NPCManager npcManager;
- private NPCListener listener;
- private WorldLoadListener worldLoadListener;
- public NPCModule(JavaPlugin plugin) {
- super(plugin);
- }
- public String getPrefix() {
- return "[NPC]";
- }
- @Override
- public void onEnable() {
- FluxService.registerModule(NPCModule.class, this);
- registerBaseNPCSerializables();
- if(NPCRegistry.isRegistered()){
- finalizeRegistration();
- }else{
- printWaitingNotif();
- }
- registerListeners();
- NPCCommand npcCommand = new NPCCommand(this);
- plugin.getCommand("npc").setExecutor(npcCommand);
- plugin.getCommand("npc").setTabCompleter(npcCommand);
- }
- private void registerListeners() {
- this.listener = new NPCListener();
- plugin.getServer().getPluginManager().registerEvents(listener, plugin);
- this.worldLoadListener = new WorldLoadListener();
- plugin.getServer().getPluginManager().registerEvents(worldLoadListener, plugin);
- }
- private void printWaitingNotif() {
- Bukkit.getLogger().info("FluxAPI enabled. Waiting for NPC registration...");
- }
- private void registerBaseNPCSerializables() {
- ConfigurationSerialization.registerClass(NPCOptions.class);
- ConfigurationSerialization.registerClass(NPCManager.class);
- ConfigurationSerialization.registerClass(DummyNPC.class);
- ConfigurationSerialization.registerClass(NPCLocation.class);
- }
- public void finalizeRegistration() {
- this.npcManager = FluxService.get(ConfigLoader.class).loadObject(
- saveLocation,
- "manager",
- NPCManager.class
- );
- if(npcManager == null) {
- npcManager = new NPCManager();
- }
- FluxService.register(NPCManager.class, npcManager);
- npcManager.initializeSpawning();
- plugin.getLogger().info("NPC Extension Enabled and fully registered!");
- }
- @Override
- public void onDisable() {
- if(npcManager != null) {
- npcManager.saveNPCsToFile(saveLocation);
- npcManager.deleteAllNpcEntities();
- }
- unregisterListeners();
- FluxService.unregister(NPCManager.class);
- npcManager = null;
- }
- private void unregisterListeners() {
- HandlerList.unregisterAll(listener);
- listener = null;
- HandlerList.unregisterAll(worldLoadListener);
- worldLoadListener = null;
- }
- }
|