diff --git a/src/main/java/com/bbn/hadder/Hadder.java b/src/main/java/com/bbn/hadder/Hadder.java index 2dd1812..917328f 100644 --- a/src/main/java/com/bbn/hadder/Hadder.java +++ b/src/main/java/com/bbn/hadder/Hadder.java @@ -16,7 +16,6 @@ import net.dv8tion.jda.api.entities.Activity; import net.dv8tion.jda.api.sharding.DefaultShardManagerBuilder; import net.dv8tion.jda.api.sharding.ShardManager; -import javax.security.auth.login.LoginException; import java.util.List; public class Hadder { 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 5154b80..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<>(); } @@ -48,13 +50,16 @@ public class TrackManager extends AudioEventAdapter { @Override public void onTrackEnd(AudioPlayer player, AudioTrack track, AudioTrackEndReason endReason) { + Guild g = queue.poll().getAuthor().getGuild(); if (loop) { player.playTrack(track.makeClone()); } else if (queue.isEmpty()) { - Guild g = queue.poll().getAuthor().getGuild(); + manager.players.remove(g.getId()); + manager.getPlayer(g).destroy(); + manager.getTrackManager(g).purgeQueue(); g.getAudioManager().closeAudioConnection(); } else { - player.playTrack(queue.element().getTrack().makeClone()); + player.playTrack(queue.element().getTrack()); } }