diff --git a/pom.xml b/pom.xml index c9d5bcd..358e45e 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ me.youhavetrouble PreventStabby - 1.8.0 + 1.8.1 jar PreventStabby @@ -100,7 +100,7 @@ org.projectlombok lombok - 1.18.24 + 1.18.26 provided diff --git a/src/main/java/me/youhavetrouble/preventstabby/PreventStabby.java b/src/main/java/me/youhavetrouble/preventstabby/PreventStabby.java index 42d75ff..a8d4d11 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/PreventStabby.java +++ b/src/main/java/me/youhavetrouble/preventstabby/PreventStabby.java @@ -76,13 +76,6 @@ public final class PreventStabby extends JavaPlugin { pvpCommand.setExecutor(mainCommand); pvpCommand.setTabCompleter(mainCommand); - try { - WorldGuardHook.init(); - worldGuardHook = true; - } catch (NoClassDefFoundError e) { - worldGuardHook = false; - } - if (getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) { new PlacoholderApiHook(this).register(); } @@ -90,6 +83,18 @@ public final class PreventStabby extends JavaPlugin { Metrics metrics = new Metrics(this, 14074); } + @Override + public void onLoad() { + if (getServer().getPluginManager().getPlugin("WorldGuard") != null) { + try { + WorldGuardHook.init(); + worldGuardHook = true; + } catch (NoClassDefFoundError e) { + worldGuardHook = false; + } + } + } + public static boolean worldGuardHookEnabled() { return worldGuardHook; } diff --git a/src/main/java/me/youhavetrouble/preventstabby/api/event/PlayerTogglePvpEvent.java b/src/main/java/me/youhavetrouble/preventstabby/api/event/PlayerTogglePvpEvent.java index 1da34ae..c256aa3 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/api/event/PlayerTogglePvpEvent.java +++ b/src/main/java/me/youhavetrouble/preventstabby/api/event/PlayerTogglePvpEvent.java @@ -1,42 +1,55 @@ package me.youhavetrouble.preventstabby.api.event; -import org.bukkit.entity.Player; +import me.youhavetrouble.preventstabby.PreventStabby; +import me.youhavetrouble.preventstabby.players.PlayerData; +import org.bukkit.OfflinePlayer; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; import org.jetbrains.annotations.NotNull; /** - * NOT IMPLEMENTED YET + * Fired when player gets their personal pvp state toggled. */ -@Deprecated public class PlayerTogglePvpEvent extends Event { private static final HandlerList HANDLERS = new HandlerList(); - private final Player player; - private boolean newState, sendMessage; + private final OfflinePlayer player; + private final boolean newState; + private boolean sendMessage; - public PlayerTogglePvpEvent(Player player, boolean newState, boolean sendMessage) { + public PlayerTogglePvpEvent(OfflinePlayer player, boolean newState, boolean sendMessage) { this.player = player; this.newState = newState; this.sendMessage = sendMessage; } - public Player getPlayer() { + public OfflinePlayer getPlayer() { return player; } + public PlayerData getPlayerData() { + return PreventStabby.getPlugin().getPlayerManager().getPlayer(player.getUniqueId()); + } + + /** + * Returns the state player's pvp state was toggled to. + * @return The state player's pvp state was toggled to. + */ public boolean newState() { return newState; } - public void setNewState(boolean newState) { - this.newState = newState; - } - + /** + * Returns true if the state message will be sent to the player, false otherwise + * @return True if the state message will be sent to the player, false otherwise + */ public boolean isSendMessage() { return sendMessage; } + /** + * If this is true at the end of event pipeline, message with the current state will be sent to player. + */ public void setSendMessage(boolean sendMessage) { this.sendMessage = sendMessage; } diff --git a/src/main/java/me/youhavetrouble/preventstabby/commands/PvpToggleCommand.java b/src/main/java/me/youhavetrouble/preventstabby/commands/PvpToggleCommand.java index 79ad06b..574534f 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/commands/PvpToggleCommand.java +++ b/src/main/java/me/youhavetrouble/preventstabby/commands/PvpToggleCommand.java @@ -1,6 +1,7 @@ package me.youhavetrouble.preventstabby.commands; import me.youhavetrouble.preventstabby.PreventStabby; +import me.youhavetrouble.preventstabby.api.event.PlayerTogglePvpEvent; import me.youhavetrouble.preventstabby.config.PreventStabbyPermission; import me.youhavetrouble.preventstabby.util.CombatTimer; import me.youhavetrouble.preventstabby.util.PluginMessages; @@ -25,12 +26,17 @@ public class PvpToggleCommand { return; } boolean currentState = PreventStabby.getPlugin().getPlayerManager().togglePlayerPvpState(player.getUniqueId()); - - if (currentState) { - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_enabled()); - } else { - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_disabled()); - } + PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, currentState, true); + Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> { + Bukkit.getPluginManager().callEvent(toggleEvent); + if (toggleEvent.isSendMessage()) { + if (currentState) { + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_enabled()); + } else { + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_disabled()); + } + } + }); } else { PluginMessages.sendMessage(sender, "Try /pvp toggle "); } @@ -53,6 +59,18 @@ public class PvpToggleCommand { return; } boolean currentState = PreventStabby.getPlugin().getPlayerManager().togglePlayerPvpState(player.getUniqueId()); + PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, currentState, false); + Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> { + Bukkit.getPluginManager().callEvent(toggleEvent); + if (toggleEvent.isSendMessage()) { + if (currentState) { + PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().getPvp_enabled()); + } else { + PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().getPvp_disabled()); + } + } + }); + String message; if (currentState) { message = PreventStabby.getPlugin().getConfigCache().getPvp_enabled_other(); @@ -77,7 +95,13 @@ public class PvpToggleCommand { return; } PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true); - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_enabled()); + PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, true, true); + Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> { + Bukkit.getPluginManager().callEvent(toggleEvent); + if (toggleEvent.isSendMessage()) { + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_enabled()); + } + }); } else { PluginMessages.sendMessage(sender, "Try /pvp enable "); } @@ -101,6 +125,13 @@ public class PvpToggleCommand { String message = PreventStabby.getPlugin().getConfigCache().getPvp_enabled_other(); PluginMessages.sendMessage(sender, PluginMessages.parsePlayerName(player, message)); PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true); + PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, true, false); + Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> { + Bukkit.getPluginManager().callEvent(toggleEvent); + if (toggleEvent.isSendMessage()) { + PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().getPvp_enabled()); + } + }); } else { if (PreventStabbyPermission.COMMAND_TOGGLE_OTHERS.doesCommandSenderHave(sender)) { PluginMessages.sendMessage(sender, "Try /pvp enable "); @@ -123,7 +154,13 @@ public class PvpToggleCommand { return; } PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), false); - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_disabled()); + PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, false, true); + Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> { + Bukkit.getPluginManager().callEvent(toggleEvent); + if (toggleEvent.isSendMessage()) { + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_disabled()); + } + }); } else { PluginMessages.sendMessage(sender, "Try /pvp disable "); } @@ -146,7 +183,14 @@ public class PvpToggleCommand { } String message = PreventStabby.getPlugin().getConfigCache().getPvp_disabled_other(); PluginMessages.sendMessage(sender, PluginMessages.parsePlayerName(player, message)); - PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true); + PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), false); + PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, false, false); + Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> { + Bukkit.getPluginManager().callEvent(toggleEvent); + if (toggleEvent.isSendMessage()) { + PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().getPvp_disabled()); + } + }); } else { if (PreventStabbyPermission.COMMAND_TOGGLE_OTHERS.doesCommandSenderHave(sender)) { diff --git a/src/main/java/me/youhavetrouble/preventstabby/hooks/PlacoholderApiHook.java b/src/main/java/me/youhavetrouble/preventstabby/hooks/PlacoholderApiHook.java index 722daf5..c11c4db 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/hooks/PlacoholderApiHook.java +++ b/src/main/java/me/youhavetrouble/preventstabby/hooks/PlacoholderApiHook.java @@ -55,7 +55,7 @@ public class PlacoholderApiHook extends PlaceholderExpansion { if (!player.isOnline()) { return legacyComponentSerializer.serialize(PluginMessages.parseMessage(plugin.getConfigCache().getPlaceholder_not_in_combat())); } - long seconds = plugin.getPlayerManager().getPlayer(uuid).getCombattime() - Instant.now().getEpochSecond(); + long seconds = plugin.getPlayerManager().getPlayer(uuid).getCombatTime(); if (seconds > 0) { String msg = plugin.getConfigCache().getPlaceholder_combat_time(); msg = msg.replaceAll("%time%", String.valueOf(seconds)); diff --git a/src/main/java/me/youhavetrouble/preventstabby/hooks/WorldGuardHook.java b/src/main/java/me/youhavetrouble/preventstabby/hooks/WorldGuardHook.java index 8cf614d..a01e90c 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/hooks/WorldGuardHook.java +++ b/src/main/java/me/youhavetrouble/preventstabby/hooks/WorldGuardHook.java @@ -12,9 +12,8 @@ import com.sk89q.worldguard.protection.flags.registry.FlagConflictException; import com.sk89q.worldguard.protection.flags.registry.FlagRegistry; import com.sk89q.worldguard.protection.regions.RegionContainer; import com.sk89q.worldguard.protection.regions.RegionQuery; -import me.youhavetrouble.preventstabby.PreventStabby; +import org.bukkit.Bukkit; import org.bukkit.entity.Player; -import org.bukkit.plugin.Plugin; public class WorldGuardHook { @@ -22,19 +21,18 @@ public class WorldGuardHook { public static StateFlag FORCE_PVP_FLAG; public static void init() { - PreventStabby plugin = PreventStabby.getPlugin(); try { Class.forName("com.sk89q.worldguard.protection.flags.registry.FlagRegistry"); WorldGuardPlugin worldGuardPlugin = WorldGuardPlugin.inst(); if (WorldGuard.getInstance() == null || worldGuardPlugin == null) return; - plugin.getLogger().info("Hooking into WorldGuard"); + Bukkit.getLogger().info("[PreventStabby] Hooking into WorldGuard"); flagRegistry = WorldGuard.getInstance().getFlagRegistry(); - createForcePvpFlag(plugin); + createForcePvpFlag(); } catch (NoClassDefFoundError | ClassNotFoundException ignored) { } } - private static void createForcePvpFlag(Plugin plugin) { + private static void createForcePvpFlag() { if (flagRegistry == null) return; String flagName = "preventstabby-force-pvp"; try { @@ -46,7 +44,7 @@ public class WorldGuardHook { if (existing instanceof StateFlag) { FORCE_PVP_FLAG = (StateFlag) existing; } else { - plugin.getLogger().severe("There is a conflict between flag names!"); + Bukkit.getLogger().severe("[PreventStabby] There is a conflict between flag names!"); } } } diff --git a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerData.java b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerData.java index d580d2d..01f61e3 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerData.java +++ b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerData.java @@ -5,6 +5,9 @@ import me.youhavetrouble.preventstabby.PreventStabby; import java.time.Instant; import java.util.UUID; +/** + * PreventStabby player data keeper.
+ */ public class PlayerData { private final UUID playerUuid; @@ -18,70 +21,92 @@ public class PlayerData { this.loginTimestamp = Instant.now().getEpochSecond()-1; this.teleportTimestamp = Instant.now().getEpochSecond()-1; this.inCombat = false; - refreshCachetime(); + refreshCacheTime(); } public UUID getPlayerUuid() { return playerUuid; } + /** + * 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; } - public long getCachetime() { + protected long getCachetime() { return cachetime; } - public void refreshCachetime() { - this.cachetime = Instant.now().getEpochSecond()+ PreventStabby.getPlugin().getConfigCache().getCache_time(); + protected void refreshCacheTime() { + this.cachetime = Instant.now().getEpochSecond() + PreventStabby.getPlugin().getConfigCache().getCache_time(); } - public long getCombattime() { - return combattime; + /** + * Time left until the end of combat in seconds. + * @return Time left until the end of combat in seconds.
+ * Return of 0 means out of combat or about to be out of combat. + */ + public long getCombatTime() { + return Math.max(combattime - Instant.now().getEpochSecond(), 0); } - - public void setCombattime(long combattime) { + + protected void setCombattime(long combattime) { this.combattime = combattime; } + /** + * 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(); } - public boolean getLastCombatCheck() { + protected boolean getLastCombatCheck() { return lastCombatCheck; } - public void setLastCombatCheck(boolean bool) { + protected void setLastCombatCheck(boolean bool) { lastCombatCheck = bool; } - public void setLoginTimestamp(long loginTimestamp) { + protected void setLoginTimestamp(long loginTimestamp) { this.loginTimestamp = loginTimestamp + PreventStabby.getPlugin().getConfigCache().getLogin_protection_time()-1; } - public long getLoginTimestamp() { + protected long getLoginTimestamp() { return loginTimestamp; } - public void setTeleportTimestamp(long teleportTimestamp) { + protected void setTeleportTimestamp(long teleportTimestamp) { this.teleportTimestamp = teleportTimestamp + PreventStabby.getPlugin().getConfigCache().getTeleport_protection_time()-1; } - public long getTeleportTimestamp() { + protected long getTeleportTimestamp() { return teleportTimestamp; } + /** + * Returns player's current combat state. + * @return Player's current combat state. + */ public boolean isInCombat() { return inCombat; } - public void setInCombat(boolean inCombat) { + protected void setInCombat(boolean inCombat) { this.inCombat = inCombat; } } diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerDeathListener.java b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerDeathListener.java similarity index 87% rename from src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerDeathListener.java rename to src/main/java/me/youhavetrouble/preventstabby/players/PlayerDeathListener.java index d506f9a..5e177da 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerDeathListener.java +++ b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerDeathListener.java @@ -1,7 +1,6 @@ -package me.youhavetrouble.preventstabby.listeners.player; +package me.youhavetrouble.preventstabby.players; import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.players.PlayerData; import me.youhavetrouble.preventstabby.util.PreventStabbyListener; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerJoinAndLeaveListener.java b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerJoinAndLeaveListener.java similarity index 96% rename from src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerJoinAndLeaveListener.java rename to src/main/java/me/youhavetrouble/preventstabby/players/PlayerJoinAndLeaveListener.java index 8e8463f..416691c 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerJoinAndLeaveListener.java +++ b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerJoinAndLeaveListener.java @@ -1,4 +1,4 @@ -package me.youhavetrouble.preventstabby.listeners.player; +package me.youhavetrouble.preventstabby.players; import me.youhavetrouble.preventstabby.PreventStabby; import me.youhavetrouble.preventstabby.players.PlayerData; @@ -34,7 +34,7 @@ public class PlayerJoinAndLeaveListener implements Listener { }); return; } - playerData.refreshCachetime(); + playerData.refreshCacheTime(); playerData.setLoginTimestamp(time); } diff --git a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerManager.java b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerManager.java index 788716a..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/listeners/player/PlayerTeleportListener.java b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerTeleportListener.java similarity index 82% rename from src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerTeleportListener.java rename to src/main/java/me/youhavetrouble/preventstabby/players/PlayerTeleportListener.java index a76ecb7..ab6ad56 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerTeleportListener.java +++ b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerTeleportListener.java @@ -1,8 +1,6 @@ -package me.youhavetrouble.preventstabby.listeners.player; +package me.youhavetrouble.preventstabby.players; import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.players.PlayerData; -import me.youhavetrouble.preventstabby.players.SmartCache; import me.youhavetrouble.preventstabby.util.PreventStabbyListener; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; 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 { diff --git a/src/main/java/me/youhavetrouble/preventstabby/util/CombatTimer.java b/src/main/java/me/youhavetrouble/preventstabby/util/CombatTimer.java index 854535f..ce1eba5 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/util/CombatTimer.java +++ b/src/main/java/me/youhavetrouble/preventstabby/util/CombatTimer.java @@ -11,8 +11,7 @@ public class CombatTimer { public static void refreshPlayersCombatTime(UUID uuid) { try { - long now = Instant.now().getEpochSecond(); - long combattime = PreventStabby.getPlugin().getSmartCache().getPlayerData(uuid).getCombattime(); + long combattime = PreventStabby.getPlugin().getSmartCache().getPlayerData(uuid).getCombatTime(); Player player = Bukkit.getPlayer(uuid); if (player == null || !player.isOnline()) return; @@ -22,7 +21,7 @@ public class CombatTimer { if (playerEnterCombatEvent.isCancelled()) return; PreventStabby.getPlugin().getPlayerManager().refreshPlayersCombatTime(uuid); - if (combattime <= now) { + if (combattime <= 0) { PluginMessages.sendActionBar(uuid, PreventStabby.getPlugin().getConfigCache().getEntering_combat()); } }); @@ -38,7 +37,7 @@ public class CombatTimer { public static boolean isInCombat(UUID uuid) { try { - return PreventStabby.getPlugin().getPlayerManager().getPlayer(uuid).getCombattime() >= Instant.now().getEpochSecond(); + return PreventStabby.getPlugin().getPlayerManager().getPlayer(uuid).getCombatTime() >= Instant.now().getEpochSecond(); } catch (Exception e) { return false; }