From 9db2f871c6fc85723cffc95a0a088737d7b6c0bb Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Sun, 30 Oct 2022 21:18:27 +0100 Subject: [PATCH] Makes sure music is stopped immediately if an NPC is removed --- .../knarcraft/minstrel/MinstrelPlugin.java | 4 +- .../minstrel/listener/MinstrelListener.java | 45 +++++++++++++++++++ .../minstrel/listener/PlayerListener.java | 25 ----------- 3 files changed, 47 insertions(+), 27 deletions(-) create mode 100644 src/main/java/net/knarcraft/minstrel/listener/MinstrelListener.java delete mode 100644 src/main/java/net/knarcraft/minstrel/listener/PlayerListener.java diff --git a/src/main/java/net/knarcraft/minstrel/MinstrelPlugin.java b/src/main/java/net/knarcraft/minstrel/MinstrelPlugin.java index 24d96e1..3c4e5a2 100644 --- a/src/main/java/net/knarcraft/minstrel/MinstrelPlugin.java +++ b/src/main/java/net/knarcraft/minstrel/MinstrelPlugin.java @@ -3,7 +3,7 @@ package net.knarcraft.minstrel; import net.citizensnpcs.api.CitizensAPI; import net.knarcraft.minstrel.command.MinstrelCommand; import net.knarcraft.minstrel.command.MinstrelTabCompleter; -import net.knarcraft.minstrel.listener.PlayerListener; +import net.knarcraft.minstrel.listener.MinstrelListener; import net.knarcraft.minstrel.trait.MinstrelTrait; import org.bukkit.Bukkit; import org.bukkit.command.PluginCommand; @@ -32,7 +32,7 @@ public final class MinstrelPlugin extends JavaPlugin { net.citizensnpcs.api.trait.TraitInfo.create(MinstrelTrait.class).withName("minstrel")); PluginManager pluginManager = Bukkit.getPluginManager(); - pluginManager.registerEvents(new PlayerListener(), this); + pluginManager.registerEvents(new MinstrelListener(), this); PluginCommand minstrelCommand = this.getCommand("minstrel"); if (minstrelCommand != null) { diff --git a/src/main/java/net/knarcraft/minstrel/listener/MinstrelListener.java b/src/main/java/net/knarcraft/minstrel/listener/MinstrelListener.java new file mode 100644 index 0000000..5dcf2b3 --- /dev/null +++ b/src/main/java/net/knarcraft/minstrel/listener/MinstrelListener.java @@ -0,0 +1,45 @@ +package net.knarcraft.minstrel.listener; + +import net.citizensnpcs.api.CitizensAPI; +import net.citizensnpcs.api.event.NPCRemoveEvent; +import net.citizensnpcs.api.npc.NPC; +import net.knarcraft.minstrel.trait.MinstrelTrait; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; + +/** + * A listener for minstrel-relate events + */ +public class MinstrelListener implements Listener { + + /** + * Listens for any players joining, and makes all minstrels play for them + * + * @param event

The triggered event

+ */ + @EventHandler + public void playerJoinListener(PlayerJoinEvent event) { + for (NPC npc : CitizensAPI.getNPCRegistry()) { + if (npc.hasTrait(MinstrelTrait.class)) { + MinstrelTrait minstrelTrait = npc.getTraitNullable(MinstrelTrait.class); + minstrelTrait.getPlaylist().play(minstrelTrait, event.getPlayer()); + } + } + } + + /** + * Listens for the deletion of any NPCs, and stops their music + * + * @param event

The triggered event

+ */ + @EventHandler + public void npcDeletionListener(NPCRemoveEvent event) { + NPC npc = event.getNPC(); + if (npc.hasTrait(MinstrelTrait.class)) { + MinstrelTrait minstrelTrait = npc.getTraitNullable(MinstrelTrait.class); + minstrelTrait.getPlaylist().stop(); + } + } + +} diff --git a/src/main/java/net/knarcraft/minstrel/listener/PlayerListener.java b/src/main/java/net/knarcraft/minstrel/listener/PlayerListener.java deleted file mode 100644 index 209bb26..0000000 --- a/src/main/java/net/knarcraft/minstrel/listener/PlayerListener.java +++ /dev/null @@ -1,25 +0,0 @@ -package net.knarcraft.minstrel.listener; - -import net.citizensnpcs.api.CitizensAPI; -import net.citizensnpcs.api.npc.NPC; -import net.knarcraft.minstrel.trait.MinstrelTrait; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerJoinEvent; - -/** - * A listener for events where a player isn't hearing music when they should - */ -public class PlayerListener implements Listener { - - @EventHandler - public void playerJoinListener(PlayerJoinEvent event) { - for (NPC npc : CitizensAPI.getNPCRegistry()) { - if (npc.hasTrait(MinstrelTrait.class)) { - MinstrelTrait minstrelTrait = npc.getTraitNullable(MinstrelTrait.class); - minstrelTrait.getPlaylist().play(minstrelTrait, event.getPlayer()); - } - } - } - -}