Display position in scoreboard and fix sorting for top 10

This commit is contained in:
2023-09-25 23:12:11 +02:00
parent df48d5da87
commit 12e7dee374
3 changed files with 21 additions and 9 deletions
@@ -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<Component> 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());
}
}