Skip to content

Commit

Permalink
Fixed supported-protocols not working with groups
Browse files Browse the repository at this point in the history
  • Loading branch information
ajgeiss0702 committed Oct 7, 2022
1 parent 404785a commit 11dcda4
Showing 1 changed file with 60 additions and 52 deletions.
112 changes: 60 additions & 52 deletions common/src/main/java/us/ajg0702/queue/common/QueueManagerImpl.java
Expand Up @@ -40,7 +40,7 @@ public List<QueueServer> buildServers() {
List<? extends AdaptedServer> servers = main.getPlatformMethods().getServers();

for(AdaptedServer server : servers) {
QueueServer previousServer = main.getQueueManager().findServer(server.getName());
QueueServer previousServer = findServer(server.getName());
List<QueuePlayer> 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());
Expand All @@ -53,6 +53,54 @@ public List<QueueServer> buildServers() {
result.add(queueServer);
}

List<String> 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<AdaptedServer> 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<QueuePlayer> 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<String> supportedProtocolsRaw = main.getConfig().getStringList("supported-protocols");
for(String supportedProtocolsString : supportedProtocolsRaw) {
String[] parts = supportedProtocolsString.split(":");
Expand All @@ -73,13 +121,20 @@ public List<QueueServer> buildServers() {
}

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;
Expand Down Expand Up @@ -283,58 +338,7 @@ public void reloadServers() {
main.getLogger().severe("[MAN] Config is null");
}

List<QueueServer> oldServers = ImmutableList.copyOf(servers);

servers = new CopyOnWriteArrayList<>(buildServers());

List<String> 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<AdaptedServer> 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<QueuePlayer> 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
Expand Down Expand Up @@ -516,6 +520,10 @@ public void updateServers() {

@Override
public QueueServer findServer(String name) {
return findServer(name, servers);
}

public QueueServer findServer(String name, List<QueueServer> servers) {
for(QueueServer server : servers) {
if(server == null) continue;
if(server.getName().equalsIgnoreCase(name)) {
Expand Down

0 comments on commit 11dcda4

Please sign in to comment.