diff --git a/pom.xml b/pom.xml
index 3ad1ad2..3270456 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
me.youhavetrouble.preventstabby
PreventStabby
- 2.1.3
+ 2.1.4-test
jar
PreventStabby
@@ -85,7 +85,7 @@
io.papermc.paper
paper-api
- 1.21-R0.1-SNAPSHOT
+ 1.21.11-R0.1-SNAPSHOT
provided
diff --git a/src/main/java/me/youhavetrouble/preventstabby/data/PlayerManager.java b/src/main/java/me/youhavetrouble/preventstabby/data/PlayerManager.java
index 7d0825f..685c6ac 100644
--- a/src/main/java/me/youhavetrouble/preventstabby/data/PlayerManager.java
+++ b/src/main/java/me/youhavetrouble/preventstabby/data/PlayerManager.java
@@ -176,7 +176,14 @@ public class PlayerManager {
}
}
- if (!attackerPlayerData.isPvpEnabled() || (PreventStabby.worldGuardHookEnabled() && !WorldGuardHook.isPlayerForcedToPvp(Bukkit.getPlayer(attackerId)))) {
+ Boolean attackerForcedPvpState = null;
+ Boolean victimForcedPvpState = null;
+ if (PreventStabby.worldGuardHookEnabled()) {
+ attackerForcedPvpState = WorldGuardHook.isPlayerForcedToPvp(Bukkit.getPlayer(attackerId));
+ victimForcedPvpState = WorldGuardHook.isPlayerForcedToPvp(Bukkit.getPlayer(victimId));
+ }
+
+ if (!attackerPlayerData.isPvpEnabled() || Boolean.FALSE.equals(attackerForcedPvpState)) {
String message = switch (victimClassifier) {
case PLAYER -> plugin.getConfigCache().cannot_attack_attacker;
case PET -> plugin.getConfigCache().cannot_attack_pets_victim;
@@ -186,7 +193,7 @@ public class PlayerManager {
return new DamageCheckResult(false, attackerId, victimId, message, victimClassifier.equals(Target.EntityClassifier.PLAYER));
}
- if (!victimPlayerData.isPvpEnabled() || (PreventStabby.worldGuardHookEnabled() && !WorldGuardHook.isPlayerForcedToPvp(Bukkit.getPlayer(victimId)))) {
+ if (!victimPlayerData.isPvpEnabled() || Boolean.FALSE.equals(victimForcedPvpState)) {
String message = switch (victimClassifier) {
case PLAYER -> plugin.getConfigCache().cannot_attack_victim;
case PET -> plugin.getConfigCache().cannot_attack_pets_attacker;
diff --git a/src/main/java/me/youhavetrouble/preventstabby/hooks/WorldGuardHook.java b/src/main/java/me/youhavetrouble/preventstabby/hooks/WorldGuardHook.java
index 5130d4b..79eee69 100644
--- a/src/main/java/me/youhavetrouble/preventstabby/hooks/WorldGuardHook.java
+++ b/src/main/java/me/youhavetrouble/preventstabby/hooks/WorldGuardHook.java
@@ -51,7 +51,7 @@ public class WorldGuardHook {
}
}
- public static boolean isPlayerForcedToPvp(Player player) {
+ public static Boolean isPlayerForcedToPvp(Player player) {
if (player == null) return false;
if (!PreventStabby.worldGuardHookEnabled()) return false;
RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer();
@@ -60,7 +60,11 @@ public class WorldGuardHook {
if (loc.getWorld() == null) return false;
LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player);
ApplicableRegionSet set = query.getApplicableRegions(new Location(BukkitAdapter.adapt(loc.getWorld()), loc.getX(), loc.getY(), loc.getZ()));
- return set.testState(localPlayer, FORCE_PVP_FLAG);
+ return switch (set.queryState(localPlayer, FORCE_PVP_FLAG)) {
+ case ALLOW -> true;
+ case DENY -> false;
+ case null-> null;
+ };
}
}