From 49d51a34a3999c0ea0d0780e572bc6d6ce31dc7c Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 2 Mar 2020 20:04:15 -0500 Subject: [PATCH] Randomize unused claim check (#736) --- .../GriefPrevention/FindUnusedClaimsTask.java | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) 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(); } }