Fix player being removed before allow-group-requeue could work
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package us.ajg0702.queue.api.players;
|
package us.ajg0702.queue.api.players;
|
||||||
|
|
||||||
import us.ajg0702.queue.api.queues.QueueServer;
|
import us.ajg0702.queue.api.queues.QueueServer;
|
||||||
|
import us.ajg0702.queue.api.server.AdaptedServer;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@@ -68,4 +69,10 @@ public interface QueuePlayer {
|
|||||||
* @return the max number of seconds this player can be offline before being removed from the queue
|
* @return the max number of seconds this player can be offline before being removed from the queue
|
||||||
*/
|
*/
|
||||||
int getMaxOfflineTime();
|
int getMaxOfflineTime();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the server that the player was in when they joined the queue
|
||||||
|
* @return the server that the player was in when they joined the queue
|
||||||
|
*/
|
||||||
|
AdaptedServer getInitialServer();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -626,7 +626,9 @@ public class QueueManagerImpl implements QueueManager {
|
|||||||
|
|
||||||
// If the first person int the queue is offline or already in the server, find the next online player in the queue
|
// If the first person int the queue is offline or already in the server, find the next online player in the queue
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while((nextPlayer == null || server.getServerNames().contains(nextPlayer.getServerName())) && i < server.getQueue().size()) {
|
List<String> excludableServers = new ArrayList<>(server.getServerNames());
|
||||||
|
if(nextQueuePlayer.getInitialServer() != null) excludableServers.remove(nextQueuePlayer.getInitialServer().getName());
|
||||||
|
while((nextPlayer == null || excludableServers.contains(nextPlayer.getServerName())) && i < server.getQueue().size()) {
|
||||||
if(nextPlayer != null) { // Remove them if they are already in the server
|
if(nextPlayer != null) { // Remove them if they are already in the server
|
||||||
server.removePlayer(nextQueuePlayer);
|
server.removePlayer(nextQueuePlayer);
|
||||||
if(server.getQueue().size() > i) {
|
if(server.getQueue().size() > i) {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
import us.ajg0702.queue.api.players.AdaptedPlayer;
|
import us.ajg0702.queue.api.players.AdaptedPlayer;
|
||||||
import us.ajg0702.queue.api.players.QueuePlayer;
|
import us.ajg0702.queue.api.players.QueuePlayer;
|
||||||
import us.ajg0702.queue.api.queues.QueueServer;
|
import us.ajg0702.queue.api.queues.QueueServer;
|
||||||
|
import us.ajg0702.queue.api.server.AdaptedServer;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@@ -21,6 +22,8 @@ public class QueuePlayerImpl implements QueuePlayer {
|
|||||||
|
|
||||||
private final int maxOfflineTime;
|
private final int maxOfflineTime;
|
||||||
|
|
||||||
|
private final AdaptedServer initialServer;
|
||||||
|
|
||||||
public int lastPosition;
|
public int lastPosition;
|
||||||
|
|
||||||
public QueuePlayerImpl(UUID uuid, String name, QueueServer server, int highestPriority, int maxOfflineTime) {
|
public QueuePlayerImpl(UUID uuid, String name, QueueServer server, int highestPriority, int maxOfflineTime) {
|
||||||
@@ -42,6 +45,8 @@ public class QueuePlayerImpl implements QueuePlayer {
|
|||||||
|
|
||||||
this.maxOfflineTime = maxOfflineTime;
|
this.maxOfflineTime = maxOfflineTime;
|
||||||
|
|
||||||
|
initialServer = player != null ? player.getCurrentServer() : null;
|
||||||
|
|
||||||
lastPosition = getPosition();
|
lastPosition = getPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -106,6 +111,11 @@ public class QueuePlayerImpl implements QueuePlayer {
|
|||||||
return maxOfflineTime;
|
return maxOfflineTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AdaptedServer getInitialServer() {
|
||||||
|
return initialServer;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private long leaveTime = 0;
|
private long leaveTime = 0;
|
||||||
public void setLeaveTime(long leaveTime) {
|
public void setLeaveTime(long leaveTime) {
|
||||||
|
|||||||
Reference in New Issue
Block a user