From 07b700bc321affb4333fd0c2d99955a8e0214c39 Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Sat, 15 Feb 2025 02:47:04 +0100 Subject: [PATCH] Shuffle player list before assigning teams Added logic to randomize the order of players before assigning them to teams. This ensures a fairer distribution when teams are being populated. --- .../com/alttd/ctf/game/phases/ClassSelectionPhase.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/alttd/ctf/game/phases/ClassSelectionPhase.java b/src/main/java/com/alttd/ctf/game/phases/ClassSelectionPhase.java index 1337abb..dbec683 100644 --- a/src/main/java/com/alttd/ctf/game/phases/ClassSelectionPhase.java +++ b/src/main/java/com/alttd/ctf/game/phases/ClassSelectionPhase.java @@ -21,6 +21,9 @@ import org.bukkit.Location; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; import java.util.Optional; @Slf4j @@ -52,7 +55,9 @@ public class ClassSelectionPhase implements GamePhaseExecutor { Bukkit.broadcast(MiniMessage.miniMessage().deserialize("Select your class with /ctf selectclass")); CircularIterator teamCircularIterator = new CircularIterator<>(gameManager.getTeams()); if (teamCircularIterator.hasNext()) { - Bukkit.getOnlinePlayers().stream() + ArrayList players = new ArrayList<>(Bukkit.getOnlinePlayers()); + Collections.shuffle(players); + players.stream() .filter(player -> !player.hasPermission("ctf.bypass")) .filter(player -> gameManager.getTeamPlayer(player.getUniqueId()).isEmpty()) .forEach(player -> {