Files
KittyBot/src/utils/audio/AudioController.java
T
2019-10-18 00:36:20 -04:00

85 lines
2.4 KiB
Java

package utils.audio;
import com.sedmelluq.discord.lavaplayer.player.AudioLoadResultHandler;
import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager;
import com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager;
import com.sedmelluq.discord.lavaplayer.source.AudioSourceManagers;
import com.sedmelluq.discord.lavaplayer.tools.FriendlyException;
import com.sedmelluq.discord.lavaplayer.track.AudioPlaylist;
import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
import dataStructures.KittyGuild;
public class AudioController
{
private final AudioPlayerManager playerManager;
public String response;
public AudioController()
{
playerManager = new DefaultAudioPlayerManager();
AudioSourceManagers.registerRemoteSources(playerManager);
AudioSourceManagers.registerLocalSource(playerManager);
}
public void loadAndPlay(final String trackUrl, KittyGuild guild)
{
GuildMusicManager musicManager = guild.musicManager;
response = "HERE";
playerManager.loadItemOrdered(musicManager, trackUrl, new AudioLoadResultHandler()
{
@Override
public void trackLoaded(AudioTrack track)
{
response = "Adding to queue " + track.getInfo().title;
System.out.println("QUEUED");
play(musicManager, track);
}
@Override
public void playlistLoaded(AudioPlaylist playlist)
{
AudioTrack firstTrack = playlist.getSelectedTrack();
if (firstTrack == null)
{
firstTrack = playlist.getTracks().get(0);
}
response = "Adding to queue " + firstTrack.getInfo().title + " (first track of playlist " + playlist.getName() + ")";
play(musicManager, firstTrack);
}
@Override
public void noMatches()
{
System.out.println("NOT QUEUED");
response = "Nothing found by " + trackUrl;
}
@Override
public void loadFailed(FriendlyException exception)
{
System.out.println("EXCEPTION");
System.out.println(exception.getCause());
}
});
}
private void play(GuildMusicManager musicManager, AudioTrack track)
{
musicManager.scheduler.queue(track);
}
private void skipTrack(KittyGuild guild)
{
GuildMusicManager musicManager = guild.musicManager;
musicManager.scheduler.nextTrack();
response = "Skipped to next track.";
}
}