Advertisement
Guest User

Untitled

a guest
Jun 24th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.26 KB | None | 0 0
  1. public class MatchListener implements Listener {
  2.  
  3. private final Practice plugin = Practice.getInstance();
  4.  
  5. @EventHandler
  6. public void onMatchStart(MatchStartEvent event) {
  7. Match match = event.getMatch();
  8. Kit kit = match.getKit();
  9.  
  10. if (!kit.isEnabled()) {
  11. match.broadcast(ChatColor.RED + "This kit is currently disabled.");
  12. this.plugin.getMatchManager().removeMatch(match);
  13. return;
  14. }
  15.  
  16. if (kit.isBuild() || kit.isSpleef()) {
  17. if (match.getArena().getAvailableArenas().size() > 0) {
  18. match.setStandaloneArena(match.getArena().getAvailableArena());
  19. this.plugin.getArenaManager().setArenaMatchUUID(match.getStandaloneArena(), match.getMatchId());
  20. } else {
  21. match.broadcast(ChatColor.RED + "There are no arenas available at this moment.");
  22. this.plugin.getMatchManager().removeMatch(match);
  23. return;
  24. }
  25. }
  26.  
  27. Set<Player> matchPlayers = new HashSet<>();
  28.  
  29. match.getTeams().forEach(team -> team.alivePlayers().forEach(player -> {
  30. matchPlayers.add(player);
  31.  
  32. this.plugin.getMatchManager().removeMatchRequests(player.getUniqueId());
  33.  
  34. PlayerData playerData = this.plugin.getPlayerManager().getPlayerData(player.getUniqueId());
  35.  
  36. player.setAllowFlight(false);
  37. player.setFlying(false);
  38.  
  39. playerData.setCurrentMatchID(match.getMatchId());
  40. playerData.setTeamID(team.getTeamID());
  41.  
  42. playerData.setMissedPots(0);
  43. playerData.setLongestCombo(0);
  44. playerData.setCombo(0);
  45. playerData.setHits(0);
  46.  
  47. PlayerUtil.clearPlayer(player);
  48.  
  49. CustomLocation locationA = match.getStandaloneArena() != null ? match.getStandaloneArena().getA() : match.getArena().getA();
  50. CustomLocation locationB = match.getStandaloneArena() != null ? match.getStandaloneArena().getB() : match.getArena().getB();
  51. player.teleport(team.getTeamID() == 1 ? locationA.toBukkitLocation() : locationB.toBukkitLocation());
  52.  
  53. if (kit.isCombo()) {
  54. player.setMaximumNoDamageTicks(3);
  55. }
  56.  
  57. if (!match.isRedrover()) {
  58. this.plugin.getMatchManager().giveKits(player, kit);
  59.  
  60. playerData.setPlayerState(PlayerState.FIGHTING);
  61. } else {
  62. this.plugin.getMatchManager().addRedroverSpectator(player, match);
  63. }
  64. }));
  65.  
  66. matchPlayers.forEach(x -> this.plugin.getServer().getOnlinePlayers().forEach(z -> {
  67. z.hidePlayer(x);
  68. x.hidePlayer(z);
  69. }));
  70. matchPlayers.forEach(x -> matchPlayers.forEach(x::showPlayer));
  71.  
  72. new MatchRunnable(match).runTaskTimer(this.plugin, 20L, 20L);
  73. }
  74.  
  75. @EventHandler
  76. public void onMatchEnd(MatchEndEvent event) {
  77. Match match = event.getMatch();
  78. Clickable winnerClickable = new Clickable(ChatColor.GREEN + "Winner: ");
  79. Clickable loserClickable = new Clickable(ChatColor.RED + "Loser: ");
  80.  
  81. match.broadcast(ChatColor.DARK_GRAY.toString() + ChatColor.STRIKETHROUGH + "----------------------------------------------------");
  82. match.broadcast(ChatColor.GREEN + "Match Informations: ");
  83.  
  84. match.setMatchState(MatchState.ENDING);
  85. match.setWinningTeamId(event.getWinningTeam().getTeamID());
  86. match.setCountdown(4);
  87.  
  88. if (match.isFFA()) {
  89. Player winner = this.plugin.getServer().getPlayer(event.getWinningTeam().getAlivePlayers().get(0));
  90.  
  91. event.getWinningTeam().players().forEach(player -> {
  92. if (!match.hasSnapshot(player.getUniqueId())) {
  93. match.addSnapshot(player);
  94. }
  95.  
  96. if (player.getUniqueId() == winner.getUniqueId()) {
  97. winnerClickable.add(ChatColor.GRAY + player.getName() + " ", ChatColor.GRAY + "Click to view inventory", "/inventory " + match.getSnapshot(player.getUniqueId()).getSnapshotId());
  98. } else {
  99. loserClickable.add(ChatColor.GRAY + player.getName() + " ", ChatColor.GRAY + "Click to view inventory", "/inventory " + match.getSnapshot(player.getUniqueId()).getSnapshotId());
  100. }
  101.  
  102. });
  103.  
  104. match.getSnapshots().values().forEach(x -> this.plugin.getInventoryManager().addSnapshot(x));
  105.  
  106. match.broadcast(winnerClickable);
  107. match.broadcast(loserClickable);
  108. match.broadcast(ChatColor.DARK_GRAY.toString() + ChatColor.STRIKETHROUGH + "----------------------------------------------------");
  109. } else if (match.isRedrover()) {
  110. match.broadcast(ChatColor.GREEN + event.getWinningTeam().getLeaderName() + ChatColor.GRAY + " has won the redrover!");
  111. } else {
  112. Map<UUID, InventorySnapshot> inventorySnapshotMap = new LinkedHashMap<>();
  113.  
  114. match.getTeams().forEach(team -> team.players().forEach(player -> {
  115. if (!match.hasSnapshot(player.getUniqueId())) {
  116. match.addSnapshot(player);
  117. }
  118.  
  119. inventorySnapshotMap.put(player.getUniqueId(), match.getSnapshot(player.getUniqueId()));
  120.  
  121. boolean onWinningTeam = this.plugin.getPlayerManager().getPlayerData(player.getUniqueId()).getTeamID() == event.getWinningTeam().getTeamID();
  122.  
  123. if (onWinningTeam) {
  124. winnerClickable.add(ChatColor.GRAY + player.getName() + " ", ChatColor.GRAY + "Click to view inventory", "/inventory " + match.getSnapshot(player.getUniqueId()).getSnapshotId());
  125. } else {
  126. loserClickable.add(ChatColor.GRAY + player.getName() + " ", ChatColor.GRAY + "Click to view inventory", "/inventory " + match.getSnapshot(player.getUniqueId()).getSnapshotId());
  127. }
  128.  
  129. player.setMaximumNoDamageTicks(20); // Double setting the damage ticks.
  130. }));
  131. match.getSnapshots().values().forEach(x -> this.plugin.getInventoryManager().addSnapshot(x));
  132.  
  133. match.broadcast(winnerClickable + "" + loserClickable);
  134.  
  135. if (match.getType().isRanked()) {
  136. String kitName = match.getKit().getName();
  137.  
  138. Player winnerLeader = this.plugin.getServer().getPlayer(event.getWinningTeam().getPlayers().get(0));
  139. PlayerData winnerLeaderData = this.plugin.getPlayerManager().getPlayerData(winnerLeader.getUniqueId());
  140. Player loserLeader = this.plugin.getServer().getPlayer(event.getLosingTeam().getPlayers().get(0));
  141. PlayerData loserLeaderData = this.plugin.getPlayerManager().getPlayerData(loserLeader.getUniqueId());
  142.  
  143. String eloMessage;
  144.  
  145. int[] preElo = new int[2];
  146. int[] newElo = new int[2];
  147. int winnerElo = 0;
  148. int loserElo = 0;
  149. int newWinnerElo = 0;
  150. int newLoserElo = 0;
  151.  
  152. if (event.getWinningTeam().getPlayers().size() == 2) {
  153.  
  154. UUID winnerUUID = Bukkit.getPlayer(event.getWinningTeam().getLeader()) == null ? event.getWinningTeam().getPlayers().get(0) : event.getWinningTeam().getLeader();
  155. Player winnerMember = this.plugin.getServer().getPlayer(winnerUUID);
  156. PlayerData winnerMemberData = this.plugin.getPlayerManager().getPlayerData(winnerMember.getUniqueId());
  157.  
  158. UUID loserUUID = Bukkit.getPlayer(event.getLosingTeam().getLeader()) == null ? event.getLosingTeam().getPlayers().get(0) : event.getLosingTeam().getLeader();
  159. Player loserMember = this.plugin.getServer().getPlayer(loserUUID);
  160. PlayerData loserMemberData = this.plugin.getPlayerManager().getPlayerData(loserMember.getUniqueId());
  161.  
  162. winnerElo = winnerMemberData.getPartyElo(kitName);
  163. loserElo = loserMemberData.getPartyElo(kitName);
  164.  
  165. preElo[0] = winnerElo;
  166. preElo[1] = loserElo;
  167.  
  168. newWinnerElo = EloUtil.getNewRating(winnerElo, loserElo, true);
  169. newLoserElo = EloUtil.getNewRating(loserElo, winnerElo, false);
  170.  
  171. newElo[0] = newWinnerElo;
  172. newElo[1] = newLoserElo;
  173.  
  174. winnerMemberData.setPartyElo(kitName, newWinnerElo);
  175. loserMemberData.setPartyElo(kitName, newLoserElo);
  176.  
  177. eloMessage = ChatColor.GRAY + "Elo Changes: " + ChatColor.GREEN + winnerLeader.getName() + ", " + winnerMember.getName() + " +" + (newWinnerElo - winnerElo) + " (" + newWinnerElo + ") " + ChatColor.RED + loserLeader.getName() + "," + " " + loserMember.getName() + " " + " " + (newLoserElo - loserElo) + " (" + newLoserElo + ")";
  178. } else {
  179. winnerElo = winnerLeaderData.getElo(kitName);
  180. loserElo = loserLeaderData.getElo(kitName);
  181.  
  182. preElo[0] = winnerElo;
  183. preElo[1] = loserElo;
  184.  
  185. newWinnerElo = EloUtil.getNewRating(winnerElo, loserElo, true);
  186. newLoserElo = EloUtil.getNewRating(loserElo, winnerElo, false);
  187.  
  188. newElo[0] = newWinnerElo;
  189. newElo[1] = newLoserElo;
  190.  
  191. eloMessage = ChatColor.GRAY + "Elo Changes: " + ChatColor.GREEN + winnerLeader.getName() + " +" + (newWinnerElo - winnerElo) + " (" + newWinnerElo + ") " + ChatColor.RED + loserLeader.getName() + " " + (newLoserElo - loserElo) + " (" + newLoserElo + ")";
  192.  
  193. winnerLeaderData.setElo(kitName, newWinnerElo);
  194. loserLeaderData.setElo(kitName, newLoserElo);
  195.  
  196. winnerLeaderData.setWins(kitName, winnerLeaderData.getWins(kitName) + 1);
  197. loserLeaderData.setLosses(kitName, loserLeaderData.getLosses(kitName) + 1);
  198. }
  199.  
  200. match.broadcast(eloMessage);
  201. }
  202.  
  203. match.broadcast(ChatColor.DARK_GRAY.toString() + ChatColor.STRIKETHROUGH + "----------------------------------------------------");
  204.  
  205. this.plugin.getMatchManager().saveRematches(match);
  206. }
  207. }
  208. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement