diff --git a/src/main/java/eu/endermite/togglepvp/players/PlayerManager.java b/src/main/java/eu/endermite/togglepvp/players/PlayerManager.java index f30f301..6752250 100644 --- a/src/main/java/eu/endermite/togglepvp/players/PlayerManager.java +++ b/src/main/java/eu/endermite/togglepvp/players/PlayerManager.java @@ -11,7 +11,6 @@ import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitTask; import java.time.Instant; import java.util.HashMap; -import java.util.Map; import java.util.UUID; public class PlayerManager { @@ -27,30 +26,24 @@ public class PlayerManager { playerList.put(p.getUniqueId(), playerData); } - combatTrackerTask = Bukkit.getScheduler().runTaskTimerAsynchronously(TogglePvp.getPlugin(), () -> { - for (Map.Entry set : playerList.entrySet()) { - UUID uuid = set.getKey(); - PlayerData playerData = set.getValue(); - if (!CombatTimer.isInCombat(uuid)) { - if (playerData.getLastCombatCheck()) { - PlayerLeaveCombatEvent playerLeaveCombatEvent = new PlayerLeaveCombatEvent(Bukkit.getPlayer(uuid)); - Bukkit.getScheduler().runTask(TogglePvp.getPlugin(), () -> { - Bukkit.getPluginManager().callEvent(playerLeaveCombatEvent); - if (playerLeaveCombatEvent.isCancelled()) { - playerData.setLastCombatCheck(true); - playerData.refreshCombatTime(); - } else { - playerData.setLastCombatCheck(false); - playerData.setInCombat(false); - PluginMessages.sendActionBar(uuid, TogglePvp.getPlugin().getConfigCache().getLeaving_combat()); - } - }); + combatTrackerTask = Bukkit.getScheduler().runTaskTimerAsynchronously(TogglePvp.getPlugin(), () -> playerList.forEach((uuid, playerData) -> { + if (!(!CombatTimer.isInCombat(uuid) && playerData.getLastCombatCheck())) { + PlayerLeaveCombatEvent playerLeaveCombatEvent = new PlayerLeaveCombatEvent(Bukkit.getPlayer(uuid)); + Bukkit.getScheduler().runTask(TogglePvp.getPlugin(), () -> { + Bukkit.getPluginManager().callEvent(playerLeaveCombatEvent); + if (playerLeaveCombatEvent.isCancelled()) { + playerData.setLastCombatCheck(true); + playerData.refreshCombatTime(); + } else { + playerData.setLastCombatCheck(false); + playerData.setInCombat(false); + PluginMessages.sendActionBar(uuid, TogglePvp.getPlugin().getConfigCache().getLeaving_combat()); } - } else { - set.getValue().setLastCombatCheck(true); - } + }); + } else { + playerData.setLastCombatCheck(true); } - }, 20, 20); + }), 20, 20); } public void refreshPlayersCacheTime(UUID uuid) { diff --git a/src/main/java/eu/endermite/togglepvp/util/CombatTimer.java b/src/main/java/eu/endermite/togglepvp/util/CombatTimer.java index e59f0e9..e114840 100644 --- a/src/main/java/eu/endermite/togglepvp/util/CombatTimer.java +++ b/src/main/java/eu/endermite/togglepvp/util/CombatTimer.java @@ -4,7 +4,6 @@ import eu.endermite.togglepvp.TogglePvp; import eu.endermite.togglepvp.api.event.PlayerEnterCombatEvent; import org.bukkit.Bukkit; import org.bukkit.entity.Player; - import java.time.Instant; import java.util.UUID; @@ -15,22 +14,20 @@ public class CombatTimer { long now = Instant.now().getEpochSecond(); long combattime = TogglePvp.getPlugin().getSmartCache().getPlayerData(uuid).getCombattime(); - Player player = Bukkit.getPlayer(uuid); - Bukkit.getScheduler().runTask(TogglePvp.getPlugin(), () -> { - PlayerEnterCombatEvent playerEnterCombatEvent = new PlayerEnterCombatEvent(player); - Bukkit.getPluginManager().callEvent(playerEnterCombatEvent); - if (playerEnterCombatEvent.isCancelled()) - return; - TogglePvp.getPlugin().getPlayerManager().refreshPlayersCombatTime(uuid); + Player player = Bukkit.getPlayer(uuid); + PlayerEnterCombatEvent playerEnterCombatEvent = new PlayerEnterCombatEvent(player); + Bukkit.getScheduler().runTask(TogglePvp.getPlugin(), () -> { + Bukkit.getPluginManager().callEvent(playerEnterCombatEvent); + if (playerEnterCombatEvent.isCancelled()) + return; + TogglePvp.getPlugin().getPlayerManager().refreshPlayersCombatTime(uuid); - if (combattime <= now) { - PluginMessages.sendActionBar(uuid, TogglePvp.getPlugin().getConfigCache().getEntering_combat()); - } - }); - - - - } catch (Exception ignored) {} + if (combattime <= now) { + PluginMessages.sendActionBar(uuid, TogglePvp.getPlugin().getConfigCache().getEntering_combat()); + } + }); + } catch (Exception ignored) { + } } public static void refreshPlayersCombatTime(UUID attacker_uuid, UUID victim_uuid) {