Browse Source

avoid concurrent exceptions on TransientEntityTracker

nossr50 4 years ago
parent
commit
c408c7d057
1 changed files with 7 additions and 2 deletions
  1. 7 2
      src/main/java/com/gmail/nossr50/util/TransientEntityTracker.java

+ 7 - 2
src/main/java/com/gmail/nossr50/util/TransientEntityTracker.java

@@ -6,6 +6,7 @@ import com.gmail.nossr50.skills.taming.TrackedTamingEntity;
 import com.gmail.nossr50.util.player.NotificationManager;
 import com.gmail.nossr50.util.skills.ParticleEffectUtils;
 import com.gmail.nossr50.util.text.StringUtils;
+import com.google.common.collect.ImmutableSet;
 import org.bukkit.Bukkit;
 import org.bukkit.Chunk;
 import org.bukkit.Location;
@@ -215,13 +216,17 @@ public class TransientEntityTracker {
         for(CallOfTheWildType callOfTheWildType : CallOfTheWildType.values()) {
             HashSet<TrackedTamingEntity> trackedEntities = getTrackedEntities(playerUUID, callOfTheWildType);
 
-            if(trackedEntities == null)
+            if(trackedEntities == null) {
                 continue;
+            }
+
+            ImmutableSet<TrackedTamingEntity> immutableSet = ImmutableSet.copyOf(trackedEntities);
 
-            for(TrackedTamingEntity trackedTamingEntity : trackedEntities) {
+            for(TrackedTamingEntity trackedTamingEntity : immutableSet) {
                 //Remove from existence
                 removeSummon(trackedTamingEntity.getLivingEntity(), player, false);
             }
+
         }
     }
 }