From d88c61fc94ba55c5266fb376310c3dbd04461662 Mon Sep 17 00:00:00 2001 From: ceze88 Date: Sat, 23 Mar 2024 19:17:01 +0100 Subject: [PATCH] Fix concurrent modification exception --- .../com.craftaro.ultimatestacker/tasks/StackingTask.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/UltimateStacker-Plugin/src/main/java/com.craftaro.ultimatestacker/tasks/StackingTask.java b/UltimateStacker-Plugin/src/main/java/com.craftaro.ultimatestacker/tasks/StackingTask.java index 04270f2..3c42abe 100644 --- a/UltimateStacker-Plugin/src/main/java/com.craftaro.ultimatestacker/tasks/StackingTask.java +++ b/UltimateStacker-Plugin/src/main/java/com.craftaro.ultimatestacker/tasks/StackingTask.java @@ -89,12 +89,15 @@ public class StackingTask extends BukkitRunnable { //Filter non-stackable entities to improve performance on main thread entities.removeIf(this::isEntityNotStackable); - for (LivingEntity entity : entities) { + List remove = new ArrayList<>(); + for (LivingEntity entity : entities) { //Q: What can cause current modification exception here? // Check our WorldGuard flag. Boolean flag = WorldGuardHook.isEnabled() ? WorldGuardHook.getBooleanFlag(entity.getLocation(), "mob-stacking") : null; //Does this work async? - if (flag != null && !flag) - entities.removeIf(entity1 -> entity1.getUniqueId().equals(entity.getUniqueId())); + if (flag != null && !flag) { + remove.add(entity); + } } + entities.removeAll(remove); Bukkit.getScheduler().runTask(plugin, () -> { // Loop through the entities.