blob: cbf4742506b58873c4069a0a8b0ba9f119909793 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
package audio;
import com.sedmelluq.discord.lavaplayer.player.AudioPlayer;
import com.sedmelluq.discord.lavaplayer.player.event.AudioEventAdapter;
import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
import com.sedmelluq.discord.lavaplayer.track.AudioTrackEndReason;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.Activity;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
/**
* This class schedules tracks for the audio player. It contains the queue of tracks.
*/
public class TrackScheduler extends AudioEventAdapter {
public final AudioPlayer player;
public BlockingQueue<AudioTrack> queue;
public JDA jda;
/**
* @param player The audio player this scheduler uses
*/
public TrackScheduler(AudioPlayer player, JDA jda) {
this.player = player;
this.jda = jda;
this.queue = new LinkedBlockingQueue<>();
}
/**
* Add the next track to queue or play right away if nothing is in the queue.
*
* @param track The track to play or add to queue.
*/
public void queue(AudioTrack track) {
//!player.startTrack(track, true)
if (player.getPlayingTrack()!= null) {
queue.offer(track);
jda.getPresence().setActivity(Activity.playing(player.getPlayingTrack().getInfo().title));
}
else{
player.startTrack(track, true);
jda.getPresence().setActivity(Activity.playing(player.getPlayingTrack().getInfo().title));
}
}
/**
* Start the next track, stopping the current one if it is playing.
*/
public void nextTrack() {
player.startTrack(queue.poll(), false);
jda.getPresence().setActivity(Activity.playing(player.getPlayingTrack().getInfo().title));
}
@Override
public void onTrackEnd(AudioPlayer player, AudioTrack track, AudioTrackEndReason endReason) {
jda.getPresence().setActivity(null);
if (endReason.mayStartNext) {
jda.getPresence().setActivity(Activity.playing(track.getInfo().title));
nextTrack();
}
}
public void shuffle()
{
Collections.shuffle((List<?>) queue);
}
}
|