mirror of
https://github.com/YouHaveTrouble/PreventStabby.git
synced 2026-05-12 05:16:55 +00:00
fix worldguard hook errors
This commit is contained in:
@@ -25,6 +25,7 @@ public final class PreventStabby extends JavaPlugin {
|
|||||||
private PlayerManager playerManager;
|
private PlayerManager playerManager;
|
||||||
private DatabaseSQLite sqLite;
|
private DatabaseSQLite sqLite;
|
||||||
private SmartCache smartCache;
|
private SmartCache smartCache;
|
||||||
|
private static boolean worldGuardHook;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
@@ -45,7 +46,7 @@ public final class PreventStabby extends JavaPlugin {
|
|||||||
smartCache.runSmartCache();
|
smartCache.runSmartCache();
|
||||||
|
|
||||||
// Register listeners
|
// Register listeners
|
||||||
Reflections reflections = new Reflections(new String[]{"me.youhavetrouble.preventstabby"});
|
Reflections reflections = new Reflections((Object[]) new String[]{"me.youhavetrouble.preventstabby"});
|
||||||
Set<Class<?>> listenerClasses = reflections.getTypesAnnotatedWith(PreventStabbyListener.class);
|
Set<Class<?>> listenerClasses = reflections.getTypesAnnotatedWith(PreventStabbyListener.class);
|
||||||
listenerClasses.forEach((listener)-> {
|
listenerClasses.forEach((listener)-> {
|
||||||
try {
|
try {
|
||||||
@@ -71,11 +72,18 @@ public final class PreventStabby extends JavaPlugin {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
WorldGuardHook.init();
|
WorldGuardHook.init();
|
||||||
} catch (NoClassDefFoundError ignored) {}
|
worldGuardHook = true;
|
||||||
|
} catch (NoClassDefFoundError e) {
|
||||||
|
worldGuardHook = false;
|
||||||
|
}
|
||||||
|
|
||||||
Metrics metrics = new Metrics(this, 10597);
|
Metrics metrics = new Metrics(this, 10597);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean worldGuardHookEnabled() {
|
||||||
|
return worldGuardHook;
|
||||||
|
}
|
||||||
|
|
||||||
public void reloadPluginConfig() {
|
public void reloadPluginConfig() {
|
||||||
configCache = new ConfigCache();
|
configCache = new ConfigCache();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ public class WorldGuardHook {
|
|||||||
|
|
||||||
private static FlagRegistry flagRegistry;
|
private static FlagRegistry flagRegistry;
|
||||||
public static StateFlag FORCE_PVP_FLAG;
|
public static StateFlag FORCE_PVP_FLAG;
|
||||||
private static boolean enabled = false;
|
|
||||||
|
|
||||||
public static void init() {
|
public static void init() {
|
||||||
PreventStabby plugin = PreventStabby.getPlugin();
|
PreventStabby plugin = PreventStabby.getPlugin();
|
||||||
@@ -31,13 +30,11 @@ public class WorldGuardHook {
|
|||||||
plugin.getLogger().info("Hooking into WorldGuard");
|
plugin.getLogger().info("Hooking into WorldGuard");
|
||||||
flagRegistry = WorldGuard.getInstance().getFlagRegistry();
|
flagRegistry = WorldGuard.getInstance().getFlagRegistry();
|
||||||
createForcePvpFlag(plugin);
|
createForcePvpFlag(plugin);
|
||||||
enabled = true;
|
|
||||||
} catch (NoClassDefFoundError | ClassNotFoundException ignored) {
|
} catch (NoClassDefFoundError | ClassNotFoundException ignored) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void createForcePvpFlag(Plugin plugin) {
|
private static void createForcePvpFlag(Plugin plugin) {
|
||||||
if (!enabled) return;
|
|
||||||
if (flagRegistry == null) return;
|
if (flagRegistry == null) return;
|
||||||
String flagName = "preventstabby-force-pvp";
|
String flagName = "preventstabby-force-pvp";
|
||||||
try {
|
try {
|
||||||
@@ -55,7 +52,6 @@ public class WorldGuardHook {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isPlayerForcedToPvp(Player player) {
|
public static boolean isPlayerForcedToPvp(Player player) {
|
||||||
if (!enabled) return false;
|
|
||||||
RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer();
|
RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer();
|
||||||
RegionQuery query = container.createQuery();
|
RegionQuery query = container.createQuery();
|
||||||
org.bukkit.Location loc = player.getLocation();
|
org.bukkit.Location loc = player.getLocation();
|
||||||
@@ -64,8 +60,4 @@ public class WorldGuardHook {
|
|||||||
return set.testState(localPlayer, FORCE_PVP_FLAG);
|
return set.testState(localPlayer, FORCE_PVP_FLAG);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isHooked() {
|
|
||||||
return enabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,24 +112,25 @@ public class PlayerManager {
|
|||||||
public boolean canDamage(UUID attacker, UUID victim, boolean sendDenyMessage, boolean checkVictimSpawnProtection) {
|
public boolean canDamage(UUID attacker, UUID victim, boolean sendDenyMessage, boolean checkVictimSpawnProtection) {
|
||||||
|
|
||||||
if (hasLoginProtection(attacker) || hasTeleportProtection(attacker)) return false;
|
if (hasLoginProtection(attacker) || hasTeleportProtection(attacker)) return false;
|
||||||
|
|
||||||
if (checkVictimSpawnProtection && hasLoginProtection(victim)) return false;
|
if (checkVictimSpawnProtection && hasLoginProtection(victim)) return false;
|
||||||
|
|
||||||
if (checkVictimSpawnProtection && hasTeleportProtection(victim)) return false;
|
if (checkVictimSpawnProtection && hasTeleportProtection(victim)) return false;
|
||||||
|
|
||||||
SmartCache smartCache = PreventStabby.getPlugin().getSmartCache();
|
SmartCache smartCache = PreventStabby.getPlugin().getSmartCache();
|
||||||
|
|
||||||
Player attackerPlayer = Bukkit.getPlayer(attacker);
|
if (!smartCache.getPlayerData(attacker).isPvpEnabled()) {
|
||||||
Player victimPlayer = Bukkit.getPlayer(victim);
|
Player attackerPlayer = Bukkit.getPlayer(attacker);
|
||||||
|
if (PreventStabby.worldGuardHookEnabled() && WorldGuardHook.isPlayerForcedToPvp(attackerPlayer)) return true;
|
||||||
|
|
||||||
if (!smartCache.getPlayerData(attacker).isPvpEnabled() && (attackerPlayer != null && !isInForcedPvpRegion(attackerPlayer))) {
|
|
||||||
if (sendDenyMessage) {
|
if (sendDenyMessage) {
|
||||||
ConfigCache config = PreventStabby.getPlugin().getConfigCache();
|
ConfigCache config = PreventStabby.getPlugin().getConfigCache();
|
||||||
PluginMessages.sendActionBar(attacker, config.getCannot_attack_attacker());
|
PluginMessages.sendActionBar(attacker, config.getCannot_attack_attacker());
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!smartCache.getPlayerData(victim).isPvpEnabled() && (victimPlayer != null && !isInForcedPvpRegion(victimPlayer))) {
|
if (!smartCache.getPlayerData(victim).isPvpEnabled()) {
|
||||||
|
Player victimPlayer = Bukkit.getPlayer(victim);
|
||||||
|
if (PreventStabby.worldGuardHookEnabled() && WorldGuardHook.isPlayerForcedToPvp(victimPlayer)) return true;
|
||||||
|
|
||||||
if (sendDenyMessage) {
|
if (sendDenyMessage) {
|
||||||
ConfigCache config = PreventStabby.getPlugin().getConfigCache();
|
ConfigCache config = PreventStabby.getPlugin().getConfigCache();
|
||||||
PluginMessages.sendActionBar(attacker, config.getCannot_attack_victim());
|
PluginMessages.sendActionBar(attacker, config.getCannot_attack_victim());
|
||||||
@@ -157,9 +158,4 @@ public class PlayerManager {
|
|||||||
return Instant.now().getEpochSecond() < smartCache.getPlayerData(uuid).getTeleportTimestamp();
|
return Instant.now().getEpochSecond() < smartCache.getPlayerData(uuid).getTeleportTimestamp();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isInForcedPvpRegion(Player player) {
|
|
||||||
if (!WorldGuardHook.isHooked()) return false;
|
|
||||||
return WorldGuardHook.isPlayerForcedToPvp(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user