diff --git a/src/Lavalink4NET/Players/LavalinkPlayer.cs b/src/Lavalink4NET/Players/LavalinkPlayer.cs index ea4c63d5..c27bd503 100644 --- a/src/Lavalink4NET/Players/LavalinkPlayer.cs +++ b/src/Lavalink4NET/Players/LavalinkPlayer.cs @@ -39,6 +39,7 @@ public class LavalinkPlayer : ILavalinkPlayer, ILavalinkPlayerListener private volatile ITrackQueueItem? _currentItem; private volatile ITrackQueueItem? _replacedItem; private volatile ITrackQueueItem? _nextItem; + private volatile string? _nextOverridenPlayableItemIdentifier; private UpDownCounter? _previousStateCounter; private string? _previousVoiceServer; @@ -218,9 +219,10 @@ ValueTask ILavalinkPlayerListener.NotifyTrackStartedAsync(LavalinkTrack track, C ArgumentNullException.ThrowIfNull(track); var nextTrack = Interlocked.Exchange(ref _nextItem, null) ?? CurrentItem; - Debug.Assert(track.Identifier == nextTrack?.Identifier); + var nextTrackIdentifier = Interlocked.Exchange(ref _nextOverridenPlayableItemIdentifier, null) ?? nextTrack?.Identifier; + Debug.Assert(track.Identifier == nextTrackIdentifier); - CurrentItem = track.Identifier == nextTrack?.Identifier + CurrentItem = track.Identifier == nextTrackIdentifier ? nextTrack : new TrackQueueItem(new TrackReference(track)); @@ -265,7 +267,7 @@ public virtual async ValueTask PlayAsync(ITrackQueueItem trackQueueItem, TrackPl .GetPlayableTrackAsync(cancellationToken) .ConfigureAwait(false); - updateProperties.TrackData = playableTrack.ToString(); + updateProperties.TrackData = _nextOverridenPlayableItemIdentifier = playableTrack.ToString(); } else {