Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class MatchListener implements Listener {
- private final Practice plugin = Practice.getInstance();
- @EventHandler
- public void onMatchStart(MatchStartEvent event) {
- Match match = event.getMatch();
- Kit kit = match.getKit();
- if (!kit.isEnabled()) {
- match.broadcast(ChatColor.RED + "This kit is currently disabled.");
- this.plugin.getMatchManager().removeMatch(match);
- return;
- }
- if (kit.isBuild() || kit.isSpleef()) {
- if (match.getArena().getAvailableArenas().size() > 0) {
- match.setStandaloneArena(match.getArena().getAvailableArena());
- this.plugin.getArenaManager().setArenaMatchUUID(match.getStandaloneArena(), match.getMatchId());
- } else {
- match.broadcast(ChatColor.RED + "There are no arenas available at this moment.");
- this.plugin.getMatchManager().removeMatch(match);
- return;
- }
- }
- Set<Player> matchPlayers = new HashSet<>();
- match.getTeams().forEach(team -> team.alivePlayers().forEach(player -> {
- matchPlayers.add(player);
- this.plugin.getMatchManager().removeMatchRequests(player.getUniqueId());
- PlayerData playerData = this.plugin.getPlayerManager().getPlayerData(player.getUniqueId());
- player.setAllowFlight(false);
- player.setFlying(false);
- playerData.setCurrentMatchID(match.getMatchId());
- playerData.setTeamID(team.getTeamID());
- playerData.setMissedPots(0);
- playerData.setLongestCombo(0);
- playerData.setCombo(0);
- playerData.setHits(0);
- PlayerUtil.clearPlayer(player);
- CustomLocation locationA = match.getStandaloneArena() != null ? match.getStandaloneArena().getA() : match.getArena().getA();
- CustomLocation locationB = match.getStandaloneArena() != null ? match.getStandaloneArena().getB() : match.getArena().getB();
- player.teleport(team.getTeamID() == 1 ? locationA.toBukkitLocation() : locationB.toBukkitLocation());
- if (kit.isCombo()) {
- player.setMaximumNoDamageTicks(3);
- }
- if (!match.isRedrover()) {
- this.plugin.getMatchManager().giveKits(player, kit);
- playerData.setPlayerState(PlayerState.FIGHTING);
- } else {
- this.plugin.getMatchManager().addRedroverSpectator(player, match);
- }
- }));
- matchPlayers.forEach(x -> this.plugin.getServer().getOnlinePlayers().forEach(z -> {
- z.hidePlayer(x);
- x.hidePlayer(z);
- }));
- matchPlayers.forEach(x -> matchPlayers.forEach(x::showPlayer));
- new MatchRunnable(match).runTaskTimer(this.plugin, 20L, 20L);
- }
- @EventHandler
- public void onMatchEnd(MatchEndEvent event) {
- Match match = event.getMatch();
- Clickable winnerClickable = new Clickable(ChatColor.GREEN + "Winner: ");
- Clickable loserClickable = new Clickable(ChatColor.RED + "Loser: ");
- match.broadcast(ChatColor.DARK_GRAY.toString() + ChatColor.STRIKETHROUGH + "----------------------------------------------------");
- match.broadcast(ChatColor.GREEN + "Match Informations: ");
- match.setMatchState(MatchState.ENDING);
- match.setWinningTeamId(event.getWinningTeam().getTeamID());
- match.setCountdown(4);
- if (match.isFFA()) {
- Player winner = this.plugin.getServer().getPlayer(event.getWinningTeam().getAlivePlayers().get(0));
- event.getWinningTeam().players().forEach(player -> {
- if (!match.hasSnapshot(player.getUniqueId())) {
- match.addSnapshot(player);
- }
- if (player.getUniqueId() == winner.getUniqueId()) {
- winnerClickable.add(ChatColor.GRAY + player.getName() + " ", ChatColor.GRAY + "Click to view inventory", "/inventory " + match.getSnapshot(player.getUniqueId()).getSnapshotId());
- } else {
- loserClickable.add(ChatColor.GRAY + player.getName() + " ", ChatColor.GRAY + "Click to view inventory", "/inventory " + match.getSnapshot(player.getUniqueId()).getSnapshotId());
- }
- });
- match.getSnapshots().values().forEach(x -> this.plugin.getInventoryManager().addSnapshot(x));
- match.broadcast(winnerClickable);
- match.broadcast(loserClickable);
- match.broadcast(ChatColor.DARK_GRAY.toString() + ChatColor.STRIKETHROUGH + "----------------------------------------------------");
- } else if (match.isRedrover()) {
- match.broadcast(ChatColor.GREEN + event.getWinningTeam().getLeaderName() + ChatColor.GRAY + " has won the redrover!");
- } else {
- Map<UUID, InventorySnapshot> inventorySnapshotMap = new LinkedHashMap<>();
- match.getTeams().forEach(team -> team.players().forEach(player -> {
- if (!match.hasSnapshot(player.getUniqueId())) {
- match.addSnapshot(player);
- }
- inventorySnapshotMap.put(player.getUniqueId(), match.getSnapshot(player.getUniqueId()));
- boolean onWinningTeam = this.plugin.getPlayerManager().getPlayerData(player.getUniqueId()).getTeamID() == event.getWinningTeam().getTeamID();
- if (onWinningTeam) {
- winnerClickable.add(ChatColor.GRAY + player.getName() + " ", ChatColor.GRAY + "Click to view inventory", "/inventory " + match.getSnapshot(player.getUniqueId()).getSnapshotId());
- } else {
- loserClickable.add(ChatColor.GRAY + player.getName() + " ", ChatColor.GRAY + "Click to view inventory", "/inventory " + match.getSnapshot(player.getUniqueId()).getSnapshotId());
- }
- player.setMaximumNoDamageTicks(20); // Double setting the damage ticks.
- }));
- match.getSnapshots().values().forEach(x -> this.plugin.getInventoryManager().addSnapshot(x));
- match.broadcast(winnerClickable + "" + loserClickable);
- if (match.getType().isRanked()) {
- String kitName = match.getKit().getName();
- Player winnerLeader = this.plugin.getServer().getPlayer(event.getWinningTeam().getPlayers().get(0));
- PlayerData winnerLeaderData = this.plugin.getPlayerManager().getPlayerData(winnerLeader.getUniqueId());
- Player loserLeader = this.plugin.getServer().getPlayer(event.getLosingTeam().getPlayers().get(0));
- PlayerData loserLeaderData = this.plugin.getPlayerManager().getPlayerData(loserLeader.getUniqueId());
- String eloMessage;
- int[] preElo = new int[2];
- int[] newElo = new int[2];
- int winnerElo = 0;
- int loserElo = 0;
- int newWinnerElo = 0;
- int newLoserElo = 0;
- if (event.getWinningTeam().getPlayers().size() == 2) {
- UUID winnerUUID = Bukkit.getPlayer(event.getWinningTeam().getLeader()) == null ? event.getWinningTeam().getPlayers().get(0) : event.getWinningTeam().getLeader();
- Player winnerMember = this.plugin.getServer().getPlayer(winnerUUID);
- PlayerData winnerMemberData = this.plugin.getPlayerManager().getPlayerData(winnerMember.getUniqueId());
- UUID loserUUID = Bukkit.getPlayer(event.getLosingTeam().getLeader()) == null ? event.getLosingTeam().getPlayers().get(0) : event.getLosingTeam().getLeader();
- Player loserMember = this.plugin.getServer().getPlayer(loserUUID);
- PlayerData loserMemberData = this.plugin.getPlayerManager().getPlayerData(loserMember.getUniqueId());
- winnerElo = winnerMemberData.getPartyElo(kitName);
- loserElo = loserMemberData.getPartyElo(kitName);
- preElo[0] = winnerElo;
- preElo[1] = loserElo;
- newWinnerElo = EloUtil.getNewRating(winnerElo, loserElo, true);
- newLoserElo = EloUtil.getNewRating(loserElo, winnerElo, false);
- newElo[0] = newWinnerElo;
- newElo[1] = newLoserElo;
- winnerMemberData.setPartyElo(kitName, newWinnerElo);
- loserMemberData.setPartyElo(kitName, newLoserElo);
- eloMessage = ChatColor.GRAY + "Elo Changes: " + ChatColor.GREEN + winnerLeader.getName() + ", " + winnerMember.getName() + " +" + (newWinnerElo - winnerElo) + " (" + newWinnerElo + ") " + ChatColor.RED + loserLeader.getName() + "," + " " + loserMember.getName() + " " + " " + (newLoserElo - loserElo) + " (" + newLoserElo + ")";
- } else {
- winnerElo = winnerLeaderData.getElo(kitName);
- loserElo = loserLeaderData.getElo(kitName);
- preElo[0] = winnerElo;
- preElo[1] = loserElo;
- newWinnerElo = EloUtil.getNewRating(winnerElo, loserElo, true);
- newLoserElo = EloUtil.getNewRating(loserElo, winnerElo, false);
- newElo[0] = newWinnerElo;
- newElo[1] = newLoserElo;
- eloMessage = ChatColor.GRAY + "Elo Changes: " + ChatColor.GREEN + winnerLeader.getName() + " +" + (newWinnerElo - winnerElo) + " (" + newWinnerElo + ") " + ChatColor.RED + loserLeader.getName() + " " + (newLoserElo - loserElo) + " (" + newLoserElo + ")";
- winnerLeaderData.setElo(kitName, newWinnerElo);
- loserLeaderData.setElo(kitName, newLoserElo);
- winnerLeaderData.setWins(kitName, winnerLeaderData.getWins(kitName) + 1);
- loserLeaderData.setLosses(kitName, loserLeaderData.getLosses(kitName) + 1);
- }
- match.broadcast(eloMessage);
- }
- match.broadcast(ChatColor.DARK_GRAY.toString() + ChatColor.STRIKETHROUGH + "----------------------------------------------------");
- this.plugin.getMatchManager().saveRematches(match);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement