mirror of
https://github.com/YouHaveTrouble/PreventStabby.git
synced 2026-05-12 05:16:55 +00:00
cache is now based on UUIDs and not Player instances
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
package eu.endermite.togglepvp.players;
|
||||
|
||||
import eu.endermite.togglepvp.TogglePvP;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
public class SmartCache {
|
||||
|
||||
public static void runSmartCache() {
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
// Refresh cache timer if player is online
|
||||
for (Map.Entry<UUID, HashMap<String, Object>> e : TogglePvP.getPlugin().getPlayerManager().getPlayerList().entrySet()) {
|
||||
try {
|
||||
Player player = Bukkit.getPlayer(e.getKey());
|
||||
if (player.isOnline()) {
|
||||
TogglePvP.getPlugin().getPlayerManager().refreshPlayersCacheTime(e.getKey());
|
||||
}
|
||||
} catch (NullPointerException ignored) {}
|
||||
}
|
||||
|
||||
// Check for entries that should be invalidated
|
||||
long now = Instant.now().getEpochSecond();
|
||||
Iterator<Map.Entry<UUID, HashMap<String, Object>>> it = TogglePvP.getPlugin().getPlayerManager().getPlayerList().entrySet().iterator();
|
||||
while(it.hasNext()) {
|
||||
Map.Entry<UUID,HashMap<String, Object>> cacheEntry = it.next();
|
||||
if ((Long) cacheEntry.getValue().get("cachetime") < now) {
|
||||
TogglePvP.getPlugin().getPlayerManager().removePlayer(cacheEntry.getKey());
|
||||
}
|
||||
}
|
||||
}
|
||||
}.runTaskTimerAsynchronously(TogglePvP.getPlugin(), 100, 100);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user