= Condense, iterative

This commit is contained in:
Matthew Cech
2019-10-17 23:31:06 -07:00
parent a1fa8b29b2
commit 248814b9e3
2 changed files with 122 additions and 93 deletions
+85 -56
View File
@@ -7,12 +7,14 @@ import java.util.Map;
import javax.security.auth.login.LoginException; import javax.security.auth.login.LoginException;
import com.sedmelluq.discord.lavaplayer.player.AudioLoadResultHandler; import com.sedmelluq.discord.lavaplayer.player.AudioLoadResultHandler;
import com.sedmelluq.discord.lavaplayer.player.AudioPlayer;
import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager; import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager;
import com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager; import com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager;
import com.sedmelluq.discord.lavaplayer.source.AudioSourceManagers; import com.sedmelluq.discord.lavaplayer.source.AudioSourceManagers;
import com.sedmelluq.discord.lavaplayer.tools.FriendlyException; import com.sedmelluq.discord.lavaplayer.tools.FriendlyException;
import com.sedmelluq.discord.lavaplayer.track.AudioPlaylist; import com.sedmelluq.discord.lavaplayer.track.AudioPlaylist;
import com.sedmelluq.discord.lavaplayer.track.AudioTrack; import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
import com.sedmelluq.discord.lavaplayer.track.playback.AudioFrame;
import core.CharacterManager; import core.CharacterManager;
import core.CommandEnabler; import core.CommandEnabler;
@@ -31,6 +33,7 @@ import dataStructures.UserInput;
import net.dv8tion.jda.core.AccountType; import net.dv8tion.jda.core.AccountType;
import net.dv8tion.jda.core.JDA; import net.dv8tion.jda.core.JDA;
import net.dv8tion.jda.core.JDABuilder; import net.dv8tion.jda.core.JDABuilder;
import net.dv8tion.jda.core.audio.AudioSendHandler;
import net.dv8tion.jda.core.entities.Guild; import net.dv8tion.jda.core.entities.Guild;
import net.dv8tion.jda.core.entities.TextChannel; import net.dv8tion.jda.core.entities.TextChannel;
import net.dv8tion.jda.core.entities.VoiceChannel; import net.dv8tion.jda.core.entities.VoiceChannel;
@@ -47,14 +50,45 @@ import utils.GlobalLog;
@SuppressWarnings("unused") @SuppressWarnings("unused")
public class Main extends ListenerAdapter public class Main extends ListenerAdapter
{ {
public class AudioPlayerSendHandler implements AudioSendHandler
{
private final AudioPlayer audioPlayer;
private AudioFrame lastFrame;
public AudioPlayerSendHandler(AudioPlayer audioPlayer)
{
this.audioPlayer = audioPlayer;
}
@Override
public boolean canProvide()
{
lastFrame = audioPlayer.provide();
return lastFrame != null;
}
@Override public byte[] provide20MsAudio()
{
return lastFrame.getData();
}
@Override public boolean isOpus()
{
return true;
}
}
public class SmallAudio implements AudioLoadResultHandler public class SmallAudio implements AudioLoadResultHandler
{ {
private TextChannel channel; private TextChannel channel;
private Guild guild;
private GuildMusicManager manager; private GuildMusicManager manager;
private SmallAudio(TextChannel channel, GuildMusicManager manager) { private SmallAudio(TextChannel channel, Guild guild, GuildMusicManager manager)
{
this.channel = channel; this.channel = channel;
this.manager = manager; this.manager = manager;
this.guild = guild;
} }
@Override public void loadFailed(FriendlyException arg0) { } @Override public void loadFailed(FriendlyException arg0) { }
@@ -62,8 +96,22 @@ public class Main extends ListenerAdapter
@Override public void playlistLoaded(AudioPlaylist arg0) { } @Override public void playlistLoaded(AudioPlaylist arg0) { }
@Override @Override
public void trackLoaded(AudioTrack track) { public void trackLoaded(AudioTrack track)
play(channel.getGuild(), manager, track); {
connectToFirstVoiceChannel(guild.getAudioManager());
manager.scheduler.queue(track);
}
private void connectToFirstVoiceChannel(AudioManager audioManager)
{
if (!audioManager.isConnected() && !audioManager.isAttemptingToConnect())
{
for (VoiceChannel voiceChannel : audioManager.getGuild().getVoiceChannels())
{
audioManager.openAudioConnection(voiceChannel);
break;
}
}
} }
} }
@@ -80,72 +128,53 @@ public class Main extends ListenerAdapter
// Initialization and setup // Initialization and setup
public static void main(String[] args) throws InterruptedException, LoginException, Exception public static void main(String[] args) throws InterruptedException, LoginException, Exception
{ {
JDA bot = new JDABuilder(AccountType.BOT).setToken(Ref.TestToken).buildBlocking(); JDA bot = new JDABuilder(AccountType.BOT).setToken(Ref.TestToken).buildBlocking();
bot.addEventListener(new Main()); bot.addEventListener(new Main());
} }
public final AudioPlayerManager playerManager; public final AudioPlayerManager playerManager;
private final Map<Long, GuildMusicManager> musicManagers; private final Map<Long, GuildMusicManager> musicManagers;
public Main() { public Main()
this.musicManagers = new HashMap<>(); {
this.musicManagers = new HashMap<>();
this.playerManager = new DefaultAudioPlayerManager(); this.playerManager = new DefaultAudioPlayerManager();
AudioSourceManagers.registerRemoteSources(playerManager); AudioSourceManagers.registerRemoteSources(playerManager);
AudioSourceManagers.registerLocalSource(playerManager); AudioSourceManagers.registerLocalSource(playerManager);
} }
private synchronized GuildMusicManager getGuildAudioPlayer(Guild guild) { private synchronized GuildMusicManager getGuildAudioPlayer(Guild guild)
long guildId = Long.parseLong(guild.getId()); {
GuildMusicManager musicManager = musicManagers.get(guildId); long guildId = Long.parseLong(guild.getId());
GuildMusicManager musicManager = musicManagers.get(guildId);
if (musicManager == null) { if (musicManager == null) {
musicManager = new GuildMusicManager(playerManager); musicManager = new GuildMusicManager(playerManager);
musicManagers.put(guildId, musicManager); musicManagers.put(guildId, musicManager);
} }
guild.getAudioManager().setSendingHandler(musicManager.getSendHandler()); guild.getAudioManager().setSendingHandler(musicManager.getSendHandler());
return musicManager; return musicManager;
} }
@Override @Override
public void onGuildMessageReceived(GuildMessageReceivedEvent event) public void onGuildMessageReceived(GuildMessageReceivedEvent event)
{ {
if (event.getMessage().getContentRaw().contains("!play")) if(event.getMessage().getContentRaw().contains("!hasan"))
{ {
final TextChannel channel = event.getChannel(); final TextChannel channel = event.getChannel();
final Guild guild = channel.getGuild(); final Guild guild = channel.getGuild();
channel.sendMessage("Doing something..."); GuildMusicManager musicManager = getGuildAudioPlayer(guild);
playerManager.loadItemOrdered(musicManager, "https://www.youtube.com/watch?v=qL-JCVA22Lo", new SmallAudio(channel, guild, musicManager));
}
GuildMusicManager musicManager = getGuildAudioPlayer(guild); super.onGuildMessageReceived(event);
connectToFirstVoiceChannel(guild.getAudioManager()); }
playerManager.loadItemOrdered(musicManager, "https://www.youtube.com/watch?v=qL-JCVA22Lo", new SmallAudio(channel, musicManager));
}
super.onGuildMessageReceived(event);
}
private void play(Guild guild, GuildMusicManager musicManager, AudioTrack track) {
connectToFirstVoiceChannel(guild.getAudioManager());
musicManager.scheduler.queue(track);
}
private static void connectToFirstVoiceChannel(AudioManager audioManager) {
if (!audioManager.isConnected() && !audioManager.isAttemptingToConnect()) {
for (VoiceChannel voiceChannel : audioManager.getGuild().getVoiceChannels()) {
audioManager.openAudioConnection(voiceChannel);
break;
}
}
}
} }
/* ---------------------------------------------------------------------------------------------------------------------------------------------------------- /* ----------------------------------------------------------------------------------------------------------------------------------------------------------
* *
* *
+22 -22
View File
@@ -12,30 +12,30 @@ import net.dv8tion.jda.core.audio.AudioSendHandler;
*/ */
public class AudioPlayerSendHandler implements AudioSendHandler public class AudioPlayerSendHandler implements AudioSendHandler
{ {
private final AudioPlayer audioPlayer; private final AudioPlayer audioPlayer;
private AudioFrame lastFrame; private AudioFrame lastFrame;
public AudioPlayerSendHandler(AudioPlayer audioPlayer) public AudioPlayerSendHandler(AudioPlayer audioPlayer)
{ {
this.audioPlayer = audioPlayer; this.audioPlayer = audioPlayer;
} }
@Override @Override
public boolean canProvide() public boolean canProvide()
{ {
lastFrame = audioPlayer.provide(); lastFrame = audioPlayer.provide();
return lastFrame != null; return lastFrame != null;
} }
@Override @Override
public byte[] provide20MsAudio() public byte[] provide20MsAudio()
{ {
return lastFrame.getData(); return lastFrame.getData();
} }
@Override @Override
public boolean isOpus() public boolean isOpus()
{ {
return true; return true;
} }
} }