From e871c0bcb5c1bfe62326c2b3f7cb11c116a87518 Mon Sep 17 00:00:00 2001 From: lars Date: Sat, 11 Oct 2025 00:19:02 +0200 Subject: [PATCH] added possibility for same scores in PointsWinScore --- .../minigames/score/LowestPointsWinScore.java | 15 ++++++++++- .../minigames/score/PointsWinScore.java | 25 +++++++++++++------ 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/src/main/java/eu/mhsl/minenet/minigames/score/LowestPointsWinScore.java b/src/main/java/eu/mhsl/minenet/minigames/score/LowestPointsWinScore.java index 4ff4444..ea763a3 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/score/LowestPointsWinScore.java +++ b/src/main/java/eu/mhsl/minenet/minigames/score/LowestPointsWinScore.java @@ -3,12 +3,25 @@ package eu.mhsl.minenet.minigames.score; import eu.mhsl.minenet.minigames.util.MapUtil; import net.minestom.server.entity.Player; +import java.util.HashSet; +import java.util.Map; +import java.util.Objects; import java.util.Set; public class LowestPointsWinScore extends PointsWinScore { @Override protected void insertResultImplementation(Set p, int currentPoints) { - this.scoreOrder.put(p, currentPoints); + Set combined = scoreOrder.entrySet().stream() + .filter(entrySet -> Objects.equals(entrySet.getValue(), currentPoints)) + .map(Map.Entry::getKey) + .findFirst() + .orElseGet(() -> { + Set s = new HashSet<>(); + scoreOrder.put(s, currentPoints); + return s; + }); + combined.addAll(p); + this.scoreOrder = MapUtil.sortReversedByValue(this.scoreOrder); getScores().clear(); this.scoreOrder.forEach((player, integer) -> getScores().addFirst(player)); diff --git a/src/main/java/eu/mhsl/minenet/minigames/score/PointsWinScore.java b/src/main/java/eu/mhsl/minenet/minigames/score/PointsWinScore.java index c8ca7bf..4068195 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/score/PointsWinScore.java +++ b/src/main/java/eu/mhsl/minenet/minigames/score/PointsWinScore.java @@ -16,7 +16,17 @@ public class PointsWinScore extends Score { @Override protected void insertResultImplementation(Set p, int currentPoints) { - this.scoreOrder.put(p, currentPoints); + Set combined = scoreOrder.entrySet().stream() + .filter(entrySet -> Objects.equals(entrySet.getValue(), currentPoints)) + .map(Map.Entry::getKey) + .findFirst() + .orElseGet(() -> { + Set s = new HashSet<>(); + scoreOrder.put(s, currentPoints); + return s; + }); + combined.addAll(p); + this.scoreOrder = MapUtil.sortByValue(this.scoreOrder); getScores().clear(); this.scoreOrder.forEach((player, integer) -> getScores().addFirst(player)); @@ -42,13 +52,12 @@ public class PointsWinScore extends Score { .filter(player -> !player.getUsername().isBlank()) .toList() .isEmpty()) - .map(players -> players - .stream() - .filter(player -> scoreOrder.get(Set.of(player)) != null) - .map(player -> player.getUsername()+" : "+scoreOrder.get(Set.of(player)).toString()) - .collect(Collectors.joining(", ")) - ) - .toList() + .map(players -> players.stream() + .map(Player::getUsername) + .sorted() + .collect(Collectors.joining(", ")) + + " : " + scoreOrder.get(players) + ).toList() ) .undent() .newLine()