ZtereoMUSIC/src/main/java/codes/ztereohype/ztereomusic/audio/GuildMusicPlayers.java
2021-11-07 21:01:42 -06:00

46 lines
1.8 KiB
Java

package codes.ztereohype.ztereomusic.audio;
import codes.ztereohype.ztereomusic.ZtereoMUSIC;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.MessageChannel;
import net.dv8tion.jda.api.entities.VoiceChannel;
import java.util.Objects;
public class GuildMusicPlayers {
public static GuildMusicPlayer getGuildAudioPlayer(Guild guild, MessageChannel infoChannel, VoiceChannel connectedChannel, VoiceChannel requestedChannel) {
long guildId = guild.getIdLong();
boolean isInSameVC = Objects.equals(connectedChannel, requestedChannel);
// If I get called in a different vc I delete the old manager
if (!isInSameVC) {
ZtereoMUSIC.getInstance().getGuildMusicPlayerMap().remove(guildId);
}
GuildMusicPlayer musicPlayer = ZtereoMUSIC.getInstance().getGuildMusicPlayerMap().get(guildId);
if (musicPlayer == null) {
musicPlayer = new GuildMusicPlayer(ZtereoMUSIC.getInstance().getPlayerManager(), infoChannel);
ZtereoMUSIC.getInstance().getGuildMusicPlayerMap().put(guildId, musicPlayer);
guild.getAudioManager().openAudioConnection(requestedChannel);
}
guild.getAudioManager().setSendingHandler(musicPlayer.getAudioSendHandler());
return musicPlayer;
}
// stops player, disconnects from vc, and deletes the wrapper
public static void removeGuildAudioPlayer(Guild guild) {
long guildId = guild.getIdLong();
GuildMusicPlayer musicPlayer = ZtereoMUSIC.getInstance().getGuildMusicPlayerMap().get(guildId);
if (musicPlayer == null) return;
musicPlayer.stop();
guild.getAudioManager().closeAudioConnection();
//todo: remove this when will be part of disconnection listener
ZtereoMUSIC.getInstance().getGuildMusicPlayerMap().remove(guildId);
}
}