Skip to content

Commit 8ec7313

Browse files
committed
Add stopTrack method to player
1 parent ef3f1c9 commit 8ec7313

File tree

4 files changed

+21
-5
lines changed

4 files changed

+21
-5
lines changed

src/main/kotlin/dev/arbjerg/lavalink/client/IUpdatablePlayer.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,12 @@ interface IUpdatablePlayer {
1212
*
1313
* @return The updated builder, useful for chaining
1414
*/
15-
fun applyTrack(track: Track): PlayerUpdateBuilder
15+
fun applyTrack(track: Track?): PlayerUpdateBuilder
16+
17+
/**
18+
* Shortcut for setting the encoded track to {@code null}. This will also clear the user data.
19+
*/
20+
fun stopTrack(): PlayerUpdateBuilder
1621

1722
/**
1823
* Sets the encoded track to be played.

src/main/kotlin/dev/arbjerg/lavalink/client/LavalinkPlayer.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,12 @@ class LavalinkPlayer(private val node: LavalinkNode, protocolPlayer: Player) : I
3333
}
3434
}
3535

36-
override fun applyTrack(track: Track) = PlayerUpdateBuilder(node, guildId)
36+
override fun applyTrack(track: Track?) = PlayerUpdateBuilder(node, guildId)
3737
.applyTrack(track)
3838

39+
override fun stopTrack() = PlayerUpdateBuilder(node, guildId)
40+
.stopTrack()
41+
3942
override fun setEncodedTrack(encodedTrack: String?) = PlayerUpdateBuilder(node, guildId)
4043
.setEncodedTrack(encodedTrack)
4144

src/main/kotlin/dev/arbjerg/lavalink/client/PlayerUpdateBuilder.kt

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,16 @@ class PlayerUpdateBuilder internal constructor(private val node: LavalinkNode, p
1919
private var state: Omissible<VoiceState> = Omissible.omitted()
2020
private var noReplace = false
2121

22-
override fun applyTrack(track: Track): PlayerUpdateBuilder {
23-
this.encodedTrack = Omissible.of(track.encoded)
24-
this.trackUserData = Omissible.of(track.userData)
22+
override fun applyTrack(track: Track?): PlayerUpdateBuilder {
23+
this.encodedTrack = Omissible.of(track?.encoded)
24+
this.trackUserData = track?.userData.toOmissible()
25+
return this
26+
}
27+
28+
override fun stopTrack(): PlayerUpdateBuilder {
29+
this.encodedTrack = Omissible.of(null)
30+
this.identifier = null.toOmissible()
31+
this.trackUserData = null.toOmissible()
2532
return this
2633
}
2734

upgrade.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ This client also uses project reactor, their docs are over at https://projectrea
1414
- `LavalinkRestClient` -> `Node`
1515
- `LavalinkLoadBalancer` -> `DefaultLoadBalancer`
1616
- `PenaltyProvider` -> `IPenaltyProvider`
17+
- `IPlayer#stopTrack` -> Set encodedTrack to `null` on the player.
1718
- Any filters -> they are in `dev.arbjerg.lavalink.protocol.v4.Filters` class.
1819

1920
If you are missing anything from here, feel free to let me know in the lavalink discord

0 commit comments

Comments
 (0)