refactors and basic api

This commit is contained in:
YouHaveTrouble
2021-02-19 04:02:06 +01:00
parent 905861079f
commit 8626d79825
32 changed files with 189 additions and 177 deletions
@@ -1,6 +1,6 @@
package eu.endermite.togglepvp.players;
import eu.endermite.togglepvp.TogglePvP;
import eu.endermite.togglepvp.TogglePvp;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import java.time.Instant;
@@ -10,20 +10,21 @@ import java.util.UUID;
public class SmartCache {
public static void runSmartCache() {
Bukkit.getScheduler().runTaskTimerAsynchronously(TogglePvP.getPlugin(), () -> {
Bukkit.getScheduler().runTaskTimerAsynchronously(TogglePvp.getPlugin(), () -> {
// Refresh cache timer if player is online
for (Map.Entry<UUID, PlayerData> e : TogglePvP.getPlugin().getPlayerManager().getPlayerList().entrySet()) {
for (Map.Entry<UUID, PlayerData> e : TogglePvp.getPlugin().getPlayerManager().getPlayerList().entrySet()) {
try {
Player player = Bukkit.getPlayer(e.getKey());
if (player != null && player.isOnline()) {
TogglePvP.getPlugin().getPlayerManager().refreshPlayersCacheTime(e.getKey());
TogglePvp.getPlugin().getPlayerManager().refreshPlayersCacheTime(e.getKey());
}
} catch (NullPointerException ignored) {}
}
// Check for entries that should be invalidated
try {
long now = Instant.now().getEpochSecond();
TogglePvP.getPlugin().getPlayerManager().getPlayerList().entrySet().removeIf(cacheEntry -> cacheEntry.getValue().getCachetime() < now);
TogglePvp.getPlugin().getPlayerManager().getPlayerList().entrySet()
.removeIf(cacheEntry -> cacheEntry.getValue().getCachetime() < now);
} catch (Exception ignored) {}
}, 100, 100);
}
@@ -31,13 +32,13 @@ public class SmartCache {
public static PlayerData getPlayerData(UUID uuid) {
// Try to get data from cache and refresh it
try {
TogglePvP.getPlugin().getPlayerManager().refreshPlayersCacheTime(uuid);
return TogglePvP.getPlugin().getPlayerManager().getPlayer(uuid);
TogglePvp.getPlugin().getPlayerManager().refreshPlayersCacheTime(uuid);
return TogglePvp.getPlugin().getPlayerManager().getPlayer(uuid);
} catch (NullPointerException e) {
// If player data is not in cache get it from database and put into cache
try {
PlayerData playerData = TogglePvP.getPlugin().getSqLite().getPlayerInfo(uuid);
TogglePvP.getPlugin().getPlayerManager().addPlayer(uuid, playerData);
PlayerData playerData = TogglePvp.getPlugin().getSqLite().getPlayerInfo(uuid);
TogglePvp.getPlugin().getPlayerManager().addPlayer(uuid, playerData);
return playerData;
} catch (NullPointerException ex) {
// Return false if database call fails
@@ -46,5 +47,14 @@ public class SmartCache {
}
}
public static void setPlayerPvpState(UUID uuid, boolean state) {
// If player is in cache update that
if (TogglePvp.getPlugin().getPlayerManager().getPlayer(uuid) != null) {
TogglePvp.getPlugin().getPlayerManager().getPlayer(uuid).setPvpEnabled(state);
}
// Update the database aswell
TogglePvp.getPlugin().getSqLite().updatePlayerInfo(uuid, new PlayerData(state));
}
}