For sync purposes
Beginning of music player implementation
This commit is contained in:
1 parent
4c79bd5e71
commit
18befc79f8
3 files changed
+112
-1
No files matched your search
@@ -64,7 +64,11 @@
|
|||||||
<artifactId>jansi</artifactId>
|
<artifactId>jansi</artifactId>
|
||||||
<version>1.17</version>
|
<version>1.17</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.sedmelluq</groupId>
|
||||||
|
<artifactId>lavaplayer</artifactId>
|
||||||
|
<version>1.2.51</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
package netneutrality.music;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) anthorob
|
||||||
|
*
|
||||||
|
* This file is closed-source. It should not be distributed or copied in any way or form
|
||||||
|
*/
|
||||||
|
|
||||||
|
import com.sedmelluq.discord.lavaplayer.player.AudioPlayer;
|
||||||
|
import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager;
|
||||||
|
import com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager;
|
||||||
|
import com.sedmelluq.discord.lavaplayer.source.AudioSourceManagers;
|
||||||
|
import net.dv8tion.jda.core.entities.Guild;
|
||||||
|
import net.dv8tion.jda.core.managers.AudioManager;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
|
public class MusicManager {
|
||||||
|
|
||||||
|
private AudioPlayerManager playerManager = new DefaultAudioPlayerManager();
|
||||||
|
private AudioPlayer player;
|
||||||
|
private TrackScheduler scheduler;
|
||||||
|
private static Map<String, MusicManager> managers = new ConcurrentHashMap<>();
|
||||||
|
private long guildId;
|
||||||
|
|
||||||
|
private MusicManager(Guild guild) {
|
||||||
|
|
||||||
|
this.guildId = guild.getIdLong();
|
||||||
|
player = playerManager.createPlayer();
|
||||||
|
scheduler = new TrackScheduler(player);
|
||||||
|
player.addListener(scheduler);
|
||||||
|
|
||||||
|
AudioSourceManagers.registerRemoteSources(playerManager);
|
||||||
|
|
||||||
|
managers.put(guild.getId(), this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MusicManager get(Guild guild) {
|
||||||
|
if (managers.containsKey(guild.getId())) {
|
||||||
|
return managers.get(guild.getId());
|
||||||
|
} else {
|
||||||
|
return new MusicManager(guild);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
package netneutrality.music;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) anthorob
|
||||||
|
*
|
||||||
|
* This file is closed-source. It should not be distributed or copied in any way or form
|
||||||
|
*/
|
||||||
|
|
||||||
|
import com.sedmelluq.discord.lavaplayer.player.AudioPlayer;
|
||||||
|
import com.sedmelluq.discord.lavaplayer.player.event.AudioEventAdapter;
|
||||||
|
import com.sedmelluq.discord.lavaplayer.tools.FriendlyException;
|
||||||
|
import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
|
||||||
|
import com.sedmelluq.discord.lavaplayer.track.AudioTrackEndReason;
|
||||||
|
|
||||||
|
public class TrackScheduler extends AudioEventAdapter {
|
||||||
|
|
||||||
|
private AudioPlayer player;
|
||||||
|
|
||||||
|
public TrackScheduler(AudioPlayer player) {
|
||||||
|
this.player = player;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPlayerPause(AudioPlayer player) {
|
||||||
|
// Player was paused
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPlayerResume(AudioPlayer player) {
|
||||||
|
// Player was resumed
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTrackStart(AudioPlayer player, AudioTrack track) {
|
||||||
|
// A track started playing
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTrackEnd(AudioPlayer player, AudioTrack track, AudioTrackEndReason endReason) {
|
||||||
|
if (endReason.mayStartNext) {
|
||||||
|
// Start next track
|
||||||
|
}
|
||||||
|
|
||||||
|
// endReason == FINISHED: A track finished or died by an exception (mayStartNext = true).
|
||||||
|
// endReason == LOAD_FAILED: Loading of a track failed (mayStartNext = true).
|
||||||
|
// endReason == STOPPED: The player was stopped.
|
||||||
|
// endReason == REPLACED: Another track started playing while this had not finished
|
||||||
|
// endReason == CLEANUP: Player hasn't been queried for a while, if you want you can put a
|
||||||
|
// clone of this back to your queue
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTrackException(AudioPlayer player, AudioTrack track, FriendlyException exception) {
|
||||||
|
// An already playing track threw an exception (track end event will still be received separately)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTrackStuck(AudioPlayer player, AudioTrack track, long thresholdMs) {
|
||||||
|
// Audio track has been unable to provide us any audio, might want to just start a new track
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in new issue
Block a user