@@ -40,6 +40,16 @@ public Player(@NotNull PlayerConfiguration conf, @NotNull CacheManager.CacheConf
4040 spirc .addListener (this );
4141 }
4242
43+ private static int [] getShuffleExchanges (int size , long seed ) {
44+ int [] exchanges = new int [size - 1 ];
45+ Random rand = new Random (seed );
46+ for (int i = size - 1 ; i > 0 ; i --) {
47+ int n = rand .nextInt (i + 1 );
48+ exchanges [size - 1 - i ] = n ;
49+ }
50+ return exchanges ;
51+ }
52+
4353 public void playPause () {
4454 handlePlayPause ();
4555 }
@@ -167,16 +177,6 @@ private int getPosition() {
167177 return state .getPositionMs () + diff ;
168178 }
169179
170- private static int [] getShuffleExchanges (int size , long seed ) {
171- int [] exchanges = new int [size - 1 ];
172- Random rand = new Random (seed );
173- for (int i = size - 1 ; i > 0 ; i --) {
174- int n = rand .nextInt (i + 1 );
175- exchanges [size - 1 - i ] = n ;
176- }
177- return exchanges ;
178- }
179-
180180 private void shuffleTracks () {
181181 shuffleSeed = session .random ().nextLong ();
182182
@@ -188,9 +188,9 @@ private void shuffleTracks() {
188188
189189 int size = tracks .size () - 1 ;
190190 int [] exchanges = getShuffleExchanges (size , shuffleSeed );
191- for (int i = size - 1 ; i > 0 ; i --) {
191+ for (int i = size - 1 ; i > 1 ; i --) {
192192 int n = exchanges [size - 1 - i ];
193- Collections .swap (tracks , i , n );
193+ Collections .swap (tracks , i , n + 1 );
194194 }
195195
196196 state .clearTrack ();
@@ -206,9 +206,9 @@ private void unshuffleTracks() {
206206
207207 int size = tracks .size () - 1 ;
208208 int [] exchanges = getShuffleExchanges (size , shuffleSeed );
209- for (int i = 1 ; i < size ; i ++) {
209+ for (int i = 2 ; i < size ; i ++) {
210210 int n = exchanges [size - i - 1 ];
211- Collections .swap (tracks , i , n );
211+ Collections .swap (tracks , i , n + 1 );
212212 }
213213
214214 state .clearTrack ();
0 commit comments