Compare commits

..

2 Commits

3 changed files with 17 additions and 6 deletions
+2 -2
View File
@@ -6,7 +6,7 @@
<groupId>me.youhavetrouble.preventstabby</groupId> <groupId>me.youhavetrouble.preventstabby</groupId>
<artifactId>PreventStabby</artifactId> <artifactId>PreventStabby</artifactId>
<version>2.1.3</version> <version>2.1.4</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>PreventStabby</name> <name>PreventStabby</name>
@@ -85,7 +85,7 @@
<dependency> <dependency>
<groupId>io.papermc.paper</groupId> <groupId>io.papermc.paper</groupId>
<artifactId>paper-api</artifactId> <artifactId>paper-api</artifactId>
<version>1.21-R0.1-SNAPSHOT</version> <version>1.21.11-R0.1-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
@@ -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) { String message = switch (victimClassifier) {
case PLAYER -> plugin.getConfigCache().cannot_attack_attacker; case PLAYER -> plugin.getConfigCache().cannot_attack_attacker;
case PET -> plugin.getConfigCache().cannot_attack_pets_victim; 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)); 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) { String message = switch (victimClassifier) {
case PLAYER -> plugin.getConfigCache().cannot_attack_victim; case PLAYER -> plugin.getConfigCache().cannot_attack_victim;
case PET -> plugin.getConfigCache().cannot_attack_pets_attacker; case PET -> plugin.getConfigCache().cannot_attack_pets_attacker;
@@ -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 (player == null) return false;
if (!PreventStabby.worldGuardHookEnabled()) return false; if (!PreventStabby.worldGuardHookEnabled()) return false;
RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer(); RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer();
@@ -60,7 +60,11 @@ public class WorldGuardHook {
if (loc.getWorld() == null) return false; if (loc.getWorld() == null) return false;
LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player); LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player);
ApplicableRegionSet set = query.getApplicableRegions(new Location(BukkitAdapter.adapt(loc.getWorld()), loc.getX(), loc.getY(), loc.getZ())); 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;
};
} }
} }