implement pvp state override command and api

This commit is contained in:
2022-06-17 21:12:55 +02:00
parent b99c14b631
commit 9b18c435f6
11 changed files with 153 additions and 22 deletions
@@ -7,6 +7,7 @@ import me.youhavetrouble.preventstabby.hooks.WorldGuardHook;
import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PluginMessages;
import lombok.Getter;
import me.youhavetrouble.preventstabby.util.PvpState;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitTask;
@@ -20,6 +21,8 @@ public class PlayerManager {
@Getter
ConcurrentHashMap<UUID, PlayerData> playerList = new ConcurrentHashMap<>();
private PvpState pvpForcedState = PvpState.NONE;
public final BukkitTask combatTrackerTask;
public PlayerManager() {
@@ -61,18 +64,13 @@ public class PlayerManager {
}
public void refreshPlayersCombatTime(UUID uuid) {
try {
PlayerData data = playerList.get(uuid);
if (data == null)
return;
Player player = Bukkit.getPlayer(uuid);
if (player == null || player.isDead())
return;
PlayerData data = playerList.get(uuid);
if (data == null) return;
Player player = Bukkit.getPlayer(uuid);
if (player == null || player.isDead()) return;
data.refreshCombatTime();
data.setInCombat(true);
data.refreshCombatTime();
data.setInCombat(true);
} catch (Exception ignored) {
}
}
public PlayerData getPlayer(UUID uuid) {
@@ -112,6 +110,17 @@ public class PlayerManager {
if (checkVictimSpawnProtection && hasLoginProtection(victim)) return false;
if (checkVictimSpawnProtection && hasTeleportProtection(victim)) return false;
switch (pvpForcedState) {
case ENABLED:
return true;
case DISABLED:
PluginMessages.sendActionBar(attacker, PreventStabby.getPlugin().getConfigCache().getCannot_attack_pvp_force_off());
return false;
case NONE:
default:
break;
}
SmartCache smartCache = PreventStabby.getPlugin().getSmartCache();
if (!smartCache.getPlayerData(attacker).isPvpEnabled()) {
@@ -157,4 +166,11 @@ public class PlayerManager {
return Instant.now().getEpochSecond() < smartCache.getPlayerData(uuid).getTeleportTimestamp();
}
public PvpState getForcedPvpState() {
return pvpForcedState;
}
public void setForcedPvpState(PvpState forcedPvpState) {
this.pvpForcedState = forcedPvpState;
}
}