mirror of
https://github.com/YouHaveTrouble/PreventStabby.git
synced 2026-05-12 05:16:55 +00:00
Fixed CME when refreshing combat
This commit is contained in:
@@ -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<UUID, PlayerData> 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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user