Add option to allow re-queueing for groups
This commit is contained in:
@@ -1,8 +1,9 @@
|
|||||||
package us.ajg0702.queue.api.queues;
|
package us.ajg0702.queue.api.queues;
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
import us.ajg0702.queue.api.players.AdaptedPlayer;
|
import us.ajg0702.queue.api.players.AdaptedPlayer;
|
||||||
import us.ajg0702.queue.api.server.AdaptedServer;
|
import us.ajg0702.queue.api.server.AdaptedServer;
|
||||||
|
|
||||||
public interface Balancer {
|
public interface Balancer {
|
||||||
AdaptedServer getIdealServer(AdaptedPlayer player);
|
AdaptedServer getIdealServer(@Nullable AdaptedPlayer player);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -188,11 +188,13 @@ public class QueueManagerImpl implements QueueManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List<AdaptedServer> notInServers = new ArrayList<>(server.getServers());
|
if(!server.isGroup() || !main.getConfig().getBoolean("allow-group-requeue")) {
|
||||||
notInServers.removeIf(adaptedServer -> !adaptedServer.getName().equals(player.getServerName()));
|
List<AdaptedServer> notInServers = new ArrayList<>(server.getServers());
|
||||||
if(notInServers.size() > 0) {
|
notInServers.removeIf(adaptedServer -> !adaptedServer.getName().equals(player.getServerName()));
|
||||||
player.sendMessage(msgs.getComponent("errors.already-connected", "SERVER:"+server.getAlias()));
|
if(notInServers.size() > 0) {
|
||||||
return false;
|
player.sendMessage(msgs.getComponent("errors.already-connected", "SERVER:"+server.getAlias()));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableList<QueueServer> beforeQueues = getPlayerQueues(player);
|
ImmutableList<QueueServer> beforeQueues = getPlayerQueues(player);
|
||||||
@@ -438,7 +440,7 @@ public class QueueManagerImpl implements QueueManager {
|
|||||||
"TIME:"+ TimeUtils.timeString(time, msgs.getString("format.time.mins"), msgs.getString("format.time.secs"))
|
"TIME:"+ TimeUtils.timeString(time, msgs.getString("format.time.mins"), msgs.getString("format.time.secs"))
|
||||||
);
|
);
|
||||||
|
|
||||||
Title title = Title.title(titleMessage, subTitleMessage, Title.Times.of(Duration.ZERO, Duration.ofSeconds(2L), Duration.ZERO));
|
Title title = Title.title(titleMessage, subTitleMessage, Title.Times.times(Duration.ZERO, Duration.ofSeconds(2L), Duration.ZERO));
|
||||||
player.showTitle(title);
|
player.showTitle(title);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -688,7 +690,7 @@ public class QueueManagerImpl implements QueueManager {
|
|||||||
"title.sending-now.subtitle",
|
"title.sending-now.subtitle",
|
||||||
"SERVER:"+server.getAlias()
|
"SERVER:"+server.getAlias()
|
||||||
),
|
),
|
||||||
Title.Times.of(Duration.ZERO, Duration.ofSeconds(2L), Duration.ZERO)
|
Title.Times.times(Duration.ZERO, Duration.ofSeconds(2L), Duration.ZERO)
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
sendingNowAntiSpam.put(nextPlayer, System.currentTimeMillis());
|
sendingNowAntiSpam.put(nextPlayer, System.currentTimeMillis());
|
||||||
|
|||||||
@@ -1,15 +1,13 @@
|
|||||||
package us.ajg0702.queue.common.queues.balancers;
|
package us.ajg0702.queue.common.queues.balancers;
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
import us.ajg0702.queue.api.players.AdaptedPlayer;
|
import us.ajg0702.queue.api.players.AdaptedPlayer;
|
||||||
import us.ajg0702.queue.api.queues.Balancer;
|
import us.ajg0702.queue.api.queues.Balancer;
|
||||||
import us.ajg0702.queue.api.queues.QueueServer;
|
import us.ajg0702.queue.api.queues.QueueServer;
|
||||||
import us.ajg0702.queue.api.server.AdaptedServer;
|
import us.ajg0702.queue.api.server.AdaptedServer;
|
||||||
import us.ajg0702.queue.api.server.AdaptedServerPing;
|
|
||||||
import us.ajg0702.queue.common.QueueMain;
|
import us.ajg0702.queue.common.QueueMain;
|
||||||
import us.ajg0702.queue.common.utils.Debug;
|
|
||||||
import us.ajg0702.utils.common.GenUtils;
|
import us.ajg0702.utils.common.GenUtils;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class DefaultBalancer implements Balancer {
|
public class DefaultBalancer implements Balancer {
|
||||||
@@ -22,7 +20,13 @@ public class DefaultBalancer implements Balancer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AdaptedServer getIdealServer(AdaptedPlayer player) {
|
public AdaptedServer getIdealServer(@Nullable AdaptedPlayer player) {
|
||||||
|
AdaptedServer alreadyConnected;
|
||||||
|
if(player == null) {
|
||||||
|
alreadyConnected = null;
|
||||||
|
} else {
|
||||||
|
alreadyConnected = player.getCurrentServer();
|
||||||
|
}
|
||||||
List<AdaptedServer> servers = server.getServers();
|
List<AdaptedServer> servers = server.getServers();
|
||||||
AdaptedServer selected = null;
|
AdaptedServer selected = null;
|
||||||
int selectednum = 0;
|
int selectednum = 0;
|
||||||
@@ -31,6 +35,7 @@ public class DefaultBalancer implements Balancer {
|
|||||||
} else {
|
} else {
|
||||||
for(AdaptedServer sv : servers) {
|
for(AdaptedServer sv : servers) {
|
||||||
if(!sv.isOnline()) continue;
|
if(!sv.isOnline()) continue;
|
||||||
|
if(sv.equals(alreadyConnected)) continue;
|
||||||
int online = sv.getPlayerCount();
|
int online = sv.getPlayerCount();
|
||||||
if(selected == null) {
|
if(selected == null) {
|
||||||
selected = sv;
|
selected = sv;
|
||||||
|
|||||||
+12
-3
@@ -1,13 +1,15 @@
|
|||||||
package us.ajg0702.queue.common.queues.balancers;
|
package us.ajg0702.queue.common.queues.balancers;
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
import us.ajg0702.queue.api.players.AdaptedPlayer;
|
import us.ajg0702.queue.api.players.AdaptedPlayer;
|
||||||
import us.ajg0702.queue.api.queues.Balancer;
|
import us.ajg0702.queue.api.queues.Balancer;
|
||||||
import us.ajg0702.queue.api.queues.QueueServer;
|
import us.ajg0702.queue.api.queues.QueueServer;
|
||||||
import us.ajg0702.queue.api.server.AdaptedServer;
|
import us.ajg0702.queue.api.server.AdaptedServer;
|
||||||
import us.ajg0702.queue.api.server.AdaptedServerPing;
|
|
||||||
import us.ajg0702.queue.common.QueueMain;
|
import us.ajg0702.queue.common.QueueMain;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class MinigameBalancer implements Balancer {
|
public class MinigameBalancer implements Balancer {
|
||||||
|
|
||||||
@@ -19,7 +21,13 @@ public class MinigameBalancer implements Balancer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AdaptedServer getIdealServer(AdaptedPlayer player) {
|
public AdaptedServer getIdealServer(@Nullable AdaptedPlayer player) {
|
||||||
|
AdaptedServer alreadyConnected;
|
||||||
|
if(player == null) {
|
||||||
|
alreadyConnected = null;
|
||||||
|
} else {
|
||||||
|
alreadyConnected = player.getCurrentServer();
|
||||||
|
}
|
||||||
List<AdaptedServer> servers = server.getServers();
|
List<AdaptedServer> servers = server.getServers();
|
||||||
if(servers.size() == 1) {
|
if(servers.size() == 1) {
|
||||||
return servers.get(0);
|
return servers.get(0);
|
||||||
@@ -30,6 +38,7 @@ public class MinigameBalancer implements Balancer {
|
|||||||
|
|
||||||
for(AdaptedServer si : svs) {
|
for(AdaptedServer si : svs) {
|
||||||
if(!si.isOnline()) continue;
|
if(!si.isOnline()) continue;
|
||||||
|
if(si.equals(alreadyConnected)) continue;
|
||||||
int online = si.getPlayerCount();
|
int online = si.getPlayerCount();
|
||||||
int max = si.getMaxPlayers();
|
int max = si.getMaxPlayers();
|
||||||
if(online < max && si.isJoinable(player)) {
|
if(online < max && si.isJoinable(player)) {
|
||||||
|
|||||||
@@ -108,6 +108,12 @@ server-groups:
|
|||||||
balancer-types:
|
balancer-types:
|
||||||
- "bedwars:minigame"
|
- "bedwars:minigame"
|
||||||
|
|
||||||
|
# If a player is in a server that is in a group and they re-queue for that group, should we allow it?
|
||||||
|
# false - prevent player from re-queueing; say "already connected" message
|
||||||
|
# true - let player re-queue; will send them to a server other than the one they're connected to
|
||||||
|
# Default: false
|
||||||
|
allow-group-requeue: false
|
||||||
|
|
||||||
|
|
||||||
# What priority should we give whitelisted players priority when the server is whitelisted?
|
# What priority should we give whitelisted players priority when the server is whitelisted?
|
||||||
# This will have no effect if the server isn't whitelisted
|
# This will have no effect if the server isn't whitelisted
|
||||||
@@ -371,4 +377,4 @@ debug: false
|
|||||||
|
|
||||||
|
|
||||||
# Don't touch this number please
|
# Don't touch this number please
|
||||||
config-version: 37
|
config-version: 38
|
||||||
|
|||||||
Reference in New Issue
Block a user