Skip to content

Commit

Permalink
Add option to allow re-queueing for groups
Browse files Browse the repository at this point in the history
  • Loading branch information
ajgeiss0702 committed Jul 21, 2023
1 parent 8fe8713 commit 3910804
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 16 deletions.
3 changes: 2 additions & 1 deletion api/src/main/java/us/ajg0702/queue/api/queues/Balancer.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package us.ajg0702.queue.api.queues;

import org.jetbrains.annotations.Nullable;
import us.ajg0702.queue.api.players.AdaptedPlayer;
import us.ajg0702.queue.api.server.AdaptedServer;

public interface Balancer {
AdaptedServer getIdealServer(AdaptedPlayer player);
AdaptedServer getIdealServer(@Nullable AdaptedPlayer player);
}
Original file line number Diff line number Diff line change
Expand Up @@ -188,11 +188,13 @@ public boolean addToQueue(AdaptedPlayer player, QueueServer server) {
}
}

List<AdaptedServer> notInServers = new ArrayList<>(server.getServers());
notInServers.removeIf(adaptedServer -> !adaptedServer.getName().equals(player.getServerName()));
if(notInServers.size() > 0) {
player.sendMessage(msgs.getComponent("errors.already-connected", "SERVER:"+server.getAlias()));
return false;
if(!server.isGroup() || !main.getConfig().getBoolean("allow-group-requeue")) {
List<AdaptedServer> notInServers = new ArrayList<>(server.getServers());
notInServers.removeIf(adaptedServer -> !adaptedServer.getName().equals(player.getServerName()));
if(notInServers.size() > 0) {
player.sendMessage(msgs.getComponent("errors.already-connected", "SERVER:"+server.getAlias()));
return false;
}
}

ImmutableList<QueueServer> beforeQueues = getPlayerQueues(player);
Expand Down Expand Up @@ -438,7 +440,7 @@ public void sendTitles() {
"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);
}
}
Expand Down Expand Up @@ -688,7 +690,7 @@ public void sendPlayers(QueueServer queueServer) {
"title.sending-now.subtitle",
"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());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
package us.ajg0702.queue.common.queues.balancers;

import org.jetbrains.annotations.Nullable;
import us.ajg0702.queue.api.players.AdaptedPlayer;
import us.ajg0702.queue.api.queues.Balancer;
import us.ajg0702.queue.api.queues.QueueServer;
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.utils.Debug;
import us.ajg0702.utils.common.GenUtils;

import java.util.HashMap;
import java.util.List;

public class DefaultBalancer implements Balancer {
Expand All @@ -22,7 +20,13 @@ public DefaultBalancer(QueueServer server, QueueMain main) {
}

@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();
AdaptedServer selected = null;
int selectednum = 0;
Expand All @@ -31,6 +35,7 @@ public AdaptedServer getIdealServer(AdaptedPlayer player) {
} else {
for(AdaptedServer sv : servers) {
if(!sv.isOnline()) continue;
if(sv.equals(alreadyConnected)) continue;
int online = sv.getPlayerCount();
if(selected == null) {
selected = sv;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
package us.ajg0702.queue.common.queues.balancers;

import org.jetbrains.annotations.Nullable;
import us.ajg0702.queue.api.players.AdaptedPlayer;
import us.ajg0702.queue.api.queues.Balancer;
import us.ajg0702.queue.api.queues.QueueServer;
import us.ajg0702.queue.api.server.AdaptedServer;
import us.ajg0702.queue.api.server.AdaptedServerPing;
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 {

Expand All @@ -19,7 +21,13 @@ public MinigameBalancer(QueueServer server, QueueMain main) {
}

@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();
if(servers.size() == 1) {
return servers.get(0);
Expand All @@ -30,6 +38,7 @@ public AdaptedServer getIdealServer(AdaptedPlayer player) {

for(AdaptedServer si : svs) {
if(!si.isOnline()) continue;
if(si.equals(alreadyConnected)) continue;
int online = si.getPlayerCount();
int max = si.getMaxPlayers();
if(online < max && si.isJoinable(player)) {
Expand Down
8 changes: 7 additions & 1 deletion common/src/main/resources/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,12 @@ server-groups:
balancer-types:
- "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?
# This will have no effect if the server isn't whitelisted
Expand Down Expand Up @@ -371,4 +377,4 @@ debug: false


# Don't touch this number please
config-version: 37
config-version: 38

0 comments on commit 3910804

Please sign in to comment.