From 8982d4b47fb7420e9adb8b346dd5753d377bdb6c Mon Sep 17 00:00:00 2001 From: Sam Date: Tue, 31 Jul 2018 15:28:43 +0100 Subject: [PATCH] Remove unused queue system --- .../mineplex/hub/queue/PlayerMatchStatus.java | 13 - .../src/mineplex/hub/queue/QueueManager.java | 262 ----------------- .../mineplex/hub/queue/QueueRepository.java | 271 ------------------ .../src/mineplex/hub/queue/ui/QueuePage.java | 204 ------------- .../src/mineplex/hub/queue/ui/QueueShop.java | 48 ---- 5 files changed, 798 deletions(-) delete mode 100644 Plugins/Mineplex.Hub/src/mineplex/hub/queue/PlayerMatchStatus.java delete mode 100644 Plugins/Mineplex.Hub/src/mineplex/hub/queue/QueueManager.java delete mode 100644 Plugins/Mineplex.Hub/src/mineplex/hub/queue/QueueRepository.java delete mode 100644 Plugins/Mineplex.Hub/src/mineplex/hub/queue/ui/QueuePage.java delete mode 100644 Plugins/Mineplex.Hub/src/mineplex/hub/queue/ui/QueueShop.java diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/queue/PlayerMatchStatus.java b/Plugins/Mineplex.Hub/src/mineplex/hub/queue/PlayerMatchStatus.java deleted file mode 100644 index 94865ce63..000000000 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/queue/PlayerMatchStatus.java +++ /dev/null @@ -1,13 +0,0 @@ -package mineplex.hub.queue; - -import java.util.ArrayList; -import java.util.List; - -public class PlayerMatchStatus -{ - public int Id = -1; - public String State = "Awaiting Match"; - public int AssignedMatch = -1; - public List OtherStatuses = new ArrayList(); - public boolean Prompted = false; -} diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/queue/QueueManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/queue/QueueManager.java deleted file mode 100644 index 19334819c..000000000 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/queue/QueueManager.java +++ /dev/null @@ -1,262 +0,0 @@ -package mineplex.hub.queue; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map.Entry; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.player.PlayerQuitEvent; -import org.bukkit.plugin.java.JavaPlugin; - -import mineplex.core.MiniPlugin; -import mineplex.core.account.CoreClientManager; -import mineplex.core.common.util.NautHashMap; -import mineplex.core.donation.DonationManager; -import mineplex.core.elo.EloManager; -import mineplex.core.party.PartyManager; -import mineplex.core.updater.UpdateType; -import mineplex.core.updater.event.UpdateEvent; - -public class QueueManager extends MiniPlugin -{ - private static Object _queueLock = new Object(); - private static Object _queuePlayerListLock = new Object(); - - private EloManager _eloManager; - private PartyManager _partyManager; - private QueueRepository _repository; - private NautHashMap _queuedPlayerMatchList = new NautHashMap(); - - private HashSet _queueingPlayers = new HashSet(); - - public QueueManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager, EloManager eloManager, PartyManager partyManager) - { - super("Queue Manager", plugin); - - setupConfigValues(); - - _eloManager = eloManager; - _partyManager = partyManager; - _repository = new QueueRepository(plugin.getConfig().getBoolean("queue.us")); - } - - private void setupConfigValues() - { - try - { - getPlugin().getConfig().addDefault("queue.us", true); - getPlugin().getConfig().set("queue.us", getPlugin().getConfig().getBoolean("queue.us")); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - - public boolean isQueued(Player player) - { - synchronized (_queueLock) - { - return _queuedPlayerMatchList.containsKey(player.getName()); - } - } - - public PlayerMatchStatus getQueuedPlayerStatus(Player player) - { - synchronized (_queueLock) - { - return _queuedPlayerMatchList.get(player.getName()); - } - } - - public void queuePlayer(final int gameType, final Player...players) - { - StringBuilder stringBuilder = new StringBuilder(); - - for (Player player : players) - { - stringBuilder.append(player.getName() + ", "); - } - - final String playerList = stringBuilder.toString().substring(0, stringBuilder.length() - 2); - - // Prevent spamming it up. - synchronized (_queuePlayerListLock) - { - for (Player player : players) - { - if (_queueingPlayers.contains(player.getName())) - return; - } - - for (Player player : players) - { - _queueingPlayers.add(player.getName()); - } - } - - int eloCumulative = 0; - - for (Player player : players) - { - eloCumulative = _eloManager.getElo(player, gameType); - } - - final int elo = eloCumulative / players.length; - - Bukkit.getScheduler().runTaskAsynchronously(getPlugin(), new Runnable() - { - public void run() - { - PlayerMatchStatus matchStatus = _repository.addQueueRecord(playerList, players.length, gameType, elo); - - synchronized (_queueLock) - { - _queuedPlayerMatchList.put(players[0].getName(), matchStatus); - } - - synchronized (_queuePlayerListLock) - { - for (Player player : players) - { - _queueingPlayers.remove(player.getName()); - } - } - } - }); - } - - @EventHandler - public void removeDisconnectingPlayer(PlayerQuitEvent event) - { - synchronized (_queueLock) - { - final PlayerMatchStatus matchStatus = _queuedPlayerMatchList.remove(event.getPlayer().getName()); - - if (matchStatus != null) - { - Bukkit.getServer().getScheduler().runTaskAsynchronously(getPlugin(), new Runnable() - { - public void run() - { - _repository.deleteQueueRecord(matchStatus); - } - }); - } - } - } - - @EventHandler - public void updateQueues(UpdateEvent event) - { - if (event.getType() != UpdateType.SEC) - return; - - final NautHashMap queuedPlayerMatchCopy = new NautHashMap(); - - synchronized (_queueLock) - { - for (Entry entry : _queuedPlayerMatchList.entrySet()) - { - queuedPlayerMatchCopy.put(entry.getKey(), entry.getValue()); - } - } - - Bukkit.getScheduler().runTaskAsynchronously(getPlugin(), new Runnable() - { - public void run() - { - for (Iterator> iterator = queuedPlayerMatchCopy.entrySet().iterator(); iterator.hasNext();) - { - Entry entry = iterator.next(); - - boolean prompted = entry.getValue().Prompted; - PlayerMatchStatus newStatus = _repository.updateQueueStatus(entry.getValue().Id); - - synchronized (_queueLock) - { - // Player queue got removed due to match or he hit cancel. - if (newStatus == null) - _queuedPlayerMatchList.remove(entry.getKey()); - else - { - if (newStatus.AssignedMatch != -1) - newStatus = _repository.updateOtherPlayersMatchStatus(newStatus); - - - newStatus.Prompted = prompted; - _queuedPlayerMatchList.put(entry.getKey(), newStatus); - } - } - } - } - }); - } - - public List findPlayersNeedingPrompt() - { - List players = new ArrayList(); - - synchronized (_queueLock) - { - for (Entry entry : _queuedPlayerMatchList.entrySet()) - { - if (entry.getValue().AssignedMatch != -1 && !entry.getValue().Prompted) - { - Player player = Bukkit.getPlayer(entry.getKey()); - - if (player == null) - continue; - - players.add(player); - entry.getValue().Prompted = true; - } - } - } - - return players; - } - - public void respondToInvite(final Player player, final boolean accepted) - { - Bukkit.getScheduler().runTaskAsynchronously(getPlugin(), new Runnable() - { - public void run() - { - PlayerMatchStatus matchStatus = null; - - synchronized (_queueLock) - { - matchStatus = _queuedPlayerMatchList.get(player.getName()); - - if (!accepted) - _queuedPlayerMatchList.remove(player.getName()); - } - - if (matchStatus == null) - return; - - matchStatus.State = accepted ? "Ready" : "Denied"; - - _repository.updateState(matchStatus); - - if (!accepted) - _repository.deleteQueueRecord(matchStatus); - } - }); - } - - public EloManager getEloManager() - { - return _eloManager; - } - - public PartyManager getPartyManager() - { - return _partyManager; - } -} diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/queue/QueueRepository.java b/Plugins/Mineplex.Hub/src/mineplex/hub/queue/QueueRepository.java deleted file mode 100644 index 416f6d1ba..000000000 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/queue/QueueRepository.java +++ /dev/null @@ -1,271 +0,0 @@ -package mineplex.hub.queue; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; - -import mineplex.serverdata.database.DBPool; - -public class QueueRepository -{ - private boolean _us = true; - - private static String CREATE_ELO_QUEUE_TABLE = "CREATE TABLE IF NOT EXISTS playerQueue (id INT NOT NULL AUTO_INCREMENT, playerList VARCHAR(256), gameType INT, playerCount INT, elo INT, state VARCHAR(256), time LONG, assignedMatch INT, US BOOLEAN NOT NULL DEFAULT '1', PRIMARY KEY (id), UNIQUE INDEX name_gametype (playerList, gameType));"; - private static String SAVE_STATE_VALUE = "UPDATE playerQueue SET state = ? WHERE id = ?;"; - private static String DELETE_QUEUE_RECORD = "DELETE FROM playerQueue WHERE id = ?;"; - private static String INSERT_ACCOUNT = "INSERT INTO playerQueue (playerList, gameType, elo, state, time, playerCount, assignedMatch) VALUES (?, ?, ?, 'Awaiting Match', now(), ?, -1) ON DUPLICATE KEY UPDATE time=VALUES(time);"; - private static String RETRIEVE_MATCH_STATUS = "SELECT state, assignedMatch FROM playerQueue WHERE id = ?;"; - private static String RETRIEVE_OTHER_MATCH_STATUS = "SELECT state, playerCount FROM playerQueue WHERE assignedMatch = ? AND id != ? ORDER BY id DESC;"; - - public QueueRepository(boolean us) - { - _us = us; - - initialize(); - } - - public void initialize() - { - } - - public void deleteQueueRecord(PlayerMatchStatus matchStatus) - { - PreparedStatement preparedStatement = null; - - try (Connection connection = DBPool.getQueue().getConnection()) - { - preparedStatement = connection.prepareStatement(DELETE_QUEUE_RECORD); - - preparedStatement.setInt(1, matchStatus.Id); - - if (preparedStatement.executeUpdate() == 0) - { - System.out.println("Error deleting queue record."); - } - } - catch (Exception exception) - { - exception.printStackTrace(); - } - finally - { - if (preparedStatement != null) - { - try - { - preparedStatement.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - } - } - - public void updateState(PlayerMatchStatus matchStatus) - { - PreparedStatement preparedStatement = null; - - try (Connection connection = DBPool.getQueue().getConnection()) - { - preparedStatement = connection.prepareStatement(SAVE_STATE_VALUE); - preparedStatement.setString(1, matchStatus.State); - preparedStatement.setInt(2, matchStatus.Id); - - if (preparedStatement.executeUpdate() == 0) - { - System.out.println("Error updating state."); - } - } - catch (Exception exception) - { - exception.printStackTrace(); - } - finally - { - if (preparedStatement != null) - { - try - { - preparedStatement.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - } - } - - public PlayerMatchStatus addQueueRecord(String playerList, int playerCount, int gameType, int elo) - { - ResultSet resultSet = null; - PreparedStatement preparedStatement = null; - PlayerMatchStatus matchStatus = new PlayerMatchStatus(); - - try (Connection connection = DBPool.getQueue().getConnection()) - { - preparedStatement = connection.prepareStatement(INSERT_ACCOUNT, Statement.RETURN_GENERATED_KEYS); - preparedStatement.setString(1, playerList); - preparedStatement.setInt(2, gameType); - preparedStatement.setInt(3, elo); - //preparedStatement.setBoolean(4, _us); - preparedStatement.setInt(4, playerCount); - - preparedStatement.executeUpdate(); - resultSet = preparedStatement.getGeneratedKeys(); - - while (resultSet.next()) - { - matchStatus.Id = resultSet.getInt(1); - } - } - catch (Exception exception) - { - exception.printStackTrace(); - } - finally - { - if (preparedStatement != null) - { - try - { - preparedStatement.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - - if (resultSet != null) - { - try - { - resultSet.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - } - - return matchStatus; - } - - public PlayerMatchStatus updateQueueStatus(int id) - { - ResultSet resultSet = null; - PreparedStatement preparedStatement = null; - PlayerMatchStatus matchStatus = null; - - try (Connection connection = DBPool.getQueue().getConnection()) - { - preparedStatement = connection.prepareStatement(RETRIEVE_MATCH_STATUS); - preparedStatement.setInt(1, id); - - resultSet = preparedStatement.executeQuery(); - - while (resultSet.next()) - { - matchStatus = new PlayerMatchStatus(); - - matchStatus.Id = id; - matchStatus.State = resultSet.getString(1); - matchStatus.AssignedMatch = resultSet.getInt(2); - } - } - catch (Exception exception) - { - exception.printStackTrace(); - } - finally - { - if (preparedStatement != null) - { - try - { - preparedStatement.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - - if (resultSet != null) - { - try - { - resultSet.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - } - - return matchStatus; - } - - public PlayerMatchStatus updateOtherPlayersMatchStatus(PlayerMatchStatus matchStatus) - { - ResultSet resultSet = null; - PreparedStatement preparedStatement = null; - - try (Connection connection = DBPool.getQueue().getConnection()) - { - preparedStatement = connection.prepareStatement(RETRIEVE_OTHER_MATCH_STATUS); - preparedStatement.setInt(1, matchStatus.AssignedMatch); - preparedStatement.setInt(2, matchStatus.Id); - - resultSet = preparedStatement.executeQuery(); - matchStatus.OtherStatuses.clear(); - - while (resultSet.next()) - { - int playerCount = resultSet.getInt(2); - - for (int i = 0; i < playerCount; i++) - matchStatus.OtherStatuses.add(resultSet.getString(1)); - } - } - catch (Exception exception) - { - exception.printStackTrace(); - } - finally - { - if (preparedStatement != null) - { - try - { - preparedStatement.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - - if (resultSet != null) - { - try - { - resultSet.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - } - - return matchStatus; - } -} diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/queue/ui/QueuePage.java b/Plugins/Mineplex.Hub/src/mineplex/hub/queue/ui/QueuePage.java deleted file mode 100644 index 52e3b0bdf..000000000 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/queue/ui/QueuePage.java +++ /dev/null @@ -1,204 +0,0 @@ -package mineplex.hub.queue.ui; - -import mineplex.core.account.CoreClientManager; -import mineplex.core.donation.DonationManager; -import mineplex.core.party.Party; -import mineplex.core.shop.item.IButton; -import mineplex.core.shop.item.ShopItem; -import mineplex.core.shop.page.ShopPageBase; -import mineplex.hub.queue.PlayerMatchStatus; -import mineplex.hub.queue.QueueManager; - -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.event.inventory.ClickType; - -import java.util.List; - -public class QueuePage extends ShopPageBase -{ - private boolean _closeOnNextUpdate; - private int _circleIndex = 0; - - public QueuePage(QueueManager plugin, QueueShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, Player player) - { - super(plugin, shop, clientManager, donationManager, name, player, 54); - - buildPage(); - } - - @Override - protected void buildPage() - { - clear(); - - if (getPlugin().isQueued(getPlayer())) - { - PlayerMatchStatus matchStatus = getPlugin().getQueuedPlayerStatus(getPlayer()); - - if (matchStatus.AssignedMatch != -1) - { - if (matchStatus.State.equalsIgnoreCase("Ready")) - { - setItem(22, new ShopItem(Material.BOOK, "Waiting for players to accept.", new String[] { }, 1, false)); - - int i = 45; - - for (String state : matchStatus.OtherStatuses) - { - if (state.equalsIgnoreCase("Awaiting Confirmation")) - { - setItem(i, new ShopItem(Material.WOOL, "Waiting for reply...", new String[] { }, 1, false)); - _closeOnNextUpdate = false; - } - else if (state.equalsIgnoreCase("Denied")) - { - setItem(i, new ShopItem(Material.WOOL, (byte)14, "Denied match.", new String[] { }, 1, false, false)); - _closeOnNextUpdate = false; - } - else if (state.equalsIgnoreCase("Ready")) - { - setItem(i, new ShopItem(Material.WOOL, (byte)5, "Accepted match.", new String[] { }, 1, false, false)); - _closeOnNextUpdate = true; - } - - i++; - } - } - else - { - IButton okClicked = new IButton() - { - @Override - public void onClick(Player player, ClickType clickType) - { - OkClicked(player); - } - }; - - IButton cancelClicked = new IButton() - { - @Override - public void onClick(Player player, ClickType clickType) - { - CancelClicked(player); - } - }; - - buildSquareAt(19, new ShopItem(Material.EMERALD_BLOCK, (byte)0, ChatColor.GREEN + "OK", null, 1, false, true), okClicked); - buildSquareAt(23, new ShopItem(Material.REDSTONE_BLOCK, (byte)0, ChatColor.RED + "CANCEL", null, 1, false, true), cancelClicked);} - } - else - { - setItem(22, new ShopItem(Material.BOOK, "Looking for match...", new String[] { "Average wait time : DERP DERP DERP." }, 1, false)); - - drawCircle(); - } - } - else - { - IButton queueButton = new IButton() - { - @Override - public void onClick(Player player, ClickType clickType) - { - // TODO GAMEID? - queuePlayer(1, player); - } - }; - - addButton(22, new ShopItem(Material.BOOK, "Play", new String[]{"Click me to enter play queue."}, 1, false), queueButton); - } - } - - public void Update() - { - if (_closeOnNextUpdate) - { - getPlayer().closeInventory(); - System.out.println(this.getClass().getName() + " 138"); - return; - } - - _circleIndex++; - _circleIndex %= 3; - - buildPage(); - } - - private void queuePlayer(int gameType, Player player) - { - Party party = getPlugin().getPartyManager().getPartyByPlayer(player); - if(party == null) - { - getPlugin().queuePlayer(gameType, player); - return; - } - if(party.getOwnerName().equalsIgnoreCase(player.getName())) - { - List players = party.getMembers(); - getPlugin().queuePlayer(gameType, players.toArray(new Player[players.size()])); - } - buildPage(); - } - - protected void OkClicked(Player player) - { - getPlugin().respondToInvite(player, true); - - buildPage(); - } - - protected void CancelClicked(Player player) - { - getPlugin().respondToInvite(player, false); - - player.closeInventory(); - System.out.println(this.getClass().getName() + " 191"); - } - - private void buildSquareAt(int slot, ShopItem item, IButton button) - { - addButton(slot, item, button); - addButton(slot + 1, item, button); - addButton(slot + 2, item, button); - - slot += 9; - - addButton(slot, item, button); - addButton(slot + 1, item, button); - addButton(slot + 2, item, button); - - slot += 9; - - addButton(slot, item, button); - addButton(slot + 1, item, button); - addButton(slot + 2, item, button); - } - - private void drawCircle() - { - if (_circleIndex == 0) - { - setItem(3, new ShopItem(Material.EYE_OF_ENDER, "Beep", 1, false)); - setItem(15, new ShopItem(Material.EYE_OF_ENDER, "Beep", 1, false)); - setItem(41, new ShopItem(Material.EYE_OF_ENDER, "Beep", 1, false)); - setItem(29, new ShopItem(Material.EYE_OF_ENDER, "Beep", 1, false)); - } - else if (_circleIndex == 1) - { - setItem(4, new ShopItem(Material.EYE_OF_ENDER, "Beep", 1, false)); - setItem(24, new ShopItem(Material.EYE_OF_ENDER, "Beep", 1, false)); - setItem(40, new ShopItem(Material.EYE_OF_ENDER, "Beep", 1, false)); - setItem(20, new ShopItem(Material.EYE_OF_ENDER, "Beep", 1, false)); - } - else if (_circleIndex == 2) - { - setItem(5, new ShopItem(Material.EYE_OF_ENDER, "Beep", 1, false)); - setItem(33, new ShopItem(Material.EYE_OF_ENDER, "Beep", 1, false)); - setItem(39, new ShopItem(Material.EYE_OF_ENDER, "Beep", 1, false)); - setItem(11, new ShopItem(Material.EYE_OF_ENDER, "Beep", 1, false)); - } - } -} diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/queue/ui/QueueShop.java b/Plugins/Mineplex.Hub/src/mineplex/hub/queue/ui/QueueShop.java deleted file mode 100644 index 5d65e8c20..000000000 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/queue/ui/QueueShop.java +++ /dev/null @@ -1,48 +0,0 @@ -package mineplex.hub.queue.ui; - -import mineplex.core.account.CoreClientManager; -import mineplex.core.common.util.C; -import mineplex.core.common.util.F; -import mineplex.core.party.Party; -import mineplex.core.shop.ShopBase; -import mineplex.core.shop.page.ShopPageBase; -import mineplex.core.updater.UpdateType; -import mineplex.core.updater.event.UpdateEvent; -import mineplex.hub.queue.QueueManager; -import org.bukkit.ChatColor; -import org.bukkit.Sound; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; - -import java.util.Iterator; - -public class QueueShop extends ShopBase -{ - public QueueShop(QueueManager plugin, CoreClientManager clientManager, mineplex.core.donation.DonationManager donationManager, String name) - { - super(plugin, clientManager, donationManager, name); - } - - @Override - protected ShopPageBase> buildPagesFor(Player player) - { - return new QueuePage(getPlugin(), this, getClientManager(), getDonationManager(), " " + ChatColor.UNDERLINE + "Queuer 9001", player); - } - - @EventHandler - public void UpdatePages(UpdateEvent event) - { - if (event.getType() != UpdateType.FASTER) - return; - - for (Iterator>> iterator = getPlayerPageMap().values().iterator(); iterator.hasNext();) - { - ShopPageBase> page = iterator.next(); - - if (page instanceof QueuePage) - { - ((QueuePage)page).Update(); - } - } - } -}