From 2e6ab6c038e4df3fbbd51f104a083c495a482d7a Mon Sep 17 00:00:00 2001 From: PikaMug <2267126+PikaMug@users.noreply.github.com> Date: Sat, 11 Nov 2023 00:30:25 -0500 Subject: [PATCH] Verify compatibility of ZNPCsPlus version --- .../dependencies/BukkitDependencies.java | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/me/pikamug/quests/dependencies/BukkitDependencies.java b/core/src/main/java/me/pikamug/quests/dependencies/BukkitDependencies.java index 2cf401ef8..ed321c482 100644 --- a/core/src/main/java/me/pikamug/quests/dependencies/BukkitDependencies.java +++ b/core/src/main/java/me/pikamug/quests/dependencies/BukkitDependencies.java @@ -23,6 +23,7 @@ import io.github.znetworkw.znpcservers.npc.NPC; import lol.pyr.znpcsplus.ZNPCsPlus; import me.pikamug.quests.BukkitQuestsPlugin; import me.pikamug.quests.listeners.BukkitCitizensListener; +import me.pikamug.quests.listeners.BukkitZnpcsListener; import me.pikamug.quests.player.Quester; import me.pikamug.quests.dependencies.reflect.denizen.DenizenAPI; import me.pikamug.quests.dependencies.reflect.worldguard.WorldGuardAPI; @@ -195,12 +196,33 @@ public class BukkitDependencies implements Dependencies { public ZNPCsPlus getZnpcsPlus() { if (znpcsPlus == null) { - znpcsPlus = (ZNPCsPlus) plugin.getServer().getPluginManager().getPlugin("ZNPCsPlus"); - startNpcEffectThread(); + linkZnpcsPlus(); } return znpcsPlus; } + public void linkZnpcsPlus() { + if (isPluginAvailable("ZNPCsPlus")) { + try { + znpcsPlus = (ZNPCsPlus) plugin.getServer().getPluginManager().getPlugin("ZNPCsPlus"); + boolean found = false; + for (final RegisteredListener listener : HandlerList.getRegisteredListeners(plugin)) { + if (listener.getListener() instanceof BukkitZnpcsListener) { + found = true; + } + } + if (!found) { + plugin.getServer().getPluginManager().registerEvents(plugin.getZnpcsListener(), plugin); + startNpcEffectThread(); + plugin.getLogger().info("Successfully linked Quests with ZNPCsPlus " + + znpcsPlus.getDescription().getVersion()); + } + } catch (final Exception e) { + plugin.getLogger().warning("Incompatible version of ZNPCsPlus found. ZNPCsPlus in Quests not enabled."); + } + } + } + public Set getZnpcsPlusUuids() { if (znpcsPlus != null && isPluginAvailable("ZNPCsPlus")) { return io.github.znetworkw.znpcservers.npc.NPC.all().stream()