For sync purposes

Beginning of music player implementation
This commit is contained in:
Anthony committed 2018-02-20 06:56:45 -05:00
1 parent 4c79bd5e71
commit 18befc79f8
3 files changed
+112 -1

No files matched your search

+5 -1
View File
@@ -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
}
}