Implement the song queue

This commit is contained in:
Chipmunk 2023-02-17 14:36:29 -05:00
parent 8d4274883b
commit 0755e1b505

View file

@ -15,6 +15,7 @@ import lombok.Setter;
import java.io.File;
import java.util.Timer;
import java.util.TimerTask;
import java.util.LinkedList;
public class SongPlayer extends SessionAdapter {
private final ChipmunkBot client;
@ -27,6 +28,7 @@ public class SongPlayer extends SessionAdapter {
}
@Getter @Setter private Song currentSong;
@Getter @Setter private LinkedList<Song> songQueue = new LinkedList<>();
@Getter @Setter private Timer playTimer;
@Getter @Setter private SongLoaderThread loaderThread;
private int ticksUntilPausedActionbar = 20;
@ -66,14 +68,19 @@ public class SongPlayer extends SessionAdapter {
if (loaderThread.exception != null) {
client.chat().tellraw(Component.translatable("Failed to load song: %s", loaderThread.exception.message()).color(NamedTextColor.RED));
} else {
currentSong = loaderThread.song;
client.chat().tellraw(Component.translatable("Now playing %s", Component.empty().append(currentSong.name).color(NamedTextColor.DARK_GREEN)).color(NamedTextColor.GREEN));
currentSong.play();
songQueue.add(loaderThread.song);
client.chat().tellraw(Component.translatable("Added %s to the song queue", Component.empty().append(currentSong.name).color(NamedTextColor.DARK_GREEN)).color(NamedTextColor.GREEN));
}
loaderThread = null;
}
if (currentSong == null) return;
if (currentSong == null) {
if (songQueue.size() == 0) return;
currentSong = songQueue.poll();
client.chat().tellraw(Component.translatable("Now playing %s", Component.empty().append(currentSong.name).color(NamedTextColor.DARK_GREEN)).color(NamedTextColor.GREEN));
currentSong.play();
}
if (currentSong.paused && ticksUntilPausedActionbar-- < 0) return;
else ticksUntilPausedActionbar = 20;