From 4cbbdfff1d69895e388529090e40b44e51658d02 Mon Sep 17 00:00:00 2001 From: AverageGithub Date: Wed, 22 Jan 2025 19:22:44 +0100 Subject: [PATCH 1/2] Fix a rare crash with a concurrent modification --- .../java/org/bukkit/craftbukkit/entity/CraftPlayer.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index 98fc89cc7a71..a9597086ff62 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -2858,9 +2858,11 @@ public void injectScaledMaxHealth(Collection collection, bool if (!this.scaledHealth && !force) { return; } - for (AttributeInstance genericInstance : collection) { + java.util.Iterator iterator = collection.iterator(); + while (iterator.hasNext()) { + AttributeInstance genericInstance = iterator.next(); if (genericInstance.getAttribute() == Attributes.MAX_HEALTH) { - collection.remove(genericInstance); + iterator.remove(); break; } } From 3a01f527d4da9b44a002c0c9487ea9bdc092acd6 Mon Sep 17 00:00:00 2001 From: AverageGithub Date: Wed, 22 Jan 2025 19:50:18 +0100 Subject: [PATCH 2/2] Remove FQN, add fancy proper import --- .../main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index a9597086ff62..f80f89a79faa 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -24,6 +24,7 @@ import java.util.Date; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; @@ -2858,7 +2859,7 @@ public void injectScaledMaxHealth(Collection collection, bool if (!this.scaledHealth && !force) { return; } - java.util.Iterator iterator = collection.iterator(); + Iterator iterator = collection.iterator(); while (iterator.hasNext()) { AttributeInstance genericInstance = iterator.next(); if (genericInstance.getAttribute() == Attributes.MAX_HEALTH) {