Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.23 KB | None | 0 0
  1. package me.codelisu.zeeobot.music;
  2.  
  3. import com.sedmelluq.discord.lavaplayer.player.AudioLoadResultHandler;
  4. import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager;
  5. import com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager;
  6. import com.sedmelluq.discord.lavaplayer.source.AudioSourceManagers;
  7. import com.sedmelluq.discord.lavaplayer.tools.FriendlyException;
  8. import com.sedmelluq.discord.lavaplayer.track.AudioPlaylist;
  9. import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
  10. import net.dv8tion.jda.api.entities.Guild;
  11. import net.dv8tion.jda.api.entities.TextChannel;
  12.  
  13. import java.util.HashMap;
  14. import java.util.Map;
  15.  
  16. public class PlayerManager {
  17. private static PlayerManager INSTANCE;
  18. private final AudioPlayerManager playerManager;
  19. private final Map<Long, GuildMusicManager> musicManagers;
  20.  
  21. private PlayerManager() {
  22. this.musicManagers = new HashMap<>();
  23.  
  24. this.playerManager = new DefaultAudioPlayerManager();
  25. AudioSourceManagers.registerRemoteSources(playerManager);
  26. AudioSourceManagers.registerLocalSource(playerManager);
  27. }
  28.  
  29. public synchronized GuildMusicManager getGuildMusicManager(Guild guild) {
  30. long guildId = guild.getIdLong();
  31. GuildMusicManager musicManager = musicManagers.get(guildId);
  32.  
  33. if (musicManager == null) {
  34. musicManager = new GuildMusicManager(playerManager);
  35. musicManagers.put(guildId, musicManager);
  36. }
  37.  
  38. guild.getAudioManager().setSendingHandler(musicManager.getSendHandler());
  39.  
  40. return musicManager;
  41. }
  42.  
  43. public void loadAndPlay(TextChannel channel, String trackUrl) {
  44. GuildMusicManager musicManager = getGuildMusicManager(channel.getGuild());
  45.  
  46. playerManager.loadItemOrdered(musicManager, trackUrl, new AudioLoadResultHandler() {
  47. @Override
  48. public void trackLoaded(AudioTrack track) {
  49. channel.sendMessage("Adding to queue " + track.getInfo().title).queue();
  50.  
  51. play(musicManager, track);
  52. }
  53.  
  54. @Override
  55. public void playlistLoaded(AudioPlaylist playlist) {
  56. AudioTrack firstTrack = playlist.getSelectedTrack();
  57.  
  58. if (firstTrack == null) {
  59. firstTrack = playlist.getTracks().get(0);
  60. }
  61.  
  62. channel.sendMessage("Adding to queue " + firstTrack.getInfo().title + " (first track of playlist " + playlist.getName() + ")").queue();
  63.  
  64. play(musicManager, firstTrack);
  65. }
  66.  
  67. @Override
  68. public void noMatches() {
  69. channel.sendMessage("Nothing found by " + trackUrl).queue();
  70. }
  71.  
  72. @Override
  73. public void loadFailed(FriendlyException exception) {
  74. channel.sendMessage("Could not play: " + exception.getMessage()).queue();
  75. }
  76. });
  77.  
  78. }
  79.  
  80. private void play(GuildMusicManager musicManager, AudioTrack track) {
  81. musicManager.scheduler.queue(track);
  82. }
  83.  
  84. public static synchronized PlayerManager getInstance() {
  85. if (INSTANCE == null) {
  86. INSTANCE = new PlayerManager();
  87. }
  88.  
  89. return INSTANCE;
  90. }
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement