mirror of
https://github.com/JonasunderscoreJones/ZtereoMUSIC.git
synced 2025-10-25 13:39:19 +02:00
62 lines
2.4 KiB
Java
62 lines
2.4 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 net.dv8tion.jda.api.managers.AudioManager;
|
|
|
|
import javax.annotation.Nullable;
|
|
|
|
public class TrackManagers {
|
|
//note: maybe make infoChannel an optional? not sure how to make this better, ask rep
|
|
@Nullable public static TrackManager getGuildTrackManager(Guild guild, @Nullable MessageChannel infoChannel) {
|
|
long guildId = guild.getIdLong();
|
|
|
|
TrackManager trackManager = ZtereoMUSIC.getInstance().getGuildTrackManagerMap().get(guildId);
|
|
|
|
if (trackManager == null) {
|
|
return null;
|
|
}
|
|
|
|
if (infoChannel != null) trackManager.setInfoChannel(infoChannel);
|
|
|
|
guild.getAudioManager().setSendingHandler(trackManager.getAudioSendHandler());
|
|
|
|
return trackManager;
|
|
}
|
|
|
|
public static TrackManager getOrCreateGuildTrackManager(Guild guild,
|
|
MessageChannel infoChannel,
|
|
VoiceChannel requestedChannel) {
|
|
long guildId = guild.getIdLong();
|
|
|
|
TrackManager trackManager = ZtereoMUSIC.getInstance().getGuildTrackManagerMap().get(guildId);
|
|
|
|
if (trackManager == null) {
|
|
trackManager = new TrackManager(ZtereoMUSIC.getInstance().getPlayerManager(), infoChannel, guild);
|
|
ZtereoMUSIC.getInstance().getGuildTrackManagerMap().put(guildId, trackManager);
|
|
guild.getAudioManager().openAudioConnection(requestedChannel);
|
|
}
|
|
|
|
trackManager.setInfoChannel(infoChannel);
|
|
|
|
guild.getAudioManager().setSendingHandler(trackManager.getAudioSendHandler());
|
|
|
|
return trackManager;
|
|
}
|
|
|
|
// stops player, disconnects from vc, and deletes the wrapper
|
|
public static void removeGuildTrackManager(Guild guild) {
|
|
long guildId = guild.getIdLong();
|
|
AudioManager audioManager = guild.getAudioManager();
|
|
TrackManager trackManager = ZtereoMUSIC.getInstance().getGuildTrackManagerMap().get(guildId);
|
|
|
|
audioManager.closeAudioConnection();
|
|
|
|
if (trackManager == null) return;
|
|
|
|
trackManager.stop();
|
|
ZtereoMUSIC.getInstance().getGuildTrackManagerMap().remove(guildId);
|
|
}
|
|
}
|