From 4c9a5b228287fb6e2e08252a1dd1fb211fae3925 Mon Sep 17 00:00:00 2001 From: Logan Fick Date: Sat, 4 Jun 2022 12:03:58 -0400 Subject: [PATCH] Fixed concurrent modification when clearing all boss bars. --- .../java/dev/logal/snowbrawl/managers/BossBarManager.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/dev/logal/snowbrawl/managers/BossBarManager.java b/src/main/java/dev/logal/snowbrawl/managers/BossBarManager.java index 9ce39da..743163a 100644 --- a/src/main/java/dev/logal/snowbrawl/managers/BossBarManager.java +++ b/src/main/java/dev/logal/snowbrawl/managers/BossBarManager.java @@ -18,6 +18,7 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerQuitEvent; import java.util.HashMap; +import java.util.List; /** * Keeps track of boss bars on a per-player basis. @@ -78,8 +79,8 @@ public class BossBarManager implements Listener { * Clears all boss bars owned by this boss bar manager. */ public void clearAllBossBars(){ - // TODO: There was probably a ConcurrentModificationException caused here during a server shut down at one point. - for (Player player : this.bossBars.keySet()){ + final List players = this.bossBars.keySet().stream().toList(); // Make copy of list of players to avoid concurrent modification. + for (Player player : players){ this.clearBossBar(player); } }