From d28a523c4964b8a06f0cbccbffd02addb5109cd8 Mon Sep 17 00:00:00 2001 From: "Luis C.M" <42545778+c0508383@users.noreply.github.com> Date: Fri, 24 Feb 2023 10:54:46 -0600 Subject: [PATCH] ScriptSoundController: -Fixed ConcurrentModificationException by using an Iterator to remove inactive sounds --- .../npcs/client/controllers/ScriptSoundController.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/noppes/npcs/client/controllers/ScriptSoundController.java b/src/main/java/noppes/npcs/client/controllers/ScriptSoundController.java index 385ad4d64..303836323 100644 --- a/src/main/java/noppes/npcs/client/controllers/ScriptSoundController.java +++ b/src/main/java/noppes/npcs/client/controllers/ScriptSoundController.java @@ -4,6 +4,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.audio.SoundHandler; import java.util.HashMap; +import java.util.Iterator; import java.util.Map; import java.util.Set; @@ -17,11 +18,12 @@ public class ScriptSoundController { public void onUpdate() { SoundHandler soundHandler = Minecraft.getMinecraft().getSoundHandler(); - final Set> entrySet = sounds.entrySet(); - for (Map.Entry entry : entrySet) { + final Iterator> iterator = sounds.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = iterator.next(); ScriptClientSound sound = entry.getValue(); if (!soundHandler.isSoundPlaying(sound) && !sound.canRepeat() && !sound.paused) { - sounds.remove(entry.getKey()); + iterator.remove(); } } }