diff --git a/src/main/java/com/bbn/hadder/audio/AudioManager.java b/src/main/java/com/bbn/hadder/audio/AudioManager.java index 4e7b730..c40002a 100644 --- a/src/main/java/com/bbn/hadder/audio/AudioManager.java +++ b/src/main/java/com/bbn/hadder/audio/AudioManager.java @@ -53,7 +53,7 @@ public class AudioManager { public AudioPlayer createPlayer(Guild guild) { AudioPlayer nPlayer = myManager.createPlayer(); - TrackManager manager = new TrackManager(nPlayer); + TrackManager manager = new TrackManager(nPlayer, this); nPlayer.addListener(manager); guild.getAudioManager().setSendingHandler(new AudioPlayerSendHandler(nPlayer)); players.put(guild.getId(), new AbstractMap.SimpleEntry<>(nPlayer, manager)); diff --git a/src/main/java/com/bbn/hadder/audio/TrackManager.java b/src/main/java/com/bbn/hadder/audio/TrackManager.java index 08a1363..c5710fe 100644 --- a/src/main/java/com/bbn/hadder/audio/TrackManager.java +++ b/src/main/java/com/bbn/hadder/audio/TrackManager.java @@ -18,10 +18,12 @@ import java.util.concurrent.LinkedBlockingQueue; public class TrackManager extends AudioEventAdapter { private final AudioPlayer player; + private final AudioManager manager; private final Queue queue; private boolean loop = false; - public TrackManager(AudioPlayer player) { + public TrackManager(AudioPlayer player, AudioManager manager) { + this.manager = manager; this.player = player; this.queue = new LinkedBlockingQueue<>(); } @@ -52,6 +54,9 @@ public class TrackManager extends AudioEventAdapter { if (loop) { player.playTrack(track.makeClone()); } else if (queue.isEmpty()) { + manager.players.remove(g.getId()); + manager.getPlayer(g).destroy(); + manager.getTrackManager(g).purgeQueue(); g.getAudioManager().closeAudioConnection(); } else { player.playTrack(queue.element().getTrack());