diff --git a/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusManager.java b/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusManager.java index 5d3797363..03a267f43 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusManager.java @@ -92,6 +92,7 @@ public class ServerStatusManager extends MiniPlugin plugin.getConfig().getString("serverstatus.connectionurl"), plugin.getConfig().getString("serverstatus.username"), plugin.getConfig().getString("serverstatus.password"), + plugin.getConfig().getBoolean("serverstatus.us"), _name, plugin.getConfig().getString("serverstatus.group"), address + ":" + _plugin.getServer().getPort(), event.getMaxPlayers() @@ -119,6 +120,9 @@ public class ServerStatusManager extends MiniPlugin GetPlugin().getConfig().addDefault("serverstatus.password", "tAbechAk3wR7tuTh"); GetPlugin().getConfig().set("serverstatus.password", GetPlugin().getConfig().getString("serverstatus.password")); + GetPlugin().getConfig().addDefault("serverstatus.us", true); + GetPlugin().getConfig().set("serverstatus.us", GetPlugin().getConfig().getBoolean("serverstatus.us")); + GetPlugin().getConfig().addDefault("serverstatus.name", "TEST-1"); GetPlugin().getConfig().set("serverstatus.name", GetPlugin().getConfig().getString("serverstatus.name")); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusRepository.java index fb671030d..e893088d7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusRepository.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusRepository.java @@ -20,19 +20,21 @@ public class ServerStatusRepository private static String UPDATE_PLAYER_COUNT_WITH_PLAYERS = "UPDATE ServerStatus SET updated = now(), serverName = ?, serverGroup = ?, motd = ?, players = ?, maxPlayers = ?, tps = ?, ram = ?, maxRam = ?, lastTimeWithPlayers = now() WHERE id = ?;"; private static String UPDATE_PLAYER_COUNT_WITHOUT_PLAYERS = "UPDATE ServerStatus SET updated = now(), serverName = ?, serverGroup = ?, motd = ?, players = ?, maxPlayers = ?, tps = ?, ram = ?, maxRam = ? WHERE id = ?;"; private static String RETRIEVE_ID = "SELECT id FROM ServerStatus WHERE address = ?;"; - private static String RETRIEVE_SERVER_STATUSES = "SELECT serverName, motd, players, maxPlayers FROM ServerStatus INNER JOIN DynamicServers ON ServerStatus.address LIKE CONCAT(DynamicServers.address, '%') WHERE DynamicServers.US = 'true' AND TIME_TO_SEC(TIMEDIFF(now(), ServerStatus.updated)) < 10;"; + private static String RETRIEVE_SERVER_STATUSES = "SELECT ServerStatus.serverName, motd, players, maxPlayers FROM ServerStatus INNER JOIN DynamicServers ON ServerStatus.address LIKE CONCAT(DynamicServers.address, '%') WHERE DynamicServers.US = ? AND TIME_TO_SEC(TIMEDIFF(now(), ServerStatus.updated)) < 10;"; private int _id = -1; + private boolean _us; private String _serverName; private String _serverGroup; private String _address; private int _maxPlayers = 0; - public ServerStatusRepository(String connectionUrl, String username, String password, String serverName, String serverGroup, String address, int maxPlayers) + public ServerStatusRepository(String connectionUrl, String username, String password, boolean us, String serverName, String serverGroup, String address, int maxPlayers) { _connectionString = connectionUrl; _userName = username; _password = password; + _us = us; _serverName = serverName; _serverGroup = serverGroup; _address = address; @@ -240,6 +242,8 @@ public class ServerStatusRepository connection = DriverManager.getConnection(_connectionString, _userName, _password); preparedStatement = connection.prepareStatement(RETRIEVE_SERVER_STATUSES); + preparedStatement.setBoolean(1, _us); + resultSet = preparedStatement.executeQuery(); while (resultSet.next()) diff --git a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/DynamicServerData.java b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/DynamicServerData.java index 56b25f9cd..9c8674cd9 100644 --- a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/DynamicServerData.java +++ b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/DynamicServerData.java @@ -10,6 +10,7 @@ public class DynamicServerData public int AvailableRAM = 26624; public HashMap ServerGroupCount = new HashMap(); + public boolean US; public void setServerGroupCount(ServerGroupData groupData, int count) { diff --git a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/GroupStatusData.java b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/GroupStatusData.java index 471666d49..f40d77f5b 100644 --- a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/GroupStatusData.java +++ b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/GroupStatusData.java @@ -19,7 +19,7 @@ public class GroupStatusData Players += serverStatusData.Players; MaxPlayers += serverStatusData.MaxPlayers; - if (serverStatusData.Motd.contains("Starting") || serverStatusData.Motd.contains("Recruiting") || serverStatusData.Motd.contains("Waiting") || serverStatusData.Motd.contains("Cup") || serverStatusData.Motd.isEmpty() || serverStatusData.Motd.equals("")) + if (serverStatusData.Motd != null && (serverStatusData.Motd.contains("Starting") || serverStatusData.Motd.contains("Recruiting") || serverStatusData.Motd.contains("Waiting") || serverStatusData.Motd.contains("Cup") || serverStatusData.Motd.isEmpty() || serverStatusData.Motd.equals(""))) { if (serverStatusData.Players < serverStatusData.MaxPlayers) { diff --git a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/Repository.java b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/Repository.java index 2ca8fb5c4..72755e003 100644 --- a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/Repository.java +++ b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/Repository.java @@ -5,7 +5,6 @@ import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -21,8 +20,8 @@ public class Repository private static String RETRIEVE_OLD_SERVER_STATUSES = "SELECT serverName, address, motd, players, maxPlayers FROM ServerStatus WHERE TIME_TO_SEC(TIMEDIFF(now(), ServerStatus.updated)) > 10;"; private static String CREATE_DYNAMIC_TABLE = "CREATE TABLE IF NOT EXISTS DynamicServers (id INT NOT NULL AUTO_INCREMENT, serverName VARCHAR(256), address VARCHAR(256), US BOOLEAN NOT NULL DEFAULT 'true', PRIMARY KEY (id));"; - private static String RETRIEVE_AVAILABLE_SERVERS = "SELECT DynamicServers.serverName, DynamicServers.address, ServerStatus.serverGroup, COUNT(*) As serverCount FROM DynamicServers LEFT JOIN ServerStatus ON ServerStatus.address LIKE CONCAT(DynamicServers.address, '%') WHERE DynamicServers.US = 'false' GROUP BY DynamicServers.address, ServerStatus.serverGroup;"; - private static String RETRIEVE_SERVERGROUP_STATUSES = "SELECT ServerStatus.serverName, serverGroup, ServerStatus.address, players, maxPlayers, case when TIME_TO_SEC(TIMEDIFF(now(), ServerStatus.lastTimeWithPlayers)) > 300 then 1 else 0 end as empty FROM ServerStatus INNER JOIN DynamicServers ON ServerStatus.address LIKE CONCAT(DynamicServers.address, '%') WHERE DynamicServers.US = 'false' AND TIME_TO_SEC(TIMEDIFF(now(), ServerStatus.updated)) <= 10"; + private static String RETRIEVE_AVAILABLE_SERVERS = "SELECT DynamicServers.serverName, DynamicServers.address, DynamicServers.US, ServerStatus.serverGroup, COUNT(*) As serverCount FROM DynamicServers LEFT JOIN ServerStatus ON ServerStatus.address LIKE CONCAT(DynamicServers.address, '%') WHERE DynamicServers.US = false GROUP BY DynamicServers.address, ServerStatus.serverGroup;"; + private static String RETRIEVE_SERVERGROUP_STATUSES = "SELECT ServerStatus.serverName, serverGroup, motd, ServerStatus.address, players, maxPlayers, case when TIME_TO_SEC(TIMEDIFF(now(), ServerStatus.lastTimeWithPlayers)) > 300 then 1 else 0 end as empty FROM ServerStatus INNER JOIN DynamicServers ON ServerStatus.address LIKE CONCAT(DynamicServers.address, '%') WHERE DynamicServers.US = false AND TIME_TO_SEC(TIMEDIFF(now(), ServerStatus.updated)) <= 10"; private static String RETRIEVE_SERVER_GROUP_DATA = "SELECT groupName, prefix, scriptName, requiredRam, cpuRequired, requiredTotal, requiredJoinable FROM ServerGroups;"; @@ -213,11 +212,12 @@ public class Repository serverStatusData.Name = resultSet.getString(1); String serverGroup = resultSet.getString(2); - String addressPortString = resultSet.getString(3); + serverStatusData.Motd = resultSet.getString(3); + String addressPortString = resultSet.getString(4); serverStatusData.Address = addressPortString.split(":")[0]; serverStatusData.Port = Integer.parseInt(addressPortString.split(":")[1]); - serverStatusData.Players = resultSet.getInt(4); - serverStatusData.MaxPlayers = resultSet.getInt(5); + serverStatusData.Players = resultSet.getInt(5); + serverStatusData.MaxPlayers = resultSet.getInt(6); serverStatusData.Empty = resultSet.getBoolean(7); if (!groupData.containsKey(serverGroup)) @@ -305,6 +305,9 @@ public class Repository serverGroupMap.put(serverGroupData.Name, serverGroupData); } + preparedStatement.close(); + resultSet.close(); + preparedStatement = connection.prepareStatement(RETRIEVE_AVAILABLE_SERVERS); resultSet = preparedStatement.executeQuery(); @@ -314,13 +317,14 @@ public class Repository dynamicServer.Name = resultSet.getString(1); dynamicServer.Address = resultSet.getString(2); + dynamicServer.US = resultSet.getBoolean(3); if (!serverMap.containsKey(dynamicServer.Name)) serverMap.put(dynamicServer.Name, dynamicServer); - String serverGroupName = resultSet.getString(3); + String serverGroupName = resultSet.getString(4); if (serverGroupMap.containsKey(serverGroupName)) - serverMap.get(dynamicServer.Name).setServerGroupCount(serverGroupMap.get(serverGroupName), resultSet.getInt(4)); + serverMap.get(dynamicServer.Name).setServerGroupCount(serverGroupMap.get(serverGroupName), resultSet.getInt(5)); } } catch (Exception exception) diff --git a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerMonitor.java b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerMonitor.java index d95146856..8122c2256 100644 --- a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerMonitor.java +++ b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerMonitor.java @@ -99,7 +99,7 @@ public class ServerMonitor try { - process = new ProcessBuilder(new String[] {"/bin/sh", "-x", cmd, bestServer.Address, serverGroup.ScriptName, serverGroup.Prefix + "-" + serverNum, "1"}).start(); + process = new ProcessBuilder(new String[] {"/bin/sh", "-x", cmd, bestServer.Address, serverGroup.ScriptName, serverGroup.Prefix + "-" + serverNum, "1", bestServer.US + ""}).start(); process.waitFor(); BufferedReader reader=new BufferedReader(new InputStreamReader(process.getInputStream())); String line = reader.readLine();