added possibility for same scores in PointsWinScore
This commit is contained in:
		@@ -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<Player> p, int currentPoints) {
 | 
			
		||||
        this.scoreOrder.put(p, currentPoints);
 | 
			
		||||
        Set<Player> combined = scoreOrder.entrySet().stream()
 | 
			
		||||
                .filter(entrySet -> Objects.equals(entrySet.getValue(), currentPoints))
 | 
			
		||||
                .map(Map.Entry::getKey)
 | 
			
		||||
                .findFirst()
 | 
			
		||||
                .orElseGet(() -> {
 | 
			
		||||
                    Set<Player> 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));
 | 
			
		||||
 
 | 
			
		||||
@@ -16,7 +16,17 @@ public class PointsWinScore extends Score {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected void insertResultImplementation(Set<Player> p, int currentPoints) {
 | 
			
		||||
        this.scoreOrder.put(p, currentPoints);
 | 
			
		||||
        Set<Player> combined = scoreOrder.entrySet().stream()
 | 
			
		||||
            .filter(entrySet -> Objects.equals(entrySet.getValue(), currentPoints))
 | 
			
		||||
            .map(Map.Entry::getKey)
 | 
			
		||||
            .findFirst()
 | 
			
		||||
            .orElseGet(() -> {
 | 
			
		||||
                Set<Player> 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()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user