From 12e7dee3740b9d7b02ec1b52e1148647adf4bb79 Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Mon, 25 Sep 2023 23:12:11 +0200 Subject: [PATCH] Display position in scoreboard and fix sorting for top 10 --- .../fish_subcommands/Leaderboard.java | 7 ++++++- .../scoreboard/ScoreboardManager.java | 2 +- .../fishingevent/timer/EventManager.java | 21 ++++++++++++------- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/alttd/fishingevent/commands/fish_subcommands/Leaderboard.java b/src/main/java/com/alttd/fishingevent/commands/fish_subcommands/Leaderboard.java index 6651e9b..3a3abb8 100644 --- a/src/main/java/com/alttd/fishingevent/commands/fish_subcommands/Leaderboard.java +++ b/src/main/java/com/alttd/fishingevent/commands/fish_subcommands/Leaderboard.java @@ -21,8 +21,13 @@ public class Leaderboard extends SubCommand { UUID uuid = null; if (commandSender instanceof Player player) uuid = player.getUniqueId(); + int pos = 1; for (PlayerScore playerScore : top10) { - component = component.append(Component.newline()).append(MiniMessage.miniMessage().deserialize("'s biggest fish was the at cm", + component = component + .append(Component.newline()) + .append(Component.text(pos++)) + .append(Component.text(". ")) + .append(MiniMessage.miniMessage().deserialize("'s biggest fish was the at cm", Placeholder.component("player", playerScore.player().displayName()), Placeholder.parsed("length", String.format("%.2f", playerScore.biggestFish())), Placeholder.component("rarity", playerScore.fish().getRarity().displayName()), diff --git a/src/main/java/com/alttd/fishingevent/scoreboard/ScoreboardManager.java b/src/main/java/com/alttd/fishingevent/scoreboard/ScoreboardManager.java index d4cf3b1..d33e97f 100644 --- a/src/main/java/com/alttd/fishingevent/scoreboard/ScoreboardManager.java +++ b/src/main/java/com/alttd/fishingevent/scoreboard/ScoreboardManager.java @@ -35,7 +35,7 @@ public class ScoreboardManager { } public List getTop10() { - return playerScores.values().stream().sorted(Comparator.comparingDouble(PlayerScore::biggestFish)).limit(10).collect(Collectors.toList()); + return playerScores.values().stream().sorted(Comparator.comparingDouble(PlayerScore::biggestFish).reversed()).limit(10).collect(Collectors.toList()); } public void updateScoreboard(Player player, double fishLength, Fish fish) { diff --git a/src/main/java/com/alttd/fishingevent/timer/EventManager.java b/src/main/java/com/alttd/fishingevent/timer/EventManager.java index 10148e4..457e108 100644 --- a/src/main/java/com/alttd/fishingevent/timer/EventManager.java +++ b/src/main/java/com/alttd/fishingevent/timer/EventManager.java @@ -13,6 +13,7 @@ import java.time.Instant; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; public class EventManager { @@ -24,7 +25,8 @@ public class EventManager { private EventAutoMessages eventAutoMessages; private ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); - private EventManager() {} + private EventManager() { + } public static EventManager getInstance() { if (instance == null) @@ -64,13 +66,18 @@ public class EventManager { } running = false; AtomicReference message = new AtomicReference<>(MiniMessage.miniMessage().deserialize(Messages.TIMER.EVENT_END)); + AtomicInteger pos = new AtomicInteger(1); ScoreboardManager.getInstance().getTop10().stream().limit(3).forEachOrdered(playerScore -> - message.set(message.get().append(Component.newline()).append(MiniMessage.miniMessage().deserialize(Messages.TIMER.WINNER_FORMAT, 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())) - ))))); + message.set(message.get() + .append(Component.newline()) + .append(Component.text(pos.getAndIncrement())) + .append(Component.text(". ")) + .append(MiniMessage.miniMessage().deserialize(Messages.TIMER.WINNER_FORMAT, 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())) + ))))); server.sendMessage(message.get()); } }