mirror of
https://github.com/YouHaveTrouble/PreventStabby.git
synced 2026-05-12 13:26:56 +00:00
use object for PlayerData instead of hashmap
This commit is contained in:
@@ -3,40 +3,32 @@ 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
|
||||
Bukkit.getScheduler().runTaskTimerAsynchronously(TogglePvP.getPlugin(), () -> {
|
||||
// Refresh cache timer if player is online
|
||||
for (Map.Entry<UUID, PlayerData> e : TogglePvP.getPlugin().getPlayerManager().getPlayerList().entrySet()) {
|
||||
try {
|
||||
long now = Instant.now().getEpochSecond();
|
||||
TogglePvP.getPlugin().getPlayerManager().getPlayerList().entrySet().removeIf(cacheEntry -> (Long) cacheEntry.getValue().get("cachetime") < now);
|
||||
} catch (Exception ignored) {}
|
||||
Player player = Bukkit.getPlayer(e.getKey());
|
||||
if (player != null && player.isOnline()) {
|
||||
TogglePvP.getPlugin().getPlayerManager().refreshPlayersCacheTime(e.getKey());
|
||||
}
|
||||
} catch (NullPointerException ignored) {}
|
||||
}
|
||||
}.runTaskTimerAsynchronously(TogglePvP.getPlugin(), 100, 100);
|
||||
// Check for entries that should be invalidated
|
||||
try {
|
||||
long now = Instant.now().getEpochSecond();
|
||||
TogglePvP.getPlugin().getPlayerManager().getPlayerList().entrySet().removeIf(cacheEntry -> cacheEntry.getValue().getCachetime() < now);
|
||||
} catch (Exception ignored) {}
|
||||
}, 100, 100);
|
||||
}
|
||||
|
||||
public static HashMap<String, Object> getPlayerData(UUID uuid) {
|
||||
public static PlayerData getPlayerData(UUID uuid) {
|
||||
// Try to get data from cache and refresh it
|
||||
try {
|
||||
TogglePvP.getPlugin().getPlayerManager().refreshPlayersCacheTime(uuid);
|
||||
@@ -44,15 +36,12 @@ public class SmartCache {
|
||||
} catch (NullPointerException e) {
|
||||
// If player data is not in cache get it from database and put into cache
|
||||
try {
|
||||
HashMap<String, Object> playerData;
|
||||
playerData = TogglePvP.getPlugin().getSqLite().getPlayerInfo(uuid);
|
||||
playerData.put("cachetime", TogglePvP.getPlugin().getPlayerManager().refreshedCacheTime());
|
||||
playerData.put("combattime", Instant.now().getEpochSecond()-1);
|
||||
PlayerData playerData = TogglePvP.getPlugin().getSqLite().getPlayerInfo(uuid);
|
||||
TogglePvP.getPlugin().getPlayerManager().addPlayer(uuid, playerData);
|
||||
return playerData;
|
||||
} catch (NullPointerException ex) {
|
||||
// Return null if database call fails
|
||||
return null;
|
||||
// Return false if database call fails
|
||||
return new PlayerData(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user