From 16bea6d0f99e9e974c48328b72050d92305dc99c Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Mon, 25 Sep 2023 23:21:29 +0200 Subject: [PATCH] Notify players when there is a new player in first place --- .../alttd/fishingevent/config/Messages.java | 12 ++++++++++++ .../scoreboard/ScoreboardManager.java | 18 +++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/alttd/fishingevent/config/Messages.java b/src/main/java/com/alttd/fishingevent/config/Messages.java index 3aea166..da63e3d 100644 --- a/src/main/java/com/alttd/fishingevent/config/Messages.java +++ b/src/main/java/com/alttd/fishingevent/config/Messages.java @@ -147,4 +147,16 @@ public class Messages extends AbstractConfig { WINNER_FORMAT = config.getString(prefix, "winner-format", WINNER_FORMAT); } } + + public static class OTHER_MESSAGES { + private static final String prefix = "other-messages."; + + public static String NEW_LEADER = " just caught a new longest fish! They caught a cm"; + + @SuppressWarnings("unused") + private static void load() { + NEW_LEADER = config.getString(prefix, "new-leader", NEW_LEADER); + } + } + } diff --git a/src/main/java/com/alttd/fishingevent/scoreboard/ScoreboardManager.java b/src/main/java/com/alttd/fishingevent/scoreboard/ScoreboardManager.java index d33e97f..d72a8a7 100644 --- a/src/main/java/com/alttd/fishingevent/scoreboard/ScoreboardManager.java +++ b/src/main/java/com/alttd/fishingevent/scoreboard/ScoreboardManager.java @@ -1,7 +1,10 @@ package com.alttd.fishingevent.scoreboard; +import com.alttd.fishingevent.config.Messages; import com.alttd.fishingevent.fish.Fish; import net.kyori.adventure.text.minimessage.MiniMessage; +import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; +import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.scoreboard.*; @@ -16,6 +19,7 @@ public class ScoreboardManager { private Objective objective; private final String scoreName = "Fish Leaderboard"; private double tenthLength = 0; + private double firstLength = 0; private final HashMap playerScores = new HashMap<>(); //TODO save and load this along with the points data private ScoreboardManager() { @@ -46,10 +50,22 @@ public class ScoreboardManager { return; } - playerScores.put(uuid, new PlayerScore(player, fishLength, fish)); + playerScore = new PlayerScore(player, fishLength, fish); + playerScores.put(uuid, playerScore); if (fishLength <= tenthLength) return; updateScoreBoard(); + + if (!(fishLength > firstLength)) { + return; + } + firstLength = fishLength; + player.getServer().sendMessage(MiniMessage.miniMessage().deserialize(Messages.OTHER_MESSAGES.NEW_LEADER, TagResolver.resolver( + Placeholder.component("player", playerScore.player().displayName()), + Placeholder.component("rarity", playerScore.fish().getRarity().displayName()), + Placeholder.component("fish", playerScore.fish().fishName()), + Placeholder.parsed("length", String.format("%.2f", playerScore.biggestFish())) + ))); } private void updateScoreBoard() {