From 11dcda49fd200a02ad4de930988b9ac57fda3d81 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Fri, 7 Oct 2022 16:41:54 -0700 Subject: [PATCH] Fixed supported-protocols not working with groups --- .../queue/common/QueueManagerImpl.java | 112 ++++++++++-------- 1 file changed, 60 insertions(+), 52 deletions(-) diff --git a/common/src/main/java/us/ajg0702/queue/common/QueueManagerImpl.java b/common/src/main/java/us/ajg0702/queue/common/QueueManagerImpl.java index 7b15d26..aef47cc 100644 --- a/common/src/main/java/us/ajg0702/queue/common/QueueManagerImpl.java +++ b/common/src/main/java/us/ajg0702/queue/common/QueueManagerImpl.java @@ -40,7 +40,7 @@ public class QueueManagerImpl implements QueueManager { List servers = main.getPlatformMethods().getServers(); for(AdaptedServer server : servers) { - QueueServer previousServer = main.getQueueManager().findServer(server.getName()); + QueueServer previousServer = findServer(server.getName()); List previousPlayers = previousServer == null ? new ArrayList<>() : previousServer.getQueue(); if(previousPlayers.size() > 0) { main.getLogger().info("Adding "+previousPlayers.size()+" players back to the queue for "+server.getName()); @@ -53,6 +53,54 @@ public class QueueManagerImpl implements QueueManager { result.add(queueServer); } + List groupsRaw = main.getConfig().getStringList("server-groups"); + for(String groupRaw : groupsRaw) { + if(groupRaw.isEmpty()) { + main.getLogger().warning("Empty group string! If you dont want server groups, set server-groups like this: server-groups: []"); + continue; + } + + if(!groupRaw.contains(":")) { + main.getLogger().warning("Incorrect formatting! Each server group needs to have a name and a list of servers seperated by a colon (:)."); + continue; + } + + String groupName = groupRaw.split(":")[0]; + String[] serversraw = groupRaw.split(":")[1].split(","); + + if(findServer(groupName, result) != null) { + main.getLogger().warning("The name of a group ('"+groupName+"') cannot be the same as the name of a server!"); + continue; + } + + List groupServers = new ArrayList<>(); + + for(String serverraw : serversraw) { + QueueServer found = findServer(serverraw, result); + if(found == null) { + main.getLogger().warning("Could not find server named '"+serverraw+"' in servergroup '"+groupName+"'!"); + continue; + } + if(found.isGroup()) continue; + + groupServers.add(found.getServers().get(0)); + } + + if(groupServers.size() == 0) { + main.getLogger().warning("Server group '"+groupName+"' has no servers! Ignoring it."); + continue; + } + + + QueueServer previousServer = main.getQueueManager().findServer(groupName); + List previousPlayers = previousServer == null ? new ArrayList<>() : previousServer.getQueue(); + if(previousPlayers.size() > 0) { + main.getLogger().info("Adding "+previousPlayers.size()+" players back to the queue for "+groupName); + } + + result.add(new QueueServerImpl(groupName, main, groupServers, previousPlayers)); + } + List supportedProtocolsRaw = main.getConfig().getStringList("supported-protocols"); for(String supportedProtocolsString : supportedProtocolsRaw) { String[] parts = supportedProtocolsString.split(":"); @@ -73,13 +121,20 @@ public class QueueManagerImpl implements QueueManager { } for(String serverName : serversRaw.split(",")) { + boolean found = false; for(QueueServer server : result) { if(serverName.equalsIgnoreCase(server.getName())) { server.setSupportedProtocols(protocols); + found = true; + Debug.info("Applied " + protocols + " to " + server.getName() + "(" + serverName + ")"); break; } } + if(!found) { + Debug.info("Found no server named " + serverName); + } } + } return result; @@ -283,58 +338,7 @@ public class QueueManagerImpl implements QueueManager { main.getLogger().severe("[MAN] Config is null"); } - List oldServers = ImmutableList.copyOf(servers); - servers = new CopyOnWriteArrayList<>(buildServers()); - - List groupsRaw = main.getConfig().getStringList("server-groups"); - for(String groupRaw : groupsRaw) { - if(groupRaw.isEmpty()) { - main.getLogger().warning("Empty group string! If you dont want server groups, set server-groups like this: server-groups: []"); - continue; - } - - if(!groupRaw.contains(":")) { - main.getLogger().warning("Incorrect formatting! Each server group needs to have a name and a list of servers seperated by a colon (:)."); - continue; - } - - String groupName = groupRaw.split(":")[0]; - String[] serversraw = groupRaw.split(":")[1].split(","); - - if(findServer(groupName) != null) { - main.getLogger().warning("The name of a group ('"+groupName+"') cannot be the same as the name of a server!"); - continue; - } - - List groupServers = new ArrayList<>(); - - for(String serverraw : serversraw) { - QueueServer found = findServer(serverraw); - if(found == null) { - main.getLogger().warning("Could not find server named '"+serverraw+"' in servergroup '"+groupName+"'!"); - continue; - } - if(found.isGroup()) continue; - - groupServers.add(found.getServers().get(0)); - } - - if(groupServers.size() == 0) { - main.getLogger().warning("Server group '"+groupName+"' has no servers! Ignoring it."); - continue; - } - - - final List previousPlayers = new ArrayList<>(); - oldServers.forEach(queueServer -> { - if(queueServer.getName().equals(groupName)) { - previousPlayers.addAll(queueServer.getQueue()); - } - }); - - this.servers.add(new QueueServerImpl(groupName, main, groupServers, previousPlayers)); - } } @Override @@ -516,6 +520,10 @@ public class QueueManagerImpl implements QueueManager { @Override public QueueServer findServer(String name) { + return findServer(name, servers); + } + + public QueueServer findServer(String name, List servers) { for(QueueServer server : servers) { if(server == null) continue; if(server.getName().equalsIgnoreCase(name)) {