diff --git a/src/main/java/me/ryanhamshire/GriefPrevention/FindUnusedClaimsTask.java b/src/main/java/me/ryanhamshire/GriefPrevention/FindUnusedClaimsTask.java
index ec4375e..cf62a22 100644
--- a/src/main/java/me/ryanhamshire/GriefPrevention/FindUnusedClaimsTask.java
+++ b/src/main/java/me/ryanhamshire/GriefPrevention/FindUnusedClaimsTask.java
@@ -15,13 +15,15 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-
- package me.ryanhamshire.GriefPrevention;
-import java.util.HashSet;
+package me.ryanhamshire.GriefPrevention;
+
+import java.util.Collections;
import java.util.Iterator;
-import java.util.Set;
+import java.util.List;
+import java.util.Objects;
import java.util.UUID;
+import java.util.stream.Collectors;
import org.bukkit.Bukkit;
@@ -33,7 +35,7 @@ import org.bukkit.Bukkit;
//runs every 1 minute in the main thread
class FindUnusedClaimsTask implements Runnable
{
- private Set claimOwnerUUIDs = new HashSet<>();
+ private List claimOwnerUUIDs;
private Iterator claimOwnerIterator;
FindUnusedClaimsTask()
@@ -57,12 +59,16 @@ class FindUnusedClaimsTask implements Runnable
Bukkit.getScheduler().runTaskAsynchronously(GriefPrevention.instance, new CleanupUnusedClaimPreTask(claimOwnerIterator.next()));
}
- public void refreshUUIDs()
- {
- claimOwnerUUIDs.clear();
- for (Claim claim : GriefPrevention.instance.dataStore.claims)
- claimOwnerUUIDs.add(claim.ownerID);
- claimOwnerUUIDs.remove(null);
+ public void refreshUUIDs() {
+ // Fetch owner UUIDs from list of claims
+ claimOwnerUUIDs = GriefPrevention.instance.dataStore.claims.stream().filter(Objects::nonNull)
+ .distinct().map(claim -> claim.ownerID).collect(Collectors.toList());
+
+ if (!claimOwnerUUIDs.isEmpty()) {
+ // Randomize order
+ Collections.shuffle(claimOwnerUUIDs);
+ }
+
claimOwnerIterator = claimOwnerUUIDs.iterator();
}
}