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(); } }