All Downloads are FREE. Search and download functionalities are using the official Maven repository.

main.dev.arbjerg.lavalink.api.IPlayer.kt Maven / Gradle / Ivy

package dev.arbjerg.lavalink.api

import com.sedmelluq.discord.lavaplayer.player.AudioPlayer
import com.sedmelluq.discord.lavaplayer.track.AudioTrack
import kotlin.time.Duration

/**
 * Represents an audio player for a specific guild. Contains track data and is used for controlling playback.
 */
interface IPlayer {
    /**
     * @return the underlying Lavaplayer player
     */
    val audioPlayer: AudioPlayer

    /**
     * The currently playing track if any.
     */
    val track: AudioTrack?

    /**
     * The guild which this player belongs to. Immutable
     */
    val guildId: Long

    /**
     * The WebSocket this player belongs to
     */
    val socketContext: ISocketContext

    /**
     * Whether the player is trying to produce audio.
     */
    val isPlaying: Boolean

    /**
     * Starts playing [track], potentially replacing an existing one.
     */
    fun play(track: AudioTrack)

    /**
     * Stops playing the current track, if any.
     */
    fun stop()

    /**
     * Sets the pause state to [pause].
     */
    fun setPause(pause: Boolean)

    /**
     * Seeks to [position].
     *
     * @param position the new position of the current track in milliseconds
     * @throws RuntimeException if not playing anything
     */
    fun seekTo(position: Long)

    /**
     * Seeks to [position].
     *
     * @throws RuntimeException if not playing anything
     */
    fun seekTo(position: Duration) = seekTo(position.inWholeMilliseconds)

    /**
     * Sets the volume to [volume].
     * @param volume in percentage 0% to 1000%
     */
    fun setVolume(volume: Int)
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy