Randomize unused claim check (#736)

This commit is contained in:
Adam 2020-03-02 20:04:15 -05:00 committed by GitHub
parent 61c1ccda3f
commit 49d51a34a3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

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