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

@ -15,13 +15,15 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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<UUID> claimOwnerUUIDs = new HashSet<>();
private List<UUID> claimOwnerUUIDs;
private Iterator<UUID> 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();
}
}