Added manual-max-players to the config, which allows you to set a max player count for servers/groups

This commit is contained in:
ajgeiss0702
2023-07-31 17:53:28 -07:00
parent f3349426a2
commit 7ff604f005
9 changed files with 159 additions and 52 deletions
@@ -61,12 +61,10 @@ public interface Logic {
}
if(fulljoinPriority > 0) {
if(server.isFull() && (server.canJoinFull(player) ||
(
player.hasPermission("ajqueue.make-room") &&
AjQueueAPI.getInstance().getConfig().getBoolean("enable-make-room-permission")
)
)) {
boolean hasMakeRoom = player.hasPermission("ajqueue.make-room") && AjQueueAPI.getInstance().getConfig().getBoolean("enable-make-room-permission");
if(
(server.isFull() && (server.canJoinFull(player) || hasMakeRoom)) ||
(queueServer.isManuallyFull() && (AdaptedServer.canJoinFull(player, queueServer.getName()) || hasMakeRoom))) {
highest = Math.max(highest, fulljoinPriority);
}
}
@@ -4,9 +4,7 @@ import com.google.common.collect.ImmutableList;
import us.ajg0702.queue.api.players.AdaptedPlayer;
import us.ajg0702.queue.api.players.QueuePlayer;
import us.ajg0702.queue.api.server.AdaptedServer;
import us.ajg0702.queue.api.server.AdaptedServerPing;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
@@ -69,6 +67,18 @@ public interface QueueServer {
*/
boolean isJoinable(AdaptedPlayer p);
/**
* Gets the manually-set max player count for this server/group
* @return The manually-set max player count
*/
int getManualMaxPlayers();
/**
* Checks if the total number of players in this server/group is above the manually-set max player count
* @return If the server is at or above the manually-set player limit
*/
boolean isManuallyFull();
/**
* Pauses or unpauses a server
* @param paused true = paused, false = unpaused
@@ -1,5 +1,6 @@
package us.ajg0702.queue.api.server;
import us.ajg0702.queue.api.AjQueueAPI;
import us.ajg0702.queue.api.players.AdaptedPlayer;
import us.ajg0702.queue.api.util.Handle;
import us.ajg0702.queue.api.util.QueueLogger;
@@ -52,7 +53,20 @@ public interface AdaptedServer extends Handle {
*/
int getOfflineTime();
boolean canJoinFull(AdaptedPlayer player);
default boolean canJoinFull(AdaptedPlayer player) {
return canJoinFull(player, getName());
}
static boolean canJoinFull(AdaptedPlayer player, String serverName) {
if(player == null) return true;
return
player.hasPermission("ajqueue.joinfull") ||
player.hasPermission("ajqueue.joinfullserver." + serverName) ||
player.hasPermission("ajqueue.joinfullandbypassserver." + serverName) ||
player.hasPermission("ajqueue.joinfullandbypass") ||
(AjQueueAPI.getInstance().isPremium() && AjQueueAPI.getInstance().getLogic().getPermissionGetter().hasUniqueFullBypass(player, serverName))
;
}
boolean justWentOnline();