From 61908b8fab6819f77ead8c43dea18c423f76bfac Mon Sep 17 00:00:00 2001 From: YouHaveTrouble Date: Sat, 31 Dec 2022 17:09:20 +0100 Subject: [PATCH] more api changes and javadocs --- .../preventstabby/players/PlayerData.java | 22 +++---- .../preventstabby/players/PlayerManager.java | 65 ++++++++++++++++--- .../preventstabby/players/SmartCache.java | 7 +- 3 files changed, 71 insertions(+), 23 deletions(-) diff --git a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerData.java b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerData.java index 29a0296..01f61e3 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerData.java +++ b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerData.java @@ -31,11 +31,16 @@ public class PlayerData { /** * Returns true if player has personal pvp enabled, false otherwise. * @return True if player has personal pvp enabled, false otherwise. + * @see PlayerManager#getPlayerPvPState(UUID) */ public boolean isPvpEnabled() { return pvpEnabled; } + /** + * Sets player's personal pvp state. + * @param pvpEnabled Pvp state to set. + */ public void setPvpEnabled(boolean pvpEnabled) { this.pvpEnabled = pvpEnabled; } @@ -44,11 +49,7 @@ public class PlayerData { return cachetime; } - /** - * Lets player cache system know that data should not be removed for the next cache time peroid.
- * Use with caution, may cause memory leaks if used inappropriately. - */ - public void refreshCacheTime() { + protected void refreshCacheTime() { this.cachetime = Instant.now().getEpochSecond() + PreventStabby.getPlugin().getConfigCache().getCache_time(); } @@ -60,17 +61,14 @@ public class PlayerData { public long getCombatTime() { return Math.max(combattime - Instant.now().getEpochSecond(), 0); } - - /** - * Sets timestamp for combat expiry - * @param combattime Timestamp for when combat should expire - */ - public void setCombattime(long combattime) { + + protected void setCombattime(long combattime) { this.combattime = combattime; } /** - * Sets player combat time to the interval set in config. + * Sets player in combat and sets combat time to the interval set in config. + * @see PlayerManager#refreshPlayersCombatTime(UUID) */ public void refreshCombatTime() { this.combattime = Instant.now().getEpochSecond()+ PreventStabby.getPlugin().getConfigCache().getCombat_time(); diff --git a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerManager.java b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerManager.java index e8e2a75..901af5c 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerManager.java +++ b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerManager.java @@ -59,10 +59,10 @@ public class PlayerManager { } - public void refreshPlayersCacheTime(UUID uuid) { - playerList.get(uuid).refreshCacheTime(); - } - + /** + * Sets player in combat and sets combat time to the interval set in config. + * @see PlayerData#refreshCombatTime() + */ public void refreshPlayersCombatTime(UUID uuid) { PlayerData data = playerList.get(uuid); if (data == null) return; @@ -70,25 +70,46 @@ public class PlayerManager { if (player == null || player.isDead()) return; data.refreshCombatTime(); data.setInCombat(true); - } + /** + * Gets player's PlayerData object. Returns null when player with provided UUID doesn't exist. + * @param uuid Player's UUID. + * @return Player's PlayerData object or null if player doesn't exist. + */ public PlayerData getPlayer(UUID uuid) { return playerList.get(uuid); } - public void addPlayer(UUID uuid, PlayerData data) { + protected void addPlayer(UUID uuid, PlayerData data) { playerList.put(uuid, data); } + /** + * Returns true if player has personal pvp enabled, false otherwise. + * @param uuid Player's UUID. + * @return True if player has personal pvp enabled, false otherwise. + * @see PlayerData#isPvpEnabled() + */ public boolean getPlayerPvPState(UUID uuid) { return PreventStabby.getPlugin().getSmartCache().getPlayerData(uuid).isPvpEnabled(); } + /** + * Sets player's personal pvp state. + * @param uuid Player's UUID. + * @param state Pvp state to set. + * @see PlayerData#setPvpEnabled(boolean) + */ public void setPlayerPvpState(UUID uuid, boolean state) { PreventStabby.getPlugin().getSmartCache().getPlayerData(uuid).setPvpEnabled(state); } + /** + * Toggles player's personal pvp state. + * @param uuid Player's UUID. + * @return Player's personal pvp state after the change. + */ public boolean togglePlayerPvpState(UUID uuid) { SmartCache smartCache = PreventStabby.getPlugin().getSmartCache(); if (smartCache.getPlayerData(uuid).isPvpEnabled()) { @@ -100,10 +121,26 @@ public class PlayerManager { } } + /** + * Check if attacker can harm the victim. Both of them have to have personal pvp enabled and none of them can have + * any kind of spawn or teleport protection. + * @param attacker Atacker's UUID. + * @param victim Victim's UUID. + * @param sendDenyMessage Should plugin send a message that there was attempt at damaging to both players? + * @return Whenever attacker can harm the victim. + */ public boolean canDamage(UUID attacker, UUID victim, boolean sendDenyMessage) { return canDamage(attacker, victim, sendDenyMessage, true); } + /** + * Check if attacker can harm the victim. + * @param attacker Atacker's UUID. + * @param victim Victim's UUID. + * @param sendDenyMessage Should plugin send a message that there was attempt at damaging to both players? + * @param checkVictimSpawnProtection Should teleport and spawn protections be taken into account? + * @return Whenever attacker can harm the victim. + */ public boolean canDamage(UUID attacker, UUID victim, boolean sendDenyMessage, boolean checkVictimSpawnProtection) { if (hasLoginProtection(attacker) || hasTeleportProtection(attacker)) return false; @@ -149,8 +186,8 @@ public class PlayerManager { } /** - * @param uuid Player UUIDs - * @return true if any of the provided UUIDs has spawn protection + * @param uuid Player UUIDs. + * @return True if any of the provided UUIDs has spawn protection. */ public boolean hasLoginProtection(UUID... uuid) { SmartCache smartCache = PreventStabby.getPlugin().getSmartCache(); @@ -161,15 +198,27 @@ public class PlayerManager { return false; } + /** + * @param uuid Player UUID. + * @return True if player tied to the uuid currently has teleport protection. + */ public boolean hasTeleportProtection(UUID uuid) { SmartCache smartCache = PreventStabby.getPlugin().getSmartCache(); return Instant.now().getEpochSecond() < smartCache.getPlayerData(uuid).getTeleportTimestamp(); } + /** + * Returns current forced pvp state. + * @return Current forced pvp state. + */ public PvpState getForcedPvpState() { return pvpForcedState; } + /** + * Sets current forced pvp state. + * @param forcedPvpState New forced pvp state. + */ public void setForcedPvpState(PvpState forcedPvpState) { this.pvpForcedState = forcedPvpState; } diff --git a/src/main/java/me/youhavetrouble/preventstabby/players/SmartCache.java b/src/main/java/me/youhavetrouble/preventstabby/players/SmartCache.java index a307d46..db9b124 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/players/SmartCache.java +++ b/src/main/java/me/youhavetrouble/preventstabby/players/SmartCache.java @@ -16,7 +16,7 @@ public class SmartCache { try { Player player = Bukkit.getPlayer(e.getKey()); if (player != null && player.isOnline()) { - PreventStabby.getPlugin().getPlayerManager().refreshPlayersCacheTime(e.getKey()); + e.getValue().refreshCacheTime(); } } catch (NullPointerException ignored) {} } @@ -32,8 +32,9 @@ public class SmartCache { public PlayerData getPlayerData(UUID uuid) { // Try to get data from cache and refresh it try { - PreventStabby.getPlugin().getPlayerManager().refreshPlayersCacheTime(uuid); - return PreventStabby.getPlugin().getPlayerManager().getPlayer(uuid); + PlayerData data = PreventStabby.getPlugin().getPlayerManager().getPlayer(uuid); + data.refreshCacheTime(); + return data; } catch (NullPointerException e) { // If player data is not in cache get it from database and put into cache try {