Fixed CME when refreshing combat

This commit is contained in:
YouHaveTrouble
2021-03-16 19:13:55 +01:00
parent 3b56d57faf
commit 1fa2a6f6a8
2 changed files with 29 additions and 39 deletions
@@ -11,7 +11,6 @@ import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitTask; import org.bukkit.scheduler.BukkitTask;
import java.time.Instant; import java.time.Instant;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map;
import java.util.UUID; import java.util.UUID;
public class PlayerManager { public class PlayerManager {
@@ -27,12 +26,8 @@ public class PlayerManager {
playerList.put(p.getUniqueId(), playerData); playerList.put(p.getUniqueId(), playerData);
} }
combatTrackerTask = Bukkit.getScheduler().runTaskTimerAsynchronously(TogglePvp.getPlugin(), () -> { combatTrackerTask = Bukkit.getScheduler().runTaskTimerAsynchronously(TogglePvp.getPlugin(), () -> playerList.forEach((uuid, playerData) -> {
for (Map.Entry<UUID, PlayerData> set : playerList.entrySet()) { if (!(!CombatTimer.isInCombat(uuid) && playerData.getLastCombatCheck())) {
UUID uuid = set.getKey();
PlayerData playerData = set.getValue();
if (!CombatTimer.isInCombat(uuid)) {
if (playerData.getLastCombatCheck()) {
PlayerLeaveCombatEvent playerLeaveCombatEvent = new PlayerLeaveCombatEvent(Bukkit.getPlayer(uuid)); PlayerLeaveCombatEvent playerLeaveCombatEvent = new PlayerLeaveCombatEvent(Bukkit.getPlayer(uuid));
Bukkit.getScheduler().runTask(TogglePvp.getPlugin(), () -> { Bukkit.getScheduler().runTask(TogglePvp.getPlugin(), () -> {
Bukkit.getPluginManager().callEvent(playerLeaveCombatEvent); Bukkit.getPluginManager().callEvent(playerLeaveCombatEvent);
@@ -45,12 +40,10 @@ public class PlayerManager {
PluginMessages.sendActionBar(uuid, TogglePvp.getPlugin().getConfigCache().getLeaving_combat()); PluginMessages.sendActionBar(uuid, TogglePvp.getPlugin().getConfigCache().getLeaving_combat());
} }
}); });
}
} else { } else {
set.getValue().setLastCombatCheck(true); playerData.setLastCombatCheck(true);
} }
} }), 20, 20);
}, 20, 20);
} }
public void refreshPlayersCacheTime(UUID uuid) { public void refreshPlayersCacheTime(UUID uuid) {
@@ -4,7 +4,6 @@ import eu.endermite.togglepvp.TogglePvp;
import eu.endermite.togglepvp.api.event.PlayerEnterCombatEvent; import eu.endermite.togglepvp.api.event.PlayerEnterCombatEvent;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.time.Instant; import java.time.Instant;
import java.util.UUID; import java.util.UUID;
@@ -16,8 +15,8 @@ public class CombatTimer {
long combattime = TogglePvp.getPlugin().getSmartCache().getPlayerData(uuid).getCombattime(); long combattime = TogglePvp.getPlugin().getSmartCache().getPlayerData(uuid).getCombattime();
Player player = Bukkit.getPlayer(uuid); Player player = Bukkit.getPlayer(uuid);
Bukkit.getScheduler().runTask(TogglePvp.getPlugin(), () -> {
PlayerEnterCombatEvent playerEnterCombatEvent = new PlayerEnterCombatEvent(player); PlayerEnterCombatEvent playerEnterCombatEvent = new PlayerEnterCombatEvent(player);
Bukkit.getScheduler().runTask(TogglePvp.getPlugin(), () -> {
Bukkit.getPluginManager().callEvent(playerEnterCombatEvent); Bukkit.getPluginManager().callEvent(playerEnterCombatEvent);
if (playerEnterCombatEvent.isCancelled()) if (playerEnterCombatEvent.isCancelled())
return; return;
@@ -27,10 +26,8 @@ public class CombatTimer {
PluginMessages.sendActionBar(uuid, TogglePvp.getPlugin().getConfigCache().getEntering_combat()); PluginMessages.sendActionBar(uuid, TogglePvp.getPlugin().getConfigCache().getEntering_combat());
} }
}); });
} catch (Exception ignored) {
}
} catch (Exception ignored) {}
} }
public static void refreshPlayersCombatTime(UUID attacker_uuid, UUID victim_uuid) { public static void refreshPlayersCombatTime(UUID attacker_uuid, UUID victim_uuid) {