From d859fd0aaa3ab5b1fa4f1db9bca55be39e41dd40 Mon Sep 17 00:00:00 2001 From: youhavetrouble Date: Thu, 22 Jun 2023 18:41:16 +0200 Subject: [PATCH] refactors, code style fixes, rpeventing events from firing when not needed --- .../preventstabby/PreventStabby.java | 4 +- .../api/event/PlayerLeaveCombatEvent.java | 6 ++ .../api/event/PlayerTogglePvpEvent.java | 6 ++ .../commands/PvpToggleCommand.java | 89 +++++++++++-------- .../preventstabby/config/ConfigCache.java | 4 + .../config/PreventStabbyPermission.java | 1 - ...erApiHook.java => PlaceholderApiHook.java} | 6 +- .../preventstabby/hooks/WorldGuardHook.java | 6 +- .../preventstabby/players/PlayerData.java | 2 +- .../players/PlayerDeathListener.java | 4 +- .../players/PlayerJoinAndLeaveListener.java | 29 +++--- .../preventstabby/players/PlayerManager.java | 76 +++++++++------- .../players/PlayerTeleportListener.java | 4 +- .../preventstabby/players/SmartCache.java | 35 ++++---- 14 files changed, 153 insertions(+), 119 deletions(-) rename src/main/java/me/youhavetrouble/preventstabby/hooks/{PlacoholderApiHook.java => PlaceholderApiHook.java} (93%) diff --git a/src/main/java/me/youhavetrouble/preventstabby/PreventStabby.java b/src/main/java/me/youhavetrouble/preventstabby/PreventStabby.java index 5ff7fce..d9c7e25 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/PreventStabby.java +++ b/src/main/java/me/youhavetrouble/preventstabby/PreventStabby.java @@ -2,7 +2,7 @@ package me.youhavetrouble.preventstabby; import me.youhavetrouble.preventstabby.commands.MainCommand; import me.youhavetrouble.preventstabby.config.ConfigCache; -import me.youhavetrouble.preventstabby.hooks.PlacoholderApiHook; +import me.youhavetrouble.preventstabby.hooks.PlaceholderApiHook; import me.youhavetrouble.preventstabby.hooks.WorldGuardHook; import me.youhavetrouble.preventstabby.players.PlayerManager; import me.youhavetrouble.preventstabby.players.SmartCache; @@ -77,7 +77,7 @@ public final class PreventStabby extends JavaPlugin { pvpCommand.setTabCompleter(mainCommand); if (getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) { - new PlacoholderApiHook(this).register(); + new PlaceholderApiHook(this).register(); } Metrics metrics = new Metrics(this, 14074); diff --git a/src/main/java/me/youhavetrouble/preventstabby/api/event/PlayerLeaveCombatEvent.java b/src/main/java/me/youhavetrouble/preventstabby/api/event/PlayerLeaveCombatEvent.java index b6e3398..db43bb3 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/api/event/PlayerLeaveCombatEvent.java +++ b/src/main/java/me/youhavetrouble/preventstabby/api/event/PlayerLeaveCombatEvent.java @@ -45,4 +45,10 @@ public class PlayerLeaveCombatEvent extends Event implements Cancellable { public HandlerList getHandlers() { return HANDLERS; } + + @NotNull + public static HandlerList getHandlerList() { + return HANDLERS; + } + } 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 c256aa3..c423485 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/api/event/PlayerTogglePvpEvent.java +++ b/src/main/java/me/youhavetrouble/preventstabby/api/event/PlayerTogglePvpEvent.java @@ -59,4 +59,10 @@ public class PlayerTogglePvpEvent extends Event { public HandlerList getHandlers() { return HANDLERS; } + + @NotNull + public static HandlerList getHandlerList() { + return HANDLERS; + } + } diff --git a/src/main/java/me/youhavetrouble/preventstabby/commands/PvpToggleCommand.java b/src/main/java/me/youhavetrouble/preventstabby/commands/PvpToggleCommand.java index 574534f..c133d2e 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/commands/PvpToggleCommand.java +++ b/src/main/java/me/youhavetrouble/preventstabby/commands/PvpToggleCommand.java @@ -19,27 +19,29 @@ public class PvpToggleCommand { } if (args.length <= 1) { - if (sender instanceof Player) { - Player player = (Player) sender; - if (CombatTimer.isInCombat(player.getUniqueId())) { - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat()); - return; - } - boolean currentState = PreventStabby.getPlugin().getPlayerManager().togglePlayerPvpState(player.getUniqueId()); - 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 { + if (!(sender instanceof Player)) { PluginMessages.sendMessage(sender, "Try /pvp toggle "); + return; } + Player player = (Player) sender; + if (CombatTimer.isInCombat(player.getUniqueId())) { + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat()); + return; + } + boolean currentState = PreventStabby.getPlugin().getPlayerManager().togglePlayerPvpState(player.getUniqueId()); + PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, currentState, true); + Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> { + if (PlayerTogglePvpEvent.getHandlerList().getRegisteredListeners().length > 0) { + Bukkit.getPluginManager().callEvent(toggleEvent); + } + if (!toggleEvent.isSendMessage()) return; + if (currentState) { + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_enabled()); + } else { + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_disabled()); + } + + }); } else if (args.length == 2) { if (!PreventStabbyPermission.COMMAND_TOGGLE_OTHERS.doesCommandSenderHave(sender)) { PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getNo_permission()); @@ -61,7 +63,9 @@ public class PvpToggleCommand { 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 (PlayerTogglePvpEvent.getHandlerList().getRegisteredListeners().length > 0) { + Bukkit.getPluginManager().callEvent(toggleEvent); + } if (toggleEvent.isSendMessage()) { if (currentState) { PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().getPvp_enabled()); @@ -88,23 +92,26 @@ public class PvpToggleCommand { return; } if (args.length == 1) { - if (sender instanceof Player) { - Player player = (Player) sender; - if (CombatTimer.isInCombat(player.getUniqueId())) { - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat()); - return; - } - PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true); - 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 { + if (!(sender instanceof Player)) { PluginMessages.sendMessage(sender, "Try /pvp enable "); + return; } + Player player = (Player) sender; + if (CombatTimer.isInCombat(player.getUniqueId())) { + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat()); + return; + } + PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true); + PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, true, true); + Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> { + if (PlayerTogglePvpEvent.getHandlerList().getRegisteredListeners().length > 0) { + Bukkit.getPluginManager().callEvent(toggleEvent); + } + if (toggleEvent.isSendMessage()) { + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_enabled()); + } + }); + } else if (args.length == 2) { if (!PreventStabbyPermission.COMMAND_TOGGLE_OTHERS.doesCommandSenderHave(sender)) { PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getNo_permission()); @@ -127,7 +134,9 @@ public class PvpToggleCommand { PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true); PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, true, false); Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> { - Bukkit.getPluginManager().callEvent(toggleEvent); + if (PlayerTogglePvpEvent.getHandlerList().getRegisteredListeners().length > 0) { + Bukkit.getPluginManager().callEvent(toggleEvent); + } if (toggleEvent.isSendMessage()) { PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().getPvp_enabled()); } @@ -156,7 +165,9 @@ public class PvpToggleCommand { PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), false); PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, false, true); Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> { - Bukkit.getPluginManager().callEvent(toggleEvent); + if (PlayerTogglePvpEvent.getHandlerList().getRegisteredListeners().length > 0) { + Bukkit.getPluginManager().callEvent(toggleEvent); + } if (toggleEvent.isSendMessage()) { PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_disabled()); } @@ -186,7 +197,9 @@ public class PvpToggleCommand { PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), false); PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, false, false); Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> { - Bukkit.getPluginManager().callEvent(toggleEvent); + if (PlayerTogglePvpEvent.getHandlerList().getRegisteredListeners().length > 0) { + Bukkit.getPluginManager().callEvent(toggleEvent); + } if (toggleEvent.isSendMessage()) { PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().getPvp_disabled()); } diff --git a/src/main/java/me/youhavetrouble/preventstabby/config/ConfigCache.java b/src/main/java/me/youhavetrouble/preventstabby/config/ConfigCache.java index ee335db..91264f8 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/config/ConfigCache.java +++ b/src/main/java/me/youhavetrouble/preventstabby/config/ConfigCache.java @@ -10,6 +10,10 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +/** + * TODO get rid of lombok + * TODO parse messages into components and cache that + */ public class ConfigCache { private final PreventStabby plugin = PreventStabby.getPlugin(); diff --git a/src/main/java/me/youhavetrouble/preventstabby/config/PreventStabbyPermission.java b/src/main/java/me/youhavetrouble/preventstabby/config/PreventStabbyPermission.java index deec903..c2d7669 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/config/PreventStabbyPermission.java +++ b/src/main/java/me/youhavetrouble/preventstabby/config/PreventStabbyPermission.java @@ -9,7 +9,6 @@ public enum PreventStabbyPermission { COMMAND_TOGGLE_OTHERS("command.toggle.others"), COMMAND_RELOAD("command.reload"), COMMAND_GLOBAL_TOGGLE("command.toggle.global"), - COMMAND_HELP("command.help"); private final String permission; diff --git a/src/main/java/me/youhavetrouble/preventstabby/hooks/PlacoholderApiHook.java b/src/main/java/me/youhavetrouble/preventstabby/hooks/PlaceholderApiHook.java similarity index 93% rename from src/main/java/me/youhavetrouble/preventstabby/hooks/PlacoholderApiHook.java rename to src/main/java/me/youhavetrouble/preventstabby/hooks/PlaceholderApiHook.java index 38b1f5d..fd7c780 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/hooks/PlacoholderApiHook.java +++ b/src/main/java/me/youhavetrouble/preventstabby/hooks/PlaceholderApiHook.java @@ -3,20 +3,18 @@ package me.youhavetrouble.preventstabby.hooks; import me.clip.placeholderapi.expansion.PlaceholderExpansion; import me.youhavetrouble.preventstabby.PreventStabby; import me.youhavetrouble.preventstabby.util.PluginMessages; -import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import org.bukkit.OfflinePlayer; import org.jetbrains.annotations.NotNull; -import java.time.Instant; import java.util.UUID; -public class PlacoholderApiHook extends PlaceholderExpansion { +public class PlaceholderApiHook extends PlaceholderExpansion { private final PreventStabby plugin; private final LegacyComponentSerializer legacyComponentSerializer; - public PlacoholderApiHook(PreventStabby preventStabby) { + public PlaceholderApiHook(PreventStabby preventStabby) { plugin = preventStabby; this.legacyComponentSerializer = LegacyComponentSerializer.legacyAmpersand(); } diff --git a/src/main/java/me/youhavetrouble/preventstabby/hooks/WorldGuardHook.java b/src/main/java/me/youhavetrouble/preventstabby/hooks/WorldGuardHook.java index a01e90c..a99024f 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/hooks/WorldGuardHook.java +++ b/src/main/java/me/youhavetrouble/preventstabby/hooks/WorldGuardHook.java @@ -12,7 +12,7 @@ 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 org.bukkit.Bukkit; +import me.youhavetrouble.preventstabby.PreventStabby; import org.bukkit.entity.Player; public class WorldGuardHook { @@ -25,7 +25,7 @@ public class WorldGuardHook { Class.forName("com.sk89q.worldguard.protection.flags.registry.FlagRegistry"); WorldGuardPlugin worldGuardPlugin = WorldGuardPlugin.inst(); if (WorldGuard.getInstance() == null || worldGuardPlugin == null) return; - Bukkit.getLogger().info("[PreventStabby] Hooking into WorldGuard"); + PreventStabby.getPlugin().getLogger().info("[PreventStabby] Hooking into WorldGuard"); flagRegistry = WorldGuard.getInstance().getFlagRegistry(); createForcePvpFlag(); } catch (NoClassDefFoundError | ClassNotFoundException ignored) { @@ -44,7 +44,7 @@ public class WorldGuardHook { if (existing instanceof StateFlag) { FORCE_PVP_FLAG = (StateFlag) existing; } else { - Bukkit.getLogger().severe("[PreventStabby] There is a conflict between flag names!"); + PreventStabby.getPlugin().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 01f61e3..52f5268 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerData.java +++ b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerData.java @@ -6,7 +6,7 @@ import java.time.Instant; import java.util.UUID; /** - * PreventStabby player data keeper.
+ * PreventStabby player data keeper. */ public class PlayerData { diff --git a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerDeathListener.java b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerDeathListener.java index 5e177da..ff6ad47 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerDeathListener.java +++ b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerDeathListener.java @@ -6,18 +6,20 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDeathEvent; @PreventStabbyListener public class PlayerDeathListener implements Listener { @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) - public void onPlayerDeath(org.bukkit.event.entity.EntityDeathEvent event) { + public void onPlayerDeath(EntityDeathEvent event) { if (!(event.getEntity() instanceof Player)) return; Player player = (Player) event.getEntity(); PlayerData playerData = PreventStabby.getPlugin().getSmartCache().getPlayerData(player.getUniqueId()); + if (playerData == null) return; playerData.setCombattime(0); playerData.setLastCombatCheck(false); playerData.setInCombat(false); diff --git a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerJoinAndLeaveListener.java b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerJoinAndLeaveListener.java index 416691c..ff33793 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerJoinAndLeaveListener.java +++ b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerJoinAndLeaveListener.java @@ -1,14 +1,14 @@ 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.PluginMessages; import me.youhavetrouble.preventstabby.util.PreventStabbyListener; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; import java.time.Instant; import java.util.UUID; @@ -19,23 +19,23 @@ public class PlayerJoinAndLeaveListener implements Listener { * This event is here to get players saved options on join */ @EventHandler(ignoreCancelled = true) - public void onPlayerJoin(org.bukkit.event.player.PlayerJoinEvent event) { + public void onPlayerJoin(PlayerJoinEvent event) { Player player = event.getPlayer(); UUID uuid = player.getUniqueId(); PlayerData playerData = PreventStabby.getPlugin().getPlayerManager().getPlayer(player.getUniqueId()); long time = Instant.now().getEpochSecond(); - if (playerData == null) { - PreventStabby.getPlugin().getPlayerManager().addPlayer(uuid, new PlayerData(uuid,false)); - Bukkit.getScheduler().runTaskAsynchronously(PreventStabby.getPlugin(), () -> { - PlayerData data = PreventStabby.getPlugin().getSqLite().getPlayerInfo(uuid); - PreventStabby.getPlugin().getPlayerManager().addPlayer(uuid, data); - data.setLoginTimestamp(time); - }); + if (playerData != null) { + playerData.refreshCacheTime(); + playerData.setLoginTimestamp(time); return; } - playerData.refreshCacheTime(); - playerData.setLoginTimestamp(time); + PreventStabby.getPlugin().getPlayerManager().addPlayer(uuid, new PlayerData(uuid, false)); + Bukkit.getScheduler().runTaskAsynchronously(PreventStabby.getPlugin(), () -> { + PlayerData data = PreventStabby.getPlugin().getSqLite().getPlayerInfo(uuid); + PreventStabby.getPlugin().getPlayerManager().addPlayer(uuid, data); + data.setLoginTimestamp(time); + }); } /** @@ -43,14 +43,13 @@ public class PlayerJoinAndLeaveListener implements Listener { * Also punishes players who log out during combat */ @EventHandler - public void onPlayerLeave(org.bukkit.event.player.PlayerQuitEvent event) { + public void onPlayerLeave(PlayerQuitEvent event) { Player player = event.getPlayer(); Bukkit.getScheduler().runTaskAsynchronously(PreventStabby.getPlugin(), () -> PreventStabby.getPlugin().getSqLite().updatePlayerInfo(player.getUniqueId(), PreventStabby.getPlugin().getPlayerManager().getPlayer(player.getUniqueId()))); if (!PreventStabby.getPlugin().getConfigCache().isPunish_for_combat_logout()) return; - SmartCache smartCache = PreventStabby.getPlugin().getSmartCache(); - PlayerData playerData = smartCache.getPlayerData(player.getUniqueId()); + PlayerData playerData = PreventStabby.getPlugin().getSmartCache().getPlayerData(player.getUniqueId()); if (!playerData.isInCombat()) return; diff --git a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerManager.java b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerManager.java index 4b58e88..09b8e37 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerManager.java +++ b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerManager.java @@ -36,24 +36,26 @@ public class PlayerManager { for (PlayerData playerData : playerList.values()) { UUID uuid = playerData.getPlayerUuid(); if (!CombatTimer.isInCombat(uuid)) { - if (playerData.getLastCombatCheck()) { - Player player = Bukkit.getPlayer(uuid); - if (player == null) continue; - PlayerLeaveCombatEvent playerLeaveCombatEvent = new PlayerLeaveCombatEvent(player); - Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> { - Bukkit.getPluginManager().callEvent(playerLeaveCombatEvent); - if (playerLeaveCombatEvent.isCancelled()) { - playerData.refreshCombatTime(); - return; - } - playerData.setLastCombatCheck(false); - playerData.setInCombat(false); - PluginMessages.sendActionBar(uuid, PreventStabby.getPlugin().getConfigCache().getLeaving_combat()); - }); - } - } else { playerData.setLastCombatCheck(true); + continue; } + if (!playerData.getLastCombatCheck()) continue; + Player player = Bukkit.getPlayer(uuid); + if (player == null) continue; + + Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> { + if (PlayerLeaveCombatEvent.getHandlerList().getRegisteredListeners().length > 0) { + PlayerLeaveCombatEvent playerLeaveCombatEvent = new PlayerLeaveCombatEvent(player); + Bukkit.getPluginManager().callEvent(playerLeaveCombatEvent); + if (playerLeaveCombatEvent.isCancelled()) { + playerData.refreshCombatTime(); + return; + } + } + playerData.setLastCombatCheck(false); + playerData.setInCombat(false); + PluginMessages.sendActionBar(uuid, PreventStabby.getPlugin().getConfigCache().getLeaving_combat()); + }); } }, 20, 20); @@ -62,6 +64,7 @@ public class PlayerManager { /** * Sets player in combat and sets combat time to the interval set in config. + * * @see PlayerData#refreshCombatTime() */ public void refreshPlayersCombatTime(UUID uuid) { @@ -75,6 +78,7 @@ public class PlayerManager { /** * 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. */ @@ -88,6 +92,7 @@ public class PlayerManager { /** * 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() @@ -98,7 +103,8 @@ public class PlayerManager { /** * Sets player's personal pvp state. - * @param uuid Player's UUID. + * + * @param uuid Player's UUID. * @param state Pvp state to set. * @see PlayerData#setPvpEnabled(boolean) */ @@ -108,25 +114,23 @@ public class PlayerManager { /** * 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()) { - smartCache.getPlayerData(uuid).setPvpEnabled(false); - return false; - } else { - smartCache.getPlayerData(uuid).setPvpEnabled(true); - return true; - } + PlayerData playerData = PreventStabby.getPlugin().getSmartCache().getPlayerData(uuid); + boolean newState = !playerData.isPvpEnabled(); + playerData.setPvpEnabled(newState); + return newState; } /** * 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 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. */ @@ -136,9 +140,10 @@ public class PlayerManager { /** * 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 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. */ @@ -151,10 +156,11 @@ public class PlayerManager { /** * Check if attacker can harm the victim. - * @param attacker Atacker's UUID. - * @param victim Victim's UUID. - * @param attackerDenyMessage Message that action was denied to the attacker. - * @param victimDenyMessage Message that action was denied to the victim. + * + * @param attacker Atacker's UUID. + * @param victim Victim's UUID. + * @param attackerDenyMessage Message that action was denied to the attacker. + * @param victimDenyMessage Message that action was denied to the victim. * @param checkVictimSpawnProtection Should teleport and spawn protections be taken into account? * @return Whenever attacker can harm the victim. */ @@ -225,6 +231,7 @@ public class PlayerManager { /** * Returns current forced pvp state. + * * @return Current forced pvp state. */ public PvpState getForcedPvpState() { @@ -233,6 +240,7 @@ public class PlayerManager { /** * Sets current forced pvp state. + * * @param forcedPvpState New forced pvp state. */ public void setForcedPvpState(PvpState forcedPvpState) { diff --git a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerTeleportListener.java b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerTeleportListener.java index ab6ad56..bb3db1e 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerTeleportListener.java +++ b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerTeleportListener.java @@ -6,13 +6,15 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerTeleportEvent; + import java.time.Instant; @PreventStabbyListener public class PlayerTeleportListener implements Listener { @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) - public void onPlayerTeleport(org.bukkit.event.player.PlayerTeleportEvent event) { + public void onPlayerTeleport(PlayerTeleportEvent event) { Player player = event.getPlayer(); SmartCache smartCache = PreventStabby.getPlugin().getSmartCache(); PlayerData playerData = smartCache.getPlayerData(player.getUniqueId()); diff --git a/src/main/java/me/youhavetrouble/preventstabby/players/SmartCache.java b/src/main/java/me/youhavetrouble/preventstabby/players/SmartCache.java index db9b124..258ef32 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/players/SmartCache.java +++ b/src/main/java/me/youhavetrouble/preventstabby/players/SmartCache.java @@ -3,6 +3,7 @@ package me.youhavetrouble.preventstabby.players; import me.youhavetrouble.preventstabby.PreventStabby; import org.bukkit.Bukkit; import org.bukkit.entity.Player; + import java.time.Instant; import java.util.Map; import java.util.UUID; @@ -13,39 +14,35 @@ public class SmartCache { Bukkit.getScheduler().runTaskTimerAsynchronously(PreventStabby.getPlugin(), () -> { // Refresh cache timer if player is online for (Map.Entry e : PreventStabby.getPlugin().getPlayerManager().getPlayerList().entrySet()) { - try { - Player player = Bukkit.getPlayer(e.getKey()); - if (player != null && player.isOnline()) { - e.getValue().refreshCacheTime(); - } - } catch (NullPointerException ignored) {} + if (e == null) continue; + Player player = Bukkit.getPlayer(e.getKey()); + if (player != null && player.isOnline()) { + e.getValue().refreshCacheTime(); + } } // Check for entries that should be invalidated try { long now = Instant.now().getEpochSecond(); PreventStabby.getPlugin().getPlayerManager().getPlayerList().entrySet() .removeIf(cacheEntry -> cacheEntry.getValue().getCachetime() < now); - } catch (Exception ignored) {} + } catch (Exception ignored) { + } }, 100, 100); } public PlayerData getPlayerData(UUID uuid) { // Try to get data from cache and refresh it - try { - PlayerData data = PreventStabby.getPlugin().getPlayerManager().getPlayer(uuid); + PlayerData data = PreventStabby.getPlugin().getPlayerManager().getPlayer(uuid); + if (data != null) { data.refreshCacheTime(); return data; - } catch (NullPointerException e) { - // If player data is not in cache get it from database and put into cache - try { - PlayerData playerData = PreventStabby.getPlugin().getSqLite().getPlayerInfo(uuid); - PreventStabby.getPlugin().getPlayerManager().addPlayer(uuid, playerData); - return playerData; - } catch (NullPointerException ex) { - // Return false if database call fails - return new PlayerData(uuid,false); - } } + PlayerData playerData = PreventStabby.getPlugin().getSqLite().getPlayerInfo(uuid); + if (playerData == null) { + playerData = new PlayerData(uuid, false); + } + PreventStabby.getPlugin().getPlayerManager().addPlayer(uuid, playerData); + return playerData; } public void setPlayerPvpState(UUID uuid, boolean state) {