diff --git a/.gitignore b/.gitignore index 29837c703..32f2c2185 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,5 @@ MagicMC /Plugins/Mineplex.AntiCheat update + +Reference diff --git a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbyBalancerRepository.java b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbyBalancerRepository.java index 149f039a6..7c3ca5dda 100644 --- a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbyBalancerRepository.java +++ b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbyBalancerRepository.java @@ -17,7 +17,7 @@ public class LobbyBalancerRepository private boolean _us; private static String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS ServerStatus (id INT NOT NULL AUTO_INCREMENT, serverName VARCHAR(256), serverGroup VARCHAR(256), address VARCHAR(256), updated LONG, motd VARCHAR(256), players INT, maxPlayers INT, tps INT, ram INT, maxRam INT, PRIMARY KEY (id));"; - private static String RETRIEVE_SERVER_STATUSES = "SELECT ServerStatus.serverName, ServerStatus.address, 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 static String RETRIEVE_SERVER_STATUSES = "SELECT ServerStatus.serverName, ServerStatus.address, motd, players, maxPlayers FROM ServerStatus INNER JOIN DynamicServers ON ServerStatus.address LIKE CONCAT(DynamicServers.privateAddress, '%') WHERE DynamicServers.US = ? AND TIME_TO_SEC(TIMEDIFF(now(), ServerStatus.updated)) < 10;"; public void initialize(boolean us) { diff --git a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbySorter.java b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbySorter.java index 87ce60bf5..9dd820811 100644 --- a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbySorter.java +++ b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbySorter.java @@ -13,6 +13,12 @@ public class LobbySorter implements Comparator if (first.Players == 999) return 1; + if (first.MaxPlayers - first.Players > 10 && second.MaxPlayers - second.Players <= 10) + return -1; + + if (second.MaxPlayers - second.Players > 10 && first.MaxPlayers - first.Players <= 10) + return 1; + if (first.Players < (first.MaxPlayers / 2) && second.Players >= (second.MaxPlayers / 2)) return -1; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/account/CoreClientManager.java b/Plugins/Mineplex.Core/src/mineplex/core/account/CoreClientManager.java index 96c046204..72a0c91c6 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/account/CoreClientManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/account/CoreClientManager.java @@ -2,6 +2,8 @@ package mineplex.core.account; import java.sql.*; import java.util.HashSet; +import java.util.Iterator; +import java.util.Map.Entry; import mineplex.core.account.event.AsyncClientLoadEvent; import mineplex.core.account.event.ClientUnloadEvent; @@ -13,6 +15,8 @@ import mineplex.core.account.repository.token.ClientToken; import mineplex.core.common.Rank; import mineplex.core.common.util.Callback; import mineplex.core.common.util.NautHashMap; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; import org.bukkit.Bukkit; import org.bukkit.craftbukkit.libs.com.google.gson.Gson; @@ -223,7 +227,6 @@ public class CoreClientManager implements Listener }, name, rank, perm); } - /* @EventHandler public void cleanGlitchedClients(UpdateEvent event) { @@ -233,9 +236,16 @@ public class CoreClientManager implements Listener for (Iterator> clientIterator = _clientList.entrySet().iterator(); clientIterator.hasNext();) { Player clientPlayer = clientIterator.next().getValue().GetPlayer(); - if (clientPlayer == null || !clientPlayer.isOnline()) - clientIterator.remove(); + + if ((clientPlayer == null || !clientPlayer.isOnline()) && !_dontRemoveList.contains(clientPlayer.getName())) + { + synchronized(_clientLock) + { + clientIterator.remove(); + } + + _plugin.getServer().getPluginManager().callEvent(new ClientUnloadEvent(clientPlayer.getName())); + } } } - */ } \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java b/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java index 6f1b3e7b1..d1d9d299b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +import java.util.Map.Entry; import mineplex.core.MiniPlugin; import mineplex.core.antihack.types.*; @@ -13,7 +14,6 @@ import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilTime; import mineplex.core.portal.Portal; -import mineplex.core.punish.Category; import mineplex.core.punish.Punish; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; @@ -22,7 +22,6 @@ import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; -import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerTeleportEvent; @@ -303,4 +302,30 @@ public class AntiHack extends MiniPlugin for (Detector detector : _detectors) detector.Reset(player); } + + @EventHandler + public void cleanupPlayers(UpdateEvent event) + { + if (event.getType() != UpdateType.SLOW) + return; + + for (Iterator> playerIterator = _ignore.entrySet().iterator(); playerIterator.hasNext();) + { + Player player = playerIterator.next().getKey(); + + if (!player.isOnline() || player.isDead() || !player.isValid()) + { + playerIterator.remove(); + + _velocityEvent.remove(player); + _lastMoveEvent.remove(player); + + _offense.remove(player); + _suspicion.remove(player); + + for (Detector detector : _detectors) + detector.Reset(player); + } + } + } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java b/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java index f3e7468fd..513be0884 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java @@ -3,9 +3,7 @@ package mineplex.core.disguise; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashSet; -import java.util.Iterator; import java.util.List; -import java.util.Map.Entry; import net.minecraft.server.v1_6_R3.ChunkAddEntityEvent; import net.minecraft.server.v1_6_R3.EntityPlayer; @@ -248,24 +246,15 @@ public class DisguiseManager extends MiniPlugin implements IPacketRunnable } @EventHandler - public void clearOldDisguises(UpdateEvent event) + public void clearDisguises() { - if (event.getType() != UpdateType.SEC) - return; - - Iterator> spawnPacketMapIterator = _spawnPacketMap.entrySet().iterator(); - while (spawnPacketMapIterator.hasNext()) - { - Entry entry = spawnPacketMapIterator.next(); - - if (!entry.getValue().GetEntity().isAlive() || !entry.getValue().GetEntity().valid) - { - _movePacketMap.remove(entry.getValue().GetEntity().id); - _moveTempMap.remove(entry.getValue().GetEntity().id); - _entityDisguiseMap.remove(entry.getValue().GetEntity().getUniqueID().toString()); - spawnPacketMapIterator.remove(); - } - } + _spawnPacketMap.clear(); + _movePacketMap.clear(); + _moveTempMap.clear(); + _goingUp.clear(); + _entityDisguiseMap.clear(); + _addTempList.clear(); + _delTempList.clear(); } @EventHandler diff --git a/Plugins/Mineplex.Core/src/mineplex/core/map/Map.java b/Plugins/Mineplex.Core/src/mineplex/core/map/Map.java index d60c42d58..2854e3ede 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/map/Map.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/map/Map.java @@ -28,7 +28,7 @@ public class Map extends MiniPlugin public Map(JavaPlugin plugin) { - super("Map Manager", plugin); + super("Map", plugin); Plugin = plugin; } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusManager.java b/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusManager.java index a434e337c..f310af53f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusManager.java @@ -1,11 +1,6 @@ package mineplex.core.status; import java.io.File; -import java.net.InetAddress; -import java.net.NetworkInterface; -import java.net.UnknownHostException; -import java.util.Collections; -import java.util.Enumeration; import java.util.List; import org.bukkit.Bukkit; @@ -44,36 +39,7 @@ public class ServerStatusManager extends MiniPlugin setupConfigValues(); - String address = "localhost"; - - try - { - Enumeration nets = NetworkInterface.getNetworkInterfaces(); - - for (NetworkInterface netint : Collections.list(nets)) - { - if (netint.getDisplayName().equalsIgnoreCase("eth1")) - { - Enumeration inetAddresses = netint.getInetAddresses(); - for (InetAddress inetAddress : Collections.list(inetAddresses)) - { - if (inetAddress.getHostAddress().contains(":")) - continue; - - address = inetAddress.getHostAddress(); - break; - } - - break; - } - } - } - catch (Exception e) - { - e.printStackTrace(); - } - - System.out.println("Address : " + address); + String address = Bukkit.getServer().getIp().isEmpty() ? "localhost" : Bukkit.getServer().getIp(); _name = plugin.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 aceaedf81..d331b6c1e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusRepository.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusRepository.java @@ -20,7 +20,7 @@ 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 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 static String RETRIEVE_SERVER_STATUSES = "SELECT ServerStatus.serverName, motd, players, maxPlayers FROM ServerStatus INNER JOIN DynamicServers ON ServerStatus.address LIKE CONCAT(DynamicServers.privateAddress, '%') WHERE DynamicServers.US = ? AND TIME_TO_SEC(TIMEDIFF(now(), ServerStatus.updated)) < 10;"; private int _id = -1; private boolean _us; diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/gadgets/PaintballGun.java b/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/gadgets/PaintballGun.java index c6ff84219..019b3ea4e 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/gadgets/PaintballGun.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/gadgets/PaintballGun.java @@ -1,6 +1,7 @@ package mineplex.hub.gadget.gadgets; import java.util.HashSet; +import java.util.Iterator; import org.bukkit.Effect; import org.bukkit.Location; @@ -22,6 +23,8 @@ import mineplex.core.common.util.F; import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilPlayer; import mineplex.core.recharge.Recharge; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; import mineplex.hub.gadget.GadgetManager; import mineplex.hub.gadget.types.ItemGadget; @@ -130,4 +133,19 @@ public class PaintballGun extends ItemGadget if (event.getCause() == TeleportCause.ENDER_PEARL) event.setCancelled(true); } + + @EventHandler + public void cleanupBalls(UpdateEvent event) + { + if (event.getType() != UpdateType.SLOW) + return; + + for (Iterator ballIterator = _balls.iterator(); ballIterator.hasNext();) + { + Projectile ball = ballIterator.next(); + + if (ball.isDead() || !ball.isValid()) + ballIterator.remove(); + } + } } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/mount/MountManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/mount/MountManager.java index fea855243..f870ab683 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/mount/MountManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/mount/MountManager.java @@ -25,7 +25,7 @@ public class MountManager extends MiniPlugin public MountManager(HubManager manager) { - super("Gadget Manager", manager.GetPlugin()); + super("Mount Manager", manager.GetPlugin()); Manager = manager; diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/tutorial/Tutorial.java b/Plugins/Mineplex.Hub/src/mineplex/hub/tutorial/Tutorial.java index d0081100f..19d6f6d37 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/tutorial/Tutorial.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/tutorial/Tutorial.java @@ -24,7 +24,7 @@ public class Tutorial extends MiniPlugin public Tutorial(HubManager manager, String name, int gems, String task) { - super("Hub Tutorial", manager.GetPlugin()); + super(task, manager.GetPlugin()); _name = name; _gems = gems; diff --git a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/DynamicServerData.java b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/DynamicServerData.java index 483cbfc36..def0da33e 100644 --- a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/DynamicServerData.java +++ b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/DynamicServerData.java @@ -11,6 +11,7 @@ public class DynamicServerData public HashMap ServerGroupCount = new HashMap(); public boolean US; + public String PrivateAddress; public void setServerGroupCount(ServerGroupData groupData, int count) { diff --git a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/Repository.java b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/Repository.java index 0266f9382..fb08ed80b 100644 --- a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/Repository.java +++ b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/Repository.java @@ -17,24 +17,26 @@ public class Repository private String _password = "y2D4atu3Pene2asw"; private static String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS ServerStatus (id INT NOT NULL AUTO_INCREMENT, serverName VARCHAR(256), serverGroup VARCHAR(256), address VARCHAR(256), updated LONG, lastTimeWithPlayers LONG, motd VARCHAR(256), players INT, maxPlayers INT, tps INT, ram INT, maxRam INT, PRIMARY KEY (id));"; - private static String RETRIEVE_OLD_SERVER_STATUSES = "SELECT ServerStatus.serverName, ServerStatus.address, motd, players, maxPlayers 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_OLD_SERVER_STATUSES = "SELECT ServerStatus.serverName, ServerStatus.address, motd, players, maxPlayers FROM ServerStatus INNER JOIN DynamicServers ON ServerStatus.address LIKE CONCAT(DynamicServers.privateAddress, '%') WHERE DynamicServers.US = false AND 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, DynamicServers.US, DynamicServers.availableCpu, DynamicServers.availableRam, 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 CREATE_DYNAMIC_TABLE = "CREATE TABLE IF NOT EXISTS DynamicServers (id INT NOT NULL AUTO_INCREMENT, serverName VARCHAR(256), address VARCHAR(256), privateAddress VARCHAR(256), US BOOLEAN NOT NULL DEFAULT 'true', PRIMARY KEY (id));"; + private static String RETRIEVE_AVAILABLE_SERVERS = "SELECT DynamicServers.serverName, DynamicServers.address, DynamicServers.privateAddress, DynamicServers.US, DynamicServers.availableCpu, DynamicServers.availableRam, 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.privateAddress, '%') 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;"; private static String DELETE_SERVER_STATUS = "DELETE FROM ServerStatus WHERE address = ? AND serverName = ?;"; + public static Connection connection; + public void initialize() { - Connection connection = null; PreparedStatement preparedStatement = null; try { Class.forName("com.mysql.jdbc.Driver"); - connection = DriverManager.getConnection(_connectionString, _userName, _password); + if (connection == null || connection.isClosed()) + connection = DriverManager.getConnection(_connectionString, _userName, _password); // Create table preparedStatement = connection.prepareStatement(CREATE_TABLE); @@ -57,29 +59,14 @@ public class Repository e.printStackTrace(); } } - - if (connection != null) - { - try - { - connection.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } } - connection = null; preparedStatement = null; try { Class.forName("com.mysql.jdbc.Driver"); - connection = DriverManager.getConnection(_connectionString, _userName, _password); - // Create table preparedStatement = connection.prepareStatement(CREATE_DYNAMIC_TABLE); preparedStatement.execute(); @@ -101,31 +88,19 @@ public class Repository e.printStackTrace(); } } - - if (connection != null) - { - try - { - connection.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } } } public List retrieveOldServerStatuses() { - Connection connection = null; ResultSet resultSet = null; PreparedStatement preparedStatement = null; List serverData = new ArrayList(); try { - connection = DriverManager.getConnection(_connectionString, _userName, _password); + if (connection == null || connection.isClosed()) + connection = DriverManager.getConnection(_connectionString, _userName, _password); preparedStatement = connection.prepareStatement(RETRIEVE_OLD_SERVER_STATUSES); resultSet = preparedStatement.executeQuery(); @@ -175,18 +150,6 @@ public class Repository e.printStackTrace(); } } - - if (connection != null) - { - try - { - connection.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } } return serverData; @@ -194,14 +157,14 @@ public class Repository public HashMap retrieveGroupStatusData() { - Connection connection = null; ResultSet resultSet = null; PreparedStatement preparedStatement = null; HashMap groupData = new HashMap(); try { - connection = DriverManager.getConnection(_connectionString, _userName, _password); + if (connection == null || connection.isClosed()) + connection = DriverManager.getConnection(_connectionString, _userName, _password); preparedStatement = connection.prepareStatement(RETRIEVE_SERVERGROUP_STATUSES); resultSet = preparedStatement.executeQuery(); @@ -257,18 +220,6 @@ public class Repository e.printStackTrace(); } } - - if (connection != null) - { - try - { - connection.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } } return groupData; @@ -276,7 +227,6 @@ public class Repository public Collection retrieveDynamicServers() { - Connection connection = null; ResultSet resultSet = null; PreparedStatement preparedStatement = null; HashMap serverMap = new HashMap(); @@ -284,7 +234,8 @@ public class Repository try { - connection = DriverManager.getConnection(_connectionString, _userName, _password); + if (connection == null || connection.isClosed()) + connection = DriverManager.getConnection(_connectionString, _userName, _password); preparedStatement = connection.prepareStatement(RETRIEVE_SERVER_GROUP_DATA); resultSet = preparedStatement.executeQuery(); @@ -317,16 +268,17 @@ public class Repository dynamicServer.Name = resultSet.getString(1); dynamicServer.Address = resultSet.getString(2); - dynamicServer.US = resultSet.getBoolean(3); - dynamicServer.AvailableCPU = resultSet.getInt(4); - dynamicServer.AvailableRAM = resultSet.getInt(5); + dynamicServer.PrivateAddress = resultSet.getString(3); + dynamicServer.US = resultSet.getBoolean(4); + dynamicServer.AvailableCPU = resultSet.getInt(5); + dynamicServer.AvailableRAM = resultSet.getInt(6); if (!serverMap.containsKey(dynamicServer.Name)) serverMap.put(dynamicServer.Name, dynamicServer); - String serverGroupName = resultSet.getString(6); + String serverGroupName = resultSet.getString(7); if (serverGroupMap.containsKey(serverGroupName)) - serverMap.get(dynamicServer.Name).setServerGroupCount(serverGroupMap.get(serverGroupName), resultSet.getInt(7)); + serverMap.get(dynamicServer.Name).setServerGroupCount(serverGroupMap.get(serverGroupName), resultSet.getInt(8)); } } catch (Exception exception) @@ -358,18 +310,6 @@ public class Repository e.printStackTrace(); } } - - if (connection != null) - { - try - { - connection.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } } return serverMap.values(); @@ -377,14 +317,15 @@ public class Repository public Collection retrieveServerGroups() { - Connection connection = null; + ResultSet resultSet = null; PreparedStatement preparedStatement = null; HashMap serverGroupMap = new HashMap(); try { - connection = DriverManager.getConnection(_connectionString, _userName, _password); + if (connection == null || connection.isClosed()) + connection = DriverManager.getConnection(_connectionString, _userName, _password); preparedStatement = connection.prepareStatement(RETRIEVE_SERVER_GROUP_DATA); resultSet = preparedStatement.executeQuery(); @@ -434,18 +375,6 @@ public class Repository e.printStackTrace(); } } - - if (connection != null) - { - try - { - connection.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } } return serverGroupMap.values(); @@ -453,12 +382,12 @@ public class Repository public void removeServerRecord(ServerStatusData serverToKill) { - Connection connection = null; PreparedStatement preparedStatement = null; try { - connection = DriverManager.getConnection(_connectionString, _userName, _password); + if (connection == null || connection.isClosed()) + connection = DriverManager.getConnection(_connectionString, _userName, _password); preparedStatement = connection.prepareStatement(DELETE_SERVER_STATUS); preparedStatement.setString(1, serverToKill.Address + ":" + serverToKill.Port); @@ -482,18 +411,6 @@ public class Repository e.printStackTrace(); } } - - if (connection != null) - { - try - { - connection.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } } } } diff --git a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerMonitor.java b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerMonitor.java index a2c489013..aa1dde8ae 100644 --- a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerMonitor.java +++ b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerMonitor.java @@ -25,6 +25,7 @@ public class ServerMonitor { System.out.println("----Old Server Status----> " + statusData.Address + ", " + statusData.Name); killServer(statusData); + //restartServer(statusData); } List dynamicServers = new ArrayList(_repository.retrieveDynamicServers()); @@ -114,7 +115,45 @@ public class ServerMonitor return bestServer; } - private static void killServer(ServerStatusData serverToKill) + private static void restartServer(final ServerStatusData serverToKill) + { + String cmd = "/home/mineplex/restartServer.sh"; + Process process = null; + + try + { + process = new ProcessBuilder(new String[] {"/bin/sh", cmd, serverToKill.Address, serverToKill.Name}).start(); + + synchronized (process) + { + process.wait(1000); + } + + BufferedReader reader=new BufferedReader(new InputStreamReader(process.getInputStream())); + String line = reader.readLine(); + + while(line != null) + { + System.out.println(line); + line=reader.readLine(); + } + } + catch (Exception e) + { + e.printStackTrace(); + } + finally + { + if (process != null) + { + process.destroy(); + } + } + + System.out.println("Sent restart command to " + serverToKill.Address + " for " + serverToKill.Name); + } + + private static void killServer(final ServerStatusData serverToKill) { String cmd = "/home/mineplex/easyRemoteKillServer.sh"; Process process = null; @@ -122,7 +161,12 @@ public class ServerMonitor try { process = new ProcessBuilder(new String[] {"/bin/sh", cmd, serverToKill.Address, serverToKill.Name}).start(); - process.wait(1000); + + synchronized (process) + { + process.wait(1000); + } + BufferedReader reader=new BufferedReader(new InputStreamReader(process.getInputStream())); String line = reader.readLine(); @@ -148,15 +192,20 @@ public class ServerMonitor System.out.println("Sent kill command to " + serverToKill.Address + " for " + serverToKill.Name); } - private static void startServer(DynamicServerData serverSpace, ServerGroupData serverGroup, int serverNum) + private static void startServer(final DynamicServerData serverSpace, final ServerGroupData serverGroup, final int serverNum) { String cmd = "/home/mineplex/easyRemoteStartServer.sh"; Process process = null; try { - process = new ProcessBuilder(new String[] {"/bin/sh", cmd, serverSpace.Address, serverGroup.ScriptName, serverGroup.Prefix + "-" + serverNum, "1", serverSpace.US ? "us" : "eu"}).start(); - process.wait(3000); + process = new ProcessBuilder(new String[] {"/bin/sh", cmd, serverSpace.Address, serverSpace.PrivateAddress, serverGroup.ScriptName, serverGroup.Prefix + "-" + serverNum, "1", serverSpace.US ? "us" : "eu"}).start(); + + synchronized (process) + { + process.wait(1000); + } + BufferedReader reader=new BufferedReader(new InputStreamReader(process.getInputStream())); String line = reader.readLine(); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java index 203d8d4c6..2d89246a3 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java @@ -196,7 +196,7 @@ public abstract class Game implements Listener _sideObjective = _scoreboard.registerNewObjective("Obj"+UtilMath.r(999999999), "dummy"); _sideObjective.setDisplaySlot(DisplaySlot.SIDEBAR); _sideObjective.setDisplayName(C.Bold + GetName()); - + //Map _files = Manager.LoadFiles(GetName()); WorldData = new WorldData(this); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameManager.java index 2789ea081..7d792bca5 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameManager.java @@ -507,6 +507,14 @@ public class GameManager implements Listener } } + @EventHandler + public void disguiseClean(GameStateChangeEvent event) + { + if (event.GetState() != GameState.Dead) + return; + + Manager.GetDisguise().clearDisguises(); + } @EventHandler