From 7fb3549032863685925d3bcb80049eb23d54c745 Mon Sep 17 00:00:00 2001 From: Pugzy Date: Mon, 18 Sep 2023 00:41:08 +0100 Subject: [PATCH] Fix missing match link during PUG games --- .../bolt/ingame/commands/AdminCommands.java | 2 +- .../java/rip/bolt/ingame/config/AppData.java | 4 ++-- .../rip/bolt/ingame/pugs/PugListener.java | 22 +++++++++++++++++++ .../rip/bolt/ingame/ranked/RankManager.java | 4 ++-- .../java/rip/bolt/ingame/utils/Messages.java | 4 ++-- 5 files changed, 29 insertions(+), 7 deletions(-) diff --git a/src/main/java/rip/bolt/ingame/commands/AdminCommands.java b/src/main/java/rip/bolt/ingame/commands/AdminCommands.java index 5bad627..3effeac 100644 --- a/src/main/java/rip/bolt/ingame/commands/AdminCommands.java +++ b/src/main/java/rip/bolt/ingame/commands/AdminCommands.java @@ -80,7 +80,7 @@ public void match(MatchManager matchManager, CommandSender sender) throws Comman Audience audience = Audience.get(sender); audience.sendMessage(text(boltMatch.toString(), NamedTextColor.GRAY)); - if (AppData.Web.getMatch() != null) audience.sendMessage(Messages.matchLink(boltMatch)); + if (AppData.Web.getMatchLink() != null) audience.sendMessage(Messages.matchLink(boltMatch)); } @CommandMethod("status") diff --git a/src/main/java/rip/bolt/ingame/config/AppData.java b/src/main/java/rip/bolt/ingame/config/AppData.java index b65cad0..d8346ce 100644 --- a/src/main/java/rip/bolt/ingame/config/AppData.java +++ b/src/main/java/rip/bolt/ingame/config/AppData.java @@ -26,11 +26,11 @@ public static String getServerName() { public static class Web { - public static String getMatch() { + public static String getMatchLink() { return Ingame.get().getConfig().getString("web.match", null); } - public static String getProfile() { + public static String getProfileLink() { return Ingame.get().getConfig().getString("web.profile", null); } } diff --git a/src/main/java/rip/bolt/ingame/pugs/PugListener.java b/src/main/java/rip/bolt/ingame/pugs/PugListener.java index b1ffc26..db8ec71 100644 --- a/src/main/java/rip/bolt/ingame/pugs/PugListener.java +++ b/src/main/java/rip/bolt/ingame/pugs/PugListener.java @@ -1,5 +1,7 @@ package rip.bolt.ingame.pugs; +import static net.kyori.adventure.text.Component.empty; + import java.util.HashSet; import java.util.Locale; import java.util.Set; @@ -15,11 +17,17 @@ import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; import rip.bolt.ingame.api.definitions.BoltMatch; +import rip.bolt.ingame.api.definitions.MatchStatus; import rip.bolt.ingame.api.definitions.pug.PugCommand; import rip.bolt.ingame.api.definitions.pug.PugTeam; import rip.bolt.ingame.commands.PugCommands; +import rip.bolt.ingame.config.AppData; +import rip.bolt.ingame.events.BoltMatchResponseEvent; import rip.bolt.ingame.events.BoltMatchStatusChangeEvent; +import rip.bolt.ingame.utils.Messages; +import tc.oc.pgm.api.match.Match; import tc.oc.pgm.api.match.event.MatchLoadEvent; +import tc.oc.pgm.api.match.event.MatchStatsEvent; import tc.oc.pgm.api.party.Competitor; import tc.oc.pgm.api.party.Party; import tc.oc.pgm.api.party.event.PartyRenameEvent; @@ -90,6 +98,20 @@ public void onBoltMatchStateChange(BoltMatchStatusChangeEvent event) { pugManager.write(PugCommand.setMatchStatus(match)); } + @EventHandler(priority = EventPriority.NORMAL) + public void onBoltMatchResponse(BoltMatchResponseEvent event) { + BoltMatch newMatch = event.getResponseMatch(); + if (!event.hasMatchFinished() || newMatch.getStatus() != MatchStatus.ENDED) return; + + Match match = event.getPgmMatch(); + match.callEvent(new MatchStatsEvent(match, true, true)); + + if (AppData.Web.getMatchLink() != null) { + match.sendMessage(Messages.matchLink(newMatch)); + match.sendMessage(empty()); + } + } + @EventHandler public void onTeamChangeSize(TeamResizeEvent event) { int newMax = event.getTeam().getMaxPlayers(); diff --git a/src/main/java/rip/bolt/ingame/ranked/RankManager.java b/src/main/java/rip/bolt/ingame/ranked/RankManager.java index 8605294..2b62478 100644 --- a/src/main/java/rip/bolt/ingame/ranked/RankManager.java +++ b/src/main/java/rip/bolt/ingame/ranked/RankManager.java @@ -92,9 +92,9 @@ public void handleMatchUpdate( .filter(RankUpdate::isValid) .collect(Collectors.toList()); - Bukkit.getServer().getPluginManager().callEvent(new MatchStatsEvent(match, true, true)); + match.callEvent(new MatchStatsEvent(match, true, true)); - if (AppData.Web.getMatch() != null) { + if (AppData.Web.getMatchLink() != null) { match.sendMessage(Messages.matchLink(newMatch)); match.sendMessage(empty()); } diff --git a/src/main/java/rip/bolt/ingame/utils/Messages.java b/src/main/java/rip/bolt/ingame/utils/Messages.java index 9a6436e..d74e292 100644 --- a/src/main/java/rip/bolt/ingame/utils/Messages.java +++ b/src/main/java/rip/bolt/ingame/utils/Messages.java @@ -42,14 +42,14 @@ public static Component participationBan() { } public static Component matchLink(BoltMatch match) { - String url = AppData.Web.getMatch().replace("{matchId}", match.getId()); + String url = AppData.Web.getMatchLink().replace("{matchId}", match.getId()); return text("Match link: ", NamedTextColor.WHITE) .append(link(Style.style(NamedTextColor.BLUE, TextDecoration.UNDERLINED), url)); } public static Component profileLink(MatchPlayer player) { - String url = AppData.Web.getProfile().replace("{name}", player.getNameLegacy()); + String url = AppData.Web.getProfileLink().replace("{name}", player.getNameLegacy()); return text("Profile link: ", NamedTextColor.WHITE) .append(link(Style.style(NamedTextColor.BLUE, TextDecoration.UNDERLINED), url));