Advertisement
Guest User

PlayerManager.java

a guest
Oct 18th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.22 KB | None | 0 0
  1. package me.music.bot.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