From b9e2aefc40130e7d4488bd33a88d58f8b4e6a0c0 Mon Sep 17 00:00:00 2001 From: YouHaveTrouble Date: Wed, 14 Feb 2024 20:22:07 +0100 Subject: [PATCH] Remove several game listeners and utility files The commit includes the deletion of several listeners and utility files. These were mainly related to handling specific game events such as interactions with lava and fireworks, combat commands, and actions related to player pets and mounts. The removal is due to refactoring damage source check system --- .../preventstabby/PreventStabby.java | 1 - .../preventstabby/api/PreventStabbyAPI.java | 6 - .../commands/GlobalToggleCommand.java | 8 +- .../preventstabby/commands/HelpCommand.java | 4 +- .../preventstabby/commands/MainCommand.java | 4 +- .../commands/PvpToggleCommand.java | 145 +++++++++--------- .../preventstabby/commands/ReloadCommand.java | 2 +- .../hooks/PlaceholderApiHook.java | 49 +++--- .../mount/MountHitByExplosionListener.java | 27 ---- .../mount/MountHitByFireworkListener.java | 30 ---- .../mount/MountHitBySplashPotionListener.java | 40 ----- .../mount/PlayerAttackMountListener.java | 25 --- .../PlayerHitMountWithProjectileListener.java | 28 ---- .../pets/PetHitByExplosionListener.java | 40 ----- .../pets/PetHitByFireworkListener.java | 35 ----- .../pets/PetHitBySplashPotionListener.java | 53 ------- .../listeners/pets/PetLeashListener.java | 32 ---- .../pets/PetTargettingMountListener.java | 38 ----- .../pets/PetTargettingPetListener.java | 32 ---- .../pets/PetTargettingPlayerListener.java | 43 ------ .../pets/PlayerAttackPetListener.java | 47 ------ .../PlayerHitPetWithProjectileListener.java | 51 ------ .../pets/PlayerInteractWithPetListener.java | 26 ---- .../player/PetAttackPlayerListener.java | 47 ------ .../player/PlayerAttackListener.java | 35 ----- .../player/PlayerHitByExplosionListener.java | 109 ------------- .../player/PlayerHitByFireworkListener.java | 34 ---- .../player/PlayerHitByProjectileListener.java | 59 ------- .../PlayerHitBySplashPotionListener.java | 48 ------ .../toggles/CombatCommandListener.java | 38 ----- .../PlayerTeleportInCombatListener.java | 33 ---- .../AreaEffectCloudApplyListener.java | 61 -------- .../EntityHitByLightningListener.java | 61 -------- .../listeners/unspecific/FishingListener.java | 49 ------ .../unspecific/LavaDumpAndIgniteListener.java | 125 --------------- .../LightningBlockIgniteListener.java | 50 ------ .../unspecific/PlaceWitherRoseListener.java | 64 -------- .../preventstabby/players/PlayerData.java | 28 +++- .../players/PlayerDeathListener.java | 28 ---- ...LeaveListener.java => PlayerListener.java} | 35 +++-- .../preventstabby/players/PlayerManager.java | 91 +++++++---- .../players/PlayerTeleportListener.java | 21 --- .../preventstabby/util/BoundingBoxUtil.java | 22 --- .../preventstabby/util/CombatTimer.java | 49 ------ .../preventstabby/util/DamageCheck.java | 17 +- .../preventstabby/util/DatabaseSQLite.java | 29 +--- .../preventstabby/util/PluginMessages.java | 13 +- .../util/PreventStabbyListener.java | 11 -- .../preventstabby/util/Util.java | 73 --------- 49 files changed, 233 insertions(+), 1763 deletions(-) delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/mount/MountHitByExplosionListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/mount/MountHitByFireworkListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/mount/MountHitBySplashPotionListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/mount/PlayerAttackMountListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/mount/PlayerHitMountWithProjectileListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetHitByExplosionListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetHitByFireworkListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetHitBySplashPotionListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetLeashListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetTargettingMountListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetTargettingPetListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetTargettingPlayerListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PlayerAttackPetListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PlayerHitPetWithProjectileListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PlayerInteractWithPetListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/player/PetAttackPlayerListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerAttackListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerHitByExplosionListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerHitByFireworkListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerHitByProjectileListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerHitBySplashPotionListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/toggles/CombatCommandListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/toggles/PlayerTeleportInCombatListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/unspecific/AreaEffectCloudApplyListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/unspecific/EntityHitByLightningListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/unspecific/FishingListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/unspecific/LavaDumpAndIgniteListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/unspecific/LightningBlockIgniteListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/listeners/unspecific/PlaceWitherRoseListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/players/PlayerDeathListener.java rename src/main/java/me/youhavetrouble/preventstabby/players/{PlayerJoinAndLeaveListener.java => PlayerListener.java} (55%) delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/players/PlayerTeleportListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/util/BoundingBoxUtil.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/util/CombatTimer.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/util/PreventStabbyListener.java delete mode 100644 src/main/java/me/youhavetrouble/preventstabby/util/Util.java diff --git a/src/main/java/me/youhavetrouble/preventstabby/PreventStabby.java b/src/main/java/me/youhavetrouble/preventstabby/PreventStabby.java index 3998d41..2f869e8 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/PreventStabby.java +++ b/src/main/java/me/youhavetrouble/preventstabby/PreventStabby.java @@ -23,7 +23,6 @@ public final class PreventStabby extends JavaPlugin { @Override public void onEnable() { plugin = this; - Util.initData(); reloadPluginConfig(); playerManager = new PlayerManager(this); damageCheck = new DamageCheck(this); diff --git a/src/main/java/me/youhavetrouble/preventstabby/api/PreventStabbyAPI.java b/src/main/java/me/youhavetrouble/preventstabby/api/PreventStabbyAPI.java index 5435407..040adb8 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/api/PreventStabbyAPI.java +++ b/src/main/java/me/youhavetrouble/preventstabby/api/PreventStabbyAPI.java @@ -1,13 +1,7 @@ package me.youhavetrouble.preventstabby.api; import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.players.PlayerData; -import me.youhavetrouble.preventstabby.util.CombatTimer; import me.youhavetrouble.preventstabby.util.PvpState; -import org.bukkit.entity.Player; - -import javax.annotation.Nullable; -import java.util.UUID; public class PreventStabbyAPI { diff --git a/src/main/java/me/youhavetrouble/preventstabby/commands/GlobalToggleCommand.java b/src/main/java/me/youhavetrouble/preventstabby/commands/GlobalToggleCommand.java index 43adddf..530e325 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/commands/GlobalToggleCommand.java +++ b/src/main/java/me/youhavetrouble/preventstabby/commands/GlobalToggleCommand.java @@ -13,7 +13,7 @@ public class GlobalToggleCommand { public static void globalToggle(CommandSender sender, String[] args) { Bukkit.getScheduler().runTaskAsynchronously(PreventStabby.getPlugin(), () -> { if (!PreventStabbyPermission.COMMAND_GLOBAL_TOGGLE.doesCommandSenderHave(sender)) { - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getNo_permission()); + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().no_permission); return; } @@ -27,15 +27,15 @@ public class GlobalToggleCommand { switch (pvpState) { case ENABLED: PreventStabby.getPlugin().getPlayerManager().setForcedPvpState(PvpState.ENABLED); - PluginMessages.broadcastMessage(PreventStabby.getPlugin().getConfigCache().getForce_pvp_on()); + PluginMessages.broadcastMessage(PreventStabby.getPlugin().getConfigCache().force_pvp_on); break; case DISABLED: PreventStabby.getPlugin().getPlayerManager().setForcedPvpState(PvpState.DISABLED); - PluginMessages.broadcastMessage(PreventStabby.getPlugin().getConfigCache().getForce_pvp_off()); + PluginMessages.broadcastMessage(PreventStabby.getPlugin().getConfigCache().force_pvp_off); break; case NONE: PreventStabby.getPlugin().getPlayerManager().setForcedPvpState(PvpState.NONE); - PluginMessages.broadcastMessage(PreventStabby.getPlugin().getConfigCache().getForce_pvp_none()); + PluginMessages.broadcastMessage(PreventStabby.getPlugin().getConfigCache().force_pvp_none); break; default: PluginMessages.sendMessage(sender, "Try /pvp override "); diff --git a/src/main/java/me/youhavetrouble/preventstabby/commands/HelpCommand.java b/src/main/java/me/youhavetrouble/preventstabby/commands/HelpCommand.java index d6ca936..4a6ae42 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/commands/HelpCommand.java +++ b/src/main/java/me/youhavetrouble/preventstabby/commands/HelpCommand.java @@ -12,7 +12,7 @@ public class HelpCommand { Bukkit.getScheduler().runTaskAsynchronously(PreventStabby.getPlugin(), () -> { if (!PreventStabbyPermission.COMMAND_HELP.doesCommandSenderHave(sender)) { - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getNo_permission()); + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().no_permission); return; } @@ -28,7 +28,7 @@ public class HelpCommand { .append(Component.newline()) .append(PluginMessages.MINIMESSAGE.deserialize("/pvp toggle - toggles PvP status")); } - PreventStabby.getAudiences().sender(sender).sendMessage(helpComponent); + sender.sendMessage(helpComponent); }); } diff --git a/src/main/java/me/youhavetrouble/preventstabby/commands/MainCommand.java b/src/main/java/me/youhavetrouble/preventstabby/commands/MainCommand.java index 638250b..754794a 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/commands/MainCommand.java +++ b/src/main/java/me/youhavetrouble/preventstabby/commands/MainCommand.java @@ -33,7 +33,7 @@ public class MainCommand implements TabExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (!sender.hasPermission("preventstabby.command")) { - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getNo_permission()); + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().no_permission); return true; } if (args.length == 0) { @@ -63,7 +63,7 @@ public class MainCommand implements TabExecutor { GlobalToggleCommand.globalToggle(sender, args); break; default: - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getNo_such_command()); + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().no_such_command); break; } return true; diff --git a/src/main/java/me/youhavetrouble/preventstabby/commands/PvpToggleCommand.java b/src/main/java/me/youhavetrouble/preventstabby/commands/PvpToggleCommand.java index c133d2e..9506722 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/commands/PvpToggleCommand.java +++ b/src/main/java/me/youhavetrouble/preventstabby/commands/PvpToggleCommand.java @@ -3,7 +3,7 @@ package me.youhavetrouble.preventstabby.commands; import me.youhavetrouble.preventstabby.PreventStabby; import me.youhavetrouble.preventstabby.api.event.PlayerTogglePvpEvent; import me.youhavetrouble.preventstabby.config.PreventStabbyPermission; -import me.youhavetrouble.preventstabby.util.CombatTimer; +import me.youhavetrouble.preventstabby.players.PlayerManager; import me.youhavetrouble.preventstabby.util.PluginMessages; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; @@ -11,46 +11,47 @@ import org.bukkit.entity.Player; public class PvpToggleCommand { + private static final PlayerManager playerManager = PreventStabby.getPlugin().getPlayerManager(); + public static void toggle(CommandSender sender, String[] args) { Bukkit.getScheduler().runTaskAsynchronously(PreventStabby.getPlugin(), () -> { if (!PreventStabbyPermission.COMMAND_TOGGLE.doesCommandSenderHave(sender)) { - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getNo_permission()); + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().no_permission); return; } if (args.length <= 1) { - if (!(sender instanceof Player)) { + if (!(sender instanceof Player player)) { PluginMessages.sendMessage(sender, "Try /pvp toggle "); return; } - Player player = (Player) sender; - if (CombatTimer.isInCombat(player.getUniqueId())) { - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat()); + if (playerManager.getPlayer(player.getUniqueId()).isInCombat()) { + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().cant_do_that_during_combat); return; } - boolean currentState = PreventStabby.getPlugin().getPlayerManager().togglePlayerPvpState(player.getUniqueId()); - PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, currentState, true); - Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> { - if (PlayerTogglePvpEvent.getHandlerList().getRegisteredListeners().length > 0) { - Bukkit.getPluginManager().callEvent(toggleEvent); - } - if (!toggleEvent.isSendMessage()) return; - if (currentState) { - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_enabled()); - } else { - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_disabled()); - } - + playerManager.togglePlayerPvpState(player.getUniqueId()).thenAccept(newState -> { + PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, newState, true); + Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> { + if (PlayerTogglePvpEvent.getHandlerList().getRegisteredListeners().length > 0) { + Bukkit.getPluginManager().callEvent(toggleEvent); + } + if (!toggleEvent.isSendMessage()) return; + if (newState) { + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().pvp_enabled); + } else { + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().pvp_disabled); + } + }); }); + } else if (args.length == 2) { if (!PreventStabbyPermission.COMMAND_TOGGLE_OTHERS.doesCommandSenderHave(sender)) { - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getNo_permission()); + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().no_permission); return; } - if (sender instanceof Player) { - Player player = (Player) sender; - if (CombatTimer.isInCombat(player.getUniqueId())) { - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat()); + if (sender instanceof Player player) { + if (playerManager.getPlayer(player.getUniqueId()).isInCombat()) { + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().cant_do_that_during_combat); return; } } @@ -60,67 +61,65 @@ public class PvpToggleCommand { PluginMessages.sendMessage(sender, "Player offline."); return; } - boolean currentState = PreventStabby.getPlugin().getPlayerManager().togglePlayerPvpState(player.getUniqueId()); - PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, currentState, false); - Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> { - if (PlayerTogglePvpEvent.getHandlerList().getRegisteredListeners().length > 0) { - Bukkit.getPluginManager().callEvent(toggleEvent); - } - if (toggleEvent.isSendMessage()) { - if (currentState) { - PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().getPvp_enabled()); - } else { - PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().getPvp_disabled()); + playerManager.togglePlayerPvpState(player.getUniqueId()).thenAccept(newState -> { + PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, newState, false); + Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> { + if (PlayerTogglePvpEvent.getHandlerList().getRegisteredListeners().length > 0) { + Bukkit.getPluginManager().callEvent(toggleEvent); } - } + if (toggleEvent.isSendMessage()) { + if (newState) { + PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().pvp_enabled); + } else { + PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().pvp_disabled); + } + } + String message; + if (newState) { + message = PreventStabby.getPlugin().getConfigCache().pvp_enabled_other; + } else { + message = PreventStabby.getPlugin().getConfigCache().pvp_disabled_other; + } + PluginMessages.sendMessage(sender, PluginMessages.parsePlayerName(player, message)); + }); }); - - String message; - if (currentState) { - message = PreventStabby.getPlugin().getConfigCache().getPvp_enabled_other(); - } else { - message = PreventStabby.getPlugin().getConfigCache().getPvp_disabled_other(); - } - PluginMessages.sendMessage(sender, PluginMessages.parsePlayerName(player, message)); } }); } public static void enable(CommandSender sender, String[] args) { if (!PreventStabbyPermission.COMMAND_TOGGLE.doesCommandSenderHave(sender)) { - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getNo_permission()); + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().no_permission); return; } if (args.length == 1) { - if (!(sender instanceof Player)) { + if (!(sender instanceof Player player)) { PluginMessages.sendMessage(sender, "Try /pvp enable "); return; } - Player player = (Player) sender; - if (CombatTimer.isInCombat(player.getUniqueId())) { - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat()); + if (playerManager.getPlayer(player.getUniqueId()).isInCombat()) { + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().cant_do_that_during_combat); return; } - PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true); + playerManager.setPlayerPvpState(player.getUniqueId(), true); PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, true, true); Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> { if (PlayerTogglePvpEvent.getHandlerList().getRegisteredListeners().length > 0) { Bukkit.getPluginManager().callEvent(toggleEvent); } if (toggleEvent.isSendMessage()) { - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_enabled()); + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().pvp_enabled); } }); } else if (args.length == 2) { if (!PreventStabbyPermission.COMMAND_TOGGLE_OTHERS.doesCommandSenderHave(sender)) { - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getNo_permission()); + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().no_permission); return; } - if (sender instanceof Player) { - Player player = (Player) sender; - if (CombatTimer.isInCombat(player.getUniqueId())) { - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat()); + if (sender instanceof Player player) { + if (playerManager.getPlayer(player.getUniqueId()).isInCombat()) { + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().cant_do_that_during_combat); return; } } @@ -129,16 +128,16 @@ public class PvpToggleCommand { PluginMessages.sendMessage(sender, "Player offline."); return; } - String message = PreventStabby.getPlugin().getConfigCache().getPvp_enabled_other(); + String message = PreventStabby.getPlugin().getConfigCache().pvp_enabled_other; PluginMessages.sendMessage(sender, PluginMessages.parsePlayerName(player, message)); - PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true); + playerManager.setPlayerPvpState(player.getUniqueId(), true); PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, true, false); Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> { if (PlayerTogglePvpEvent.getHandlerList().getRegisteredListeners().length > 0) { Bukkit.getPluginManager().callEvent(toggleEvent); } if (toggleEvent.isSendMessage()) { - PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().getPvp_enabled()); + PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().pvp_enabled); } }); } else { @@ -152,24 +151,23 @@ public class PvpToggleCommand { public static void disable(CommandSender sender, String[] args) { if (!PreventStabbyPermission.COMMAND_TOGGLE.doesCommandSenderHave(sender)) { - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getNo_permission()); + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().no_permission); return; } if (args.length == 1) { - if (sender instanceof Player) { - Player player = (Player) sender; - if (CombatTimer.isInCombat(player.getUniqueId())) { - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat()); + if (sender instanceof Player player) { + if (playerManager.getPlayer(player.getUniqueId()).isInCombat()) { + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().cant_do_that_during_combat); return; } - PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), false); + playerManager.setPlayerPvpState(player.getUniqueId(), false); PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, false, true); Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> { if (PlayerTogglePvpEvent.getHandlerList().getRegisteredListeners().length > 0) { Bukkit.getPluginManager().callEvent(toggleEvent); } if (toggleEvent.isSendMessage()) { - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_disabled()); + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().pvp_disabled); } }); } else { @@ -177,13 +175,12 @@ public class PvpToggleCommand { } } else if (args.length == 2) { if (!PreventStabbyPermission.COMMAND_TOGGLE_OTHERS.doesCommandSenderHave(sender)) { - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getNo_permission()); + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().no_permission); return; } - if (sender instanceof Player) { - Player player = (Player) sender; - if (CombatTimer.isInCombat(player.getUniqueId())) { - PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat()); + if (sender instanceof Player player) { + if (playerManager.getPlayer(player.getUniqueId()).isInCombat()) { + PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().cant_do_that_during_combat); return; } } @@ -192,16 +189,16 @@ public class PvpToggleCommand { PluginMessages.sendMessage(sender, "Player offline."); return; } - String message = PreventStabby.getPlugin().getConfigCache().getPvp_disabled_other(); + String message = PreventStabby.getPlugin().getConfigCache().pvp_disabled_other; PluginMessages.sendMessage(sender, PluginMessages.parsePlayerName(player, message)); - PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), false); + playerManager.setPlayerPvpState(player.getUniqueId(), false); PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, false, false); Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> { if (PlayerTogglePvpEvent.getHandlerList().getRegisteredListeners().length > 0) { Bukkit.getPluginManager().callEvent(toggleEvent); } if (toggleEvent.isSendMessage()) { - PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().getPvp_disabled()); + PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().pvp_disabled); } }); diff --git a/src/main/java/me/youhavetrouble/preventstabby/commands/ReloadCommand.java b/src/main/java/me/youhavetrouble/preventstabby/commands/ReloadCommand.java index 30e5385..0e776b4 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/commands/ReloadCommand.java +++ b/src/main/java/me/youhavetrouble/preventstabby/commands/ReloadCommand.java @@ -11,7 +11,7 @@ public class ReloadCommand { public static void reload(CommandSender sender) { Bukkit.getScheduler().runTaskAsynchronously(PreventStabby.getPlugin(), () -> { if (!PreventStabbyPermission.COMMAND_RELOAD.doesCommandSenderHave(sender)) { - PluginMessages.parseMessage(sender, PreventStabby.getPlugin().getConfigCache().getNo_permission()); + PluginMessages.parseMessage(sender, PreventStabby.getPlugin().getConfigCache().no_permission); return; } PreventStabby.getPlugin().reloadPluginConfig(sender); diff --git a/src/main/java/me/youhavetrouble/preventstabby/hooks/PlaceholderApiHook.java b/src/main/java/me/youhavetrouble/preventstabby/hooks/PlaceholderApiHook.java index fd7c780..1856420 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/hooks/PlaceholderApiHook.java +++ b/src/main/java/me/youhavetrouble/preventstabby/hooks/PlaceholderApiHook.java @@ -36,40 +36,39 @@ public class PlaceholderApiHook extends PlaceholderExpansion { @Override public String onRequest(OfflinePlayer player, String params) { - switch (params) { - case "pvp": - if (!player.isOnline()) return String.valueOf(false); - return String.valueOf(plugin.getPlayerManager().getPlayer(player.getUniqueId()).isPvpEnabled()); - case "combat_time": - return getCombatTimePlaceholder(player.getUniqueId(), player); - case "in_combat": - if (!player.isOnline()) return String.valueOf(false); - return String.valueOf(plugin.getPlayerManager().getPlayer(player.getUniqueId()).isInCombat()); - case "pvp_forced": - switch (PreventStabby.getPlugin().getPlayerManager().getForcedPvpState()) { - case NONE: - return legacyComponentSerializer.serialize(PluginMessages.parseMessage(plugin.getConfigCache().getPlaceholder_pvp_forced_none())); - case ENABLED: - return legacyComponentSerializer.serialize(PluginMessages.parseMessage(plugin.getConfigCache().getPlaceholder_pvp_forced_true())); - case DISABLED: - return legacyComponentSerializer.serialize(PluginMessages.parseMessage(plugin.getConfigCache().getPlaceholder_pvp_forced_false())); - } - default: - return null; - } + return switch (params) { + case "pvp" -> { + if (!player.isOnline()) yield String.valueOf(false); + yield String.valueOf(plugin.getPlayerManager().getPlayer(player.getUniqueId()).isPvpEnabled()); + } + case "combat_time" -> getCombatTimePlaceholder(player.getUniqueId(), player); + case "in_combat" -> { + if (!player.isOnline()) yield String.valueOf(false); + yield String.valueOf(plugin.getPlayerManager().getPlayer(player.getUniqueId()).isInCombat()); + } + case "pvp_forced" -> switch (PreventStabby.getPlugin().getPlayerManager().getForcedPvpState()) { + case NONE -> + legacyComponentSerializer.serialize(PluginMessages.parseMessage(plugin.getConfigCache().placeholder_pvp_forced_none)); + case ENABLED -> + legacyComponentSerializer.serialize(PluginMessages.parseMessage(plugin.getConfigCache().placeholder_pvp_forced_true)); + case DISABLED -> + legacyComponentSerializer.serialize(PluginMessages.parseMessage(plugin.getConfigCache().placeholder_pvp_forced_false)); + }; + default -> null; + }; } private String getCombatTimePlaceholder(UUID uuid, OfflinePlayer player) { if (!player.isOnline()) { - return legacyComponentSerializer.serialize(PluginMessages.parseMessage(plugin.getConfigCache().getPlaceholder_not_in_combat())); + return legacyComponentSerializer.serialize(PluginMessages.parseMessage(plugin.getConfigCache().placeholder_not_in_combat)); } - long seconds = plugin.getPlayerManager().getPlayer(uuid).getCombatTime(); + long seconds = plugin.getPlayerManager().getPlayer(uuid).getSecondsLeftUntilCombatEnd(); if (seconds > 0) { - String msg = plugin.getConfigCache().getPlaceholder_combat_time(); + String msg = plugin.getConfigCache().placeholder_combat_time; msg = msg.replaceAll("%time%", String.valueOf(seconds)); return legacyComponentSerializer.serialize(PluginMessages.parseMessage(msg)); } - return legacyComponentSerializer.serialize(PluginMessages.parseMessage(plugin.getConfigCache().getPlaceholder_not_in_combat())); + return legacyComponentSerializer.serialize(PluginMessages.parseMessage(plugin.getConfigCache().placeholder_not_in_combat)); } } diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/mount/MountHitByExplosionListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/mount/MountHitByExplosionListener.java deleted file mode 100644 index 891c794..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/mount/MountHitByExplosionListener.java +++ /dev/null @@ -1,27 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.mount; - -import me.youhavetrouble.preventstabby.util.Util; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.entity.EntityDamageEvent; - -import java.util.UUID; - -@PreventStabbyListener -public class MountHitByExplosionListener implements Listener { - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onMountHitByExplosion(org.bukkit.event.entity.EntityDamageByEntityEvent event) { - if (!(event.getDamager() instanceof Player) || event.getEntity().getPassengers().isEmpty()) return; - if (!event.getCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) return; - UUID damager = event.getDamager().getUniqueId(); - Entity mount = event.getEntity(); - if (Util.processMountAttack(damager, mount)) - event.setCancelled(true); - } - -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/mount/MountHitByFireworkListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/mount/MountHitByFireworkListener.java deleted file mode 100644 index 405ff07..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/mount/MountHitByFireworkListener.java +++ /dev/null @@ -1,30 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.mount; - -import me.youhavetrouble.preventstabby.util.Util; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Firework; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.entity.EntityDamageEvent; - -import java.util.UUID; - -@PreventStabbyListener -public class MountHitByFireworkListener implements Listener { - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onMountHitByFireWork(org.bukkit.event.entity.EntityDamageByEntityEvent event) { - if (!(event.getDamager() instanceof Firework) || event.getEntity().getPassengers().isEmpty()) return; - if (!event.getCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) return; - Firework firework = (Firework) event.getDamager(); - if (!(firework.getShooter() instanceof Player)) return; - UUID damager = ((Player) firework.getShooter()).getUniqueId(); - Entity mount = event.getEntity(); - if (Util.processMountAttack(damager, mount)) - event.setCancelled(true); - } - -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/mount/MountHitBySplashPotionListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/mount/MountHitBySplashPotionListener.java deleted file mode 100644 index 2366938..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/mount/MountHitBySplashPotionListener.java +++ /dev/null @@ -1,40 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.mount; - -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import me.youhavetrouble.preventstabby.util.Util; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.potion.PotionEffect; - -import java.util.UUID; - -@PreventStabbyListener -public class MountHitBySplashPotionListener implements Listener { - - /** - * If thrown potion applies negative effects and it's thrown by a player - * it will have no effect on a pet of a player with pvp off - */ - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onMountHitBySplashPotion(org.bukkit.event.entity.PotionSplashEvent event) { - if (!(event.getEntity().getShooter() instanceof Player)) return; - boolean harmful = false; - for (PotionEffect effect : event.getPotion().getEffects()) { - if (Util.isPotionEffectHarmful(effect.getType())) { - harmful = true; - break; - } - } - if (!harmful) return; - UUID damager = ((Player) event.getEntity().getShooter()).getUniqueId(); - for (LivingEntity entity : event.getAffectedEntities()) { - if (entity.getPassengers().isEmpty()) continue; - if (Util.processMountAttack(damager, entity)) - event.setIntensity(entity, 0); - } - } - -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/mount/PlayerAttackMountListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/mount/PlayerAttackMountListener.java deleted file mode 100644 index b944e1d..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/mount/PlayerAttackMountListener.java +++ /dev/null @@ -1,25 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.mount; - -import me.youhavetrouble.preventstabby.util.Util; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; - -import java.util.UUID; - -@PreventStabbyListener -public class PlayerAttackMountListener implements Listener { - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onPlayerAttackMount(org.bukkit.event.entity.EntityDamageByEntityEvent event) { - if (!(event.getDamager() instanceof Player) || event.getEntity().getPassengers().isEmpty()) return; - Entity entity = event.getEntity(); - UUID damager = event.getDamager().getUniqueId(); - if (Util.processMountAttack(damager, entity)) - event.setCancelled(true); - } - -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/mount/PlayerHitMountWithProjectileListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/mount/PlayerHitMountWithProjectileListener.java deleted file mode 100644 index 641583d..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/mount/PlayerHitMountWithProjectileListener.java +++ /dev/null @@ -1,28 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.mount; - -import me.youhavetrouble.preventstabby.util.Util; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Player; -import org.bukkit.entity.Projectile; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; - -import java.util.UUID; - -@PreventStabbyListener -public class PlayerHitMountWithProjectileListener implements Listener { - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onPlayerHitMountWithProjectile(org.bukkit.event.entity.EntityDamageByEntityEvent event) { - if (!(event.getDamager() instanceof Projectile)) return; - Projectile projectile = (Projectile) event.getDamager(); - if (!(projectile.getShooter() instanceof Player) || event.getEntity().getPassengers().isEmpty()) return; - Entity entity = event.getEntity(); - UUID damager = event.getDamager().getUniqueId(); - if (Util.processMountAttack(damager, entity)) - event.setCancelled(true); - } - -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetHitByExplosionListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetHitByExplosionListener.java deleted file mode 100644 index 470538f..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetHitByExplosionListener.java +++ /dev/null @@ -1,40 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.pets; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.util.CombatTimer; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.entity.Tameable; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.entity.EntityDamageEvent; -import java.util.UUID; - -@PreventStabbyListener -public class PetHitByExplosionListener implements Listener { - - /** - * Cancels explosion damage for pets with pvp off that is caused by players - */ - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onPetHitByExplosion(org.bukkit.event.entity.EntityDamageByEntityEvent event) { - if (!(event.getEntity() instanceof Tameable)) return; - if (!event.getCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) return; - Tameable tameable = (Tameable) event.getEntity(); - if (tameable.getOwner() == null) return; - - UUID victim = tameable.getOwner().getUniqueId(); - - try { - UUID damager = UUID.fromString(event.getDamager().getMetadata("PLAYEREXPLODED").get(0).asString()); - if (victim.equals(damager)) - return; - - if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false)) - CombatTimer.refreshPlayersCombatTime(damager, victim); - else - event.setCancelled(true); - } catch (NullPointerException | IndexOutOfBoundsException ignored) {} - - } -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetHitByFireworkListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetHitByFireworkListener.java deleted file mode 100644 index 5be2b9a..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetHitByFireworkListener.java +++ /dev/null @@ -1,35 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.pets; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.util.CombatTimer; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.entity.Firework; -import org.bukkit.entity.Player; -import org.bukkit.entity.Tameable; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import java.util.UUID; - -@PreventStabbyListener -public class PetHitByFireworkListener implements Listener { - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onPetFireworkDamage(org.bukkit.event.entity.EntityDamageByEntityEvent event) { - if (event.getDamager() instanceof Firework && event.getEntity() instanceof Tameable) { - Tameable tameable = (Tameable) event.getEntity(); - if (tameable.getOwner() == null) return; - Firework firework = (Firework) event.getDamager(); - if (!(firework.getShooter() instanceof Player)) return; - UUID damager = ((Player) firework.getShooter()).getUniqueId(); - UUID victim = tameable.getOwner().getUniqueId(); - if (victim.equals(damager)) return; - - if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false)) - CombatTimer.refreshPlayersCombatTime(damager, victim); - else - event.setCancelled(true); - - } - } -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetHitBySplashPotionListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetHitBySplashPotionListener.java deleted file mode 100644 index f3a00bb..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetHitBySplashPotionListener.java +++ /dev/null @@ -1,53 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.pets; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.util.CombatTimer; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import me.youhavetrouble.preventstabby.util.Util; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Player; -import org.bukkit.entity.Tameable; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.potion.PotionEffect; -import org.bukkit.potion.PotionEffectType; -import java.util.UUID; - -@PreventStabbyListener -public class PetHitBySplashPotionListener implements Listener { - - /** - * If thrown potion applies negative effects and it's thrown by a player - * it will have no effect on a pet of a player with pvp off - */ - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onPetHitBySplashPotion(org.bukkit.event.entity.PotionSplashEvent event) { - - if (!(event.getEntity().getShooter() instanceof Player)) return; - boolean harmful = false; - - for (PotionEffect effect : event.getPotion().getEffects()) { - if (Util.isPotionEffectHarmful(effect.getType())) { - harmful = true; - break; - } - } - if (!harmful) return; - UUID damager = ((Player) event.getEntity().getShooter()).getUniqueId(); - for (Entity entity : event.getAffectedEntities()) { - if (entity instanceof Tameable) { - Tameable tameable = (Tameable) entity; - if (tameable.getOwner() == null) continue; - UUID victim = tameable.getOwner().getUniqueId(); - if (victim == damager) return; - - if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false)) - CombatTimer.refreshPlayersCombatTime(damager, victim); - else - event.setCancelled(true); - } - } - } - -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetLeashListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetLeashListener.java deleted file mode 100644 index 0a84a9b..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetLeashListener.java +++ /dev/null @@ -1,32 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.pets; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.util.CombatTimer; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.entity.Tameable; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import java.util.UUID; - -@PreventStabbyListener -public class PetLeashListener implements Listener { - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onPetLeash(org.bukkit.event.entity.PlayerLeashEntityEvent event) { - if (event.getEntity() instanceof Tameable) { - Tameable tameable = (Tameable) event.getEntity(); - if (tameable.getOwner() == null) return; - - UUID damager = event.getPlayer().getUniqueId(); - UUID victim = tameable.getOwner().getUniqueId(); - if (victim == damager) return; - - if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false)) - CombatTimer.refreshPlayersCombatTime(damager, victim); - else - event.setCancelled(true); - } - } - -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetTargettingMountListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetTargettingMountListener.java deleted file mode 100644 index 168d845..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetTargettingMountListener.java +++ /dev/null @@ -1,38 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.pets; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.util.DamageCheck; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import me.youhavetrouble.preventstabby.util.PvpState; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Tameable; -import org.bukkit.entity.Wolf; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; - -@PreventStabbyListener -public class PetTargettingMountListener implements Listener { - - /** - * TODO - this needs to pass canDamage() in the future, for now it just checks forced pvp state directly - */ - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onWolfAttackMount(org.bukkit.event.entity.EntityDamageByEntityEvent event) { - if (PreventStabby.getPlugin().getPlayerManager().getForcedPvpState() == PvpState.ENABLED) return; - if (!(event.getDamager() instanceof Tameable damager) || event.getEntity().getPassengers().isEmpty()) return; - Entity victim = event.getEntity(); - if (damager.getOwner() == null) return; - - DamageCheck.DamageCheckResult result = PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim); - - if (!result.ableToDamage) { - if (damager instanceof Wolf wolf) { - wolf.setAngry(false); - } - event.setCancelled(true); - } - - } - -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetTargettingPetListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetTargettingPetListener.java deleted file mode 100644 index d7ada4b..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetTargettingPetListener.java +++ /dev/null @@ -1,32 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.pets; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.entity.Tameable; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; - -@PreventStabbyListener -public class PetTargettingPetListener implements Listener { - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onWolfAttackWolf(org.bukkit.event.entity.EntityDamageByEntityEvent event) { - if (!(event.getDamager() instanceof Tameable) || !(event.getEntity() instanceof Tameable)) return; - Tameable damager = (Tameable) event.getDamager(); - Tameable victim = (Tameable) event.getEntity(); - if (damager.getOwner() == null || victim.getOwner() == null) return; - - if (!PreventStabby.getPlugin().getPlayerManager() - .canDamage( - damager.getUniqueId(), - victim.getUniqueId(), - false, - false - )) - event.setCancelled(true); - - - } - -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetTargettingPlayerListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetTargettingPlayerListener.java deleted file mode 100644 index 8245b6f..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetTargettingPlayerListener.java +++ /dev/null @@ -1,43 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.pets; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.util.CombatTimer; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.entity.Player; -import org.bukkit.entity.Tameable; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.entity.EntityTargetEvent; - -import java.util.UUID; - -@PreventStabbyListener -public class PetTargettingPlayerListener implements Listener { - /** - * Stops pets with owners targetting players with pvp off - */ - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onPetTargetPlayer(EntityTargetEvent event) { - if (!(event.getEntity() instanceof Tameable)) return; - Tameable entity = (Tameable) event.getEntity(); - if (!(entity.getOwner() instanceof Player)) return; - if (!(event.getTarget() instanceof Player)) return; - - UUID damager = entity.getOwner().getUniqueId(); - UUID victim = event.getTarget().getUniqueId(); - - boolean tempting = event.getReason().equals(EntityTargetEvent.TargetReason.TEMPT); - - if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, !tempting, false)) { - if (tempting) { - event.setCancelled(true); - return; - } - CombatTimer.refreshPlayersCombatTime(damager, victim); - } - else - event.setCancelled(true); - - } -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PlayerAttackPetListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PlayerAttackPetListener.java deleted file mode 100644 index 573aaab..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PlayerAttackPetListener.java +++ /dev/null @@ -1,47 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.pets; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.config.ConfigCache; -import me.youhavetrouble.preventstabby.util.CombatTimer; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.entity.Player; -import org.bukkit.entity.Tameable; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.entity.EntityDamageByEntityEvent; - -import java.util.UUID; - -@PreventStabbyListener -public class PlayerAttackPetListener implements Listener { - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onPlayerAttackPet(EntityDamageByEntityEvent event) { - - if (!(event.getDamager() instanceof Player) || !(event.getEntity() instanceof Tameable)) return; - - Tameable tameable = (Tameable) event.getEntity(); - if (tameable.getOwner() == null) return; - - UUID damager = event.getDamager().getUniqueId(); - UUID victim = tameable.getOwner().getUniqueId(); - - if (damager.equals(victim)) return; - - ConfigCache config = PreventStabby.getPlugin().getConfigCache(); - - if (PreventStabby.getPlugin().getPlayerManager() - .canDamage( - damager, - victim, - config.getCannot_attack_pets_attacker(), - config.getCannot_attack_pets_victim(), - false - )) - CombatTimer.refreshPlayersCombatTime(damager); - else - event.setCancelled(true); - - } -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PlayerHitPetWithProjectileListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PlayerHitPetWithProjectileListener.java deleted file mode 100644 index 33e31b2..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PlayerHitPetWithProjectileListener.java +++ /dev/null @@ -1,51 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.pets; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.config.ConfigCache; -import me.youhavetrouble.preventstabby.util.CombatTimer; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.entity.Player; -import org.bukkit.entity.Projectile; -import org.bukkit.entity.Tameable; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; - -import java.util.UUID; - -@PreventStabbyListener -public class PlayerHitPetWithProjectileListener implements Listener { - - /** - * Cancels damage done by projectiles to pets of players with pvp off - */ - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onPlayerHitPetWithProjectile(org.bukkit.event.entity.EntityDamageByEntityEvent event) { - if (!(event.getEntity() instanceof Tameable) || !(event.getDamager() instanceof Projectile)) return; - Projectile projectile = (Projectile) event.getDamager(); - if (!(projectile.getShooter() instanceof Player)) return; - Tameable tameable = (Tameable) event.getEntity(); - if (tameable.getOwner() == null) return; - - UUID damager = ((Player) projectile.getShooter()).getUniqueId(); - UUID victim = tameable.getOwner().getUniqueId(); - - if (damager.equals(victim)) return; - - ConfigCache config = PreventStabby.getPlugin().getConfigCache(); - - if (PreventStabby.getPlugin().getPlayerManager() - .canDamage( - damager, - victim, - config.getCannot_attack_pets_attacker(), - config.getCannot_attack_pets_victim(), - false - )) - CombatTimer.refreshPlayersCombatTime(damager); - else - event.setCancelled(true); - - - } -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PlayerInteractWithPetListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PlayerInteractWithPetListener.java deleted file mode 100644 index a936753..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PlayerInteractWithPetListener.java +++ /dev/null @@ -1,26 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.pets; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.entity.Tameable; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; - -@PreventStabbyListener -public class PlayerInteractWithPetListener implements Listener { - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onPlayerInteractWithPet(org.bukkit.event.player.PlayerInteractEntityEvent event) { - - if (!PreventStabby.getPlugin().getConfigCache().isOnly_owner_can_interact_with_pet()) return; - if (!(event.getRightClicked() instanceof Tameable)) return; - - Tameable tameable = (Tameable) event.getRightClicked(); - if (tameable.getOwner() == null) return; - if (tameable.getOwner().getUniqueId().equals(event.getPlayer().getUniqueId())) return; - - event.setCancelled(true); - - } -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PetAttackPlayerListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PetAttackPlayerListener.java deleted file mode 100644 index 6311c3d..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PetAttackPlayerListener.java +++ /dev/null @@ -1,47 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.player; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.players.PlayerManager; -import me.youhavetrouble.preventstabby.util.CombatTimer; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.entity.Player; -import org.bukkit.entity.Tameable; -import org.bukkit.entity.Wolf; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import java.util.UUID; - -@PreventStabbyListener -public class PetAttackPlayerListener implements Listener { - - /** - * Pets stop following player with pvp off after trying to hit them - * This is to fix any inconsistancy with pet behavior - */ - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onPetAttack(org.bukkit.event.entity.EntityDamageByEntityEvent event) { - - if (!(event.getDamager() instanceof Tameable)) return; - - Tameable entity = (Tameable) event.getDamager(); - if (entity.getOwner() != null && event.getEntity() instanceof Player) { - - UUID victim = event.getEntity().getUniqueId(); - UUID damager = entity.getOwner().getUniqueId(); - PlayerManager playerManager = PreventStabby.getPlugin().getPlayerManager(); - - if (!playerManager.canDamage(damager, victim, false)) { - if (entity instanceof Wolf) { - Wolf wolf = (Wolf) entity; - wolf.setAngry(false); - } - event.setCancelled(true); - return; - } - CombatTimer.refreshPlayersCombatTime(damager, victim); - } - - } - -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerAttackListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerAttackListener.java deleted file mode 100644 index acf266e..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerAttackListener.java +++ /dev/null @@ -1,35 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.player; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.util.CombatTimer; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import java.util.UUID; - -@PreventStabbyListener -public class PlayerAttackListener implements Listener { - - /** - * Cancels basic attacks done to player with pvp off - */ - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onPlayerAttack(org.bukkit.event.entity.EntityDamageByEntityEvent event) { - Entity damagerEntity = event.getDamager(); - Entity victimEntity = event.getEntity(); - - if (damagerEntity instanceof Player && victimEntity instanceof Player) { - UUID damager = damagerEntity.getUniqueId(); - UUID victim = victimEntity.getUniqueId(); - - if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true)) - CombatTimer.refreshPlayersCombatTime(damager, victim); - else - event.setCancelled(true); - } - } - -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerHitByExplosionListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerHitByExplosionListener.java deleted file mode 100644 index 846c348..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerHitByExplosionListener.java +++ /dev/null @@ -1,109 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.player; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.util.CombatTimer; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.entity.EnderCrystal; -import org.bukkit.entity.Player; -import org.bukkit.entity.Projectile; -import org.bukkit.entity.TNTPrimed; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.minecart.ExplosiveMinecart; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.metadata.FixedMetadataValue; -import java.util.UUID; - -@PreventStabbyListener -public class PlayerHitByExplosionListener implements Listener { - - /** - * Cancels explosion damage for players with pvp off that is caused by players - */ - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onPlayerHitByExplosion(org.bukkit.event.entity.EntityDamageByEntityEvent event) { - if (event.getEntity() instanceof Player) { - if (!event.getCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) return; - - UUID victim = event.getEntity().getUniqueId(); - try { - UUID damager = UUID.fromString(event.getDamager().getMetadata("PLAYEREXPLODED").get(0).asString()); - if (victim.equals(damager)) return; - - if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true)) - CombatTimer.refreshPlayersCombatTime(damager, victim); - else - event.setCancelled(true); - - } catch (NullPointerException | IndexOutOfBoundsException ignored) { } - } - } - - /** - * Tags ender crystal with exploder uuid - */ - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onPlayerHitEnderCrystal(org.bukkit.event.entity.EntityDamageByEntityEvent event) { - if (event.getEntity() instanceof EnderCrystal) { - EnderCrystal enderCrystal = (EnderCrystal) event.getEntity(); - if (event.getDamager() instanceof Player) { - enderCrystal.setMetadata("PLAYEREXPLODED", new FixedMetadataValue(PreventStabby.getPlugin(), event.getDamager().getUniqueId().toString())); - } else if (event.getDamager() instanceof Projectile) { - Projectile projectile = (Projectile) event.getDamager(); - if (projectile.getShooter() instanceof Player) { - Player damager = (Player) projectile.getShooter(); - enderCrystal.setMetadata("PLAYEREXPLODED", new FixedMetadataValue(PreventStabby.getPlugin(), damager.getUniqueId().toString())); - } - } - } - } - - /** - * Tag ender crystal with destroying players uuid - */ - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onPlayerPrimedTnt(org.bukkit.event.entity.ExplosionPrimeEvent event) { - if (event.getEntity() instanceof TNTPrimed) { - TNTPrimed tntPrimed = (TNTPrimed) event.getEntity(); - if (tntPrimed.getSource() instanceof Player) { - Player damager = (Player) tntPrimed.getSource(); - tntPrimed.setMetadata("PLAYEREXPLODED", new FixedMetadataValue(PreventStabby.getPlugin(), damager.getUniqueId().toString())); - } else if (tntPrimed.getSource() instanceof TNTPrimed) { - try { - TNTPrimed sourceTnt = (TNTPrimed) tntPrimed.getSource(); - String damagerUuid = sourceTnt.getMetadata("PLAYEREXPLODED").get(0).asString(); - tntPrimed.setMetadata("PLAYEREXPLODED", new FixedMetadataValue(PreventStabby.getPlugin(), damagerUuid)); - } catch (NullPointerException ignored) { - } - } - } - } - - /** - * Tag TNT minecart with placing player uuid - */ - @SuppressWarnings("deprecation") - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onPlayerPlacedTntMinecart(org.bukkit.event.entity.EntityPlaceEvent event) { - if (event.getEntityType().equals(EntityType.MINECART_TNT)) { - if (event.getPlayer() != null) { - event.getEntity().setMetadata("PLAYEREXPLODED", new FixedMetadataValue(PreventStabby.getPlugin(), event.getPlayer().getUniqueId().toString())); - } - } - } - - /** - * Tag TNT minecart with uuid of player who last nudged it - */ - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onPlayerNudgedTntMinecart(org.bukkit.event.vehicle.VehicleEntityCollisionEvent event) { - if (event.getVehicle() instanceof ExplosiveMinecart && event.getEntity() instanceof Player) { - Player damager = (Player) event.getEntity(); - event.getVehicle().setMetadata("PLAYEREXPLODED", new FixedMetadataValue(PreventStabby.getPlugin(), damager.getUniqueId().toString())); - } - } - -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerHitByFireworkListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerHitByFireworkListener.java deleted file mode 100644 index ba09448..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerHitByFireworkListener.java +++ /dev/null @@ -1,34 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.player; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.util.CombatTimer; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.entity.Firework; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import java.util.UUID; - -@PreventStabbyListener -public class PlayerHitByFireworkListener implements Listener { - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onFireworkDamage(org.bukkit.event.entity.EntityDamageByEntityEvent event) { - if (event.getDamager() instanceof Firework && event.getEntity() instanceof Player) { - UUID victim = event.getEntity().getUniqueId(); - Firework firework = (Firework) event.getDamager(); - if (firework.getShooter() instanceof Player) { - UUID damager = ((Player) firework.getShooter()).getUniqueId(); - if (damager == victim) return; - - if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true)) - CombatTimer.refreshPlayersCombatTime(damager, victim); - else - event.setCancelled(true); - } - } - } - - -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerHitByProjectileListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerHitByProjectileListener.java deleted file mode 100644 index 19b889f..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerHitByProjectileListener.java +++ /dev/null @@ -1,59 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.player; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.util.CombatTimer; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.entity.*; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import java.util.UUID; - -@PreventStabbyListener -public class PlayerHitByProjectileListener implements Listener { - - /** - * Cancels damage done by projectiles to player with pvp off - */ - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onPlayerHitProjectile(org.bukkit.event.entity.EntityDamageByEntityEvent event) { - - if (event.getEntity() instanceof Player && event.getDamager() instanceof Projectile) { - Projectile projectile = (Projectile) event.getDamager(); - if (projectile.getShooter() instanceof Player) { - UUID damager = ((Player) projectile.getShooter()).getUniqueId(); - UUID victim = event.getEntity().getUniqueId(); - - if (PreventStabby.getPlugin().getConfigCache().isSnowballs_knockback() && event.getDamager() instanceof Snowball) { - if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true)) { - ((Player) event.getEntity()).damage(0.01, (Entity) projectile.getShooter()); - CombatTimer.refreshPlayersCombatTime(damager, victim); - } else { - event.setCancelled(true); - return; - } - - } else if (PreventStabby.getPlugin().getConfigCache().isEgg_knockback() && event.getDamager() instanceof Egg) { - if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true)) { - ((Player) event.getEntity()).damage(0.01, (Entity) projectile.getShooter()); - CombatTimer.refreshPlayersCombatTime(damager, victim); - } else { - event.setCancelled(true); - return; - } - } - - // Ender pearls and other self-damage - if (damager.equals(victim)) return; - - if (event.getDamage() == 0) return; - - if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true)) - CombatTimer.refreshPlayersCombatTime(damager, victim); - else - event.setCancelled(true); - } - } - } - -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerHitBySplashPotionListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerHitBySplashPotionListener.java deleted file mode 100644 index 918a7c7..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerHitBySplashPotionListener.java +++ /dev/null @@ -1,48 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.player; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.util.CombatTimer; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import me.youhavetrouble.preventstabby.util.Util; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.potion.PotionEffect; - -import java.util.UUID; - -@PreventStabbyListener -public class PlayerHitBySplashPotionListener implements Listener { - - /** - * If thrown potion is applies negative effects and it's thrown by a player it will have no effect on player with pvp off - */ - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onPlayerHitBySplashPotion(org.bukkit.event.entity.PotionSplashEvent event) { - - if (!(event.getEntity().getShooter() instanceof Player)) return; - boolean harmful = false; - - for (PotionEffect effect : event.getPotion().getEffects()) { - if (Util.isPotionEffectHarmful(effect.getType())) { - harmful = true; - break; - } - } - if (!harmful) return; - UUID damager = ((Player) event.getEntity().getShooter()).getUniqueId(); - for (LivingEntity entity : event.getAffectedEntities()) { - if (!(entity instanceof Player)) continue; - UUID victim = entity.getUniqueId(); - if (damager == victim) continue; - if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true)) { - CombatTimer.refreshPlayersCombatTime(damager, victim); - } else { - event.setIntensity(entity, 0); - } - - } - } -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/toggles/CombatCommandListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/toggles/CombatCommandListener.java deleted file mode 100644 index 01822de..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/toggles/CombatCommandListener.java +++ /dev/null @@ -1,38 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.toggles; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.players.PlayerManager; -import me.youhavetrouble.preventstabby.util.PluginMessages; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; - -@PreventStabbyListener -public class CombatCommandListener implements Listener { - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onPlayerCommandInCombat(org.bukkit.event.player.PlayerCommandPreprocessEvent event) { - - if (!PreventStabby.getPlugin().getConfigCache().isBlock_commands_in_combat()) - return; - - if (event.getPlayer().hasPermission("toglepvp.combatcommandblock.bypass")) - return; - - PlayerManager playerManager = PreventStabby.getPlugin().getPlayerManager(); - - if (!playerManager.getPlayer(event.getPlayer().getUniqueId()).isInCombat()) - return; - - String command = event.getMessage().replaceFirst("/", ""); - - if (!PreventStabby.getPlugin().getConfigCache().getCombatBlockedCommands().contains(command)) - return; - - event.setCancelled(true); - PluginMessages.sendMessage(event.getPlayer(), PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat()); - - } - -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/toggles/PlayerTeleportInCombatListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/toggles/PlayerTeleportInCombatListener.java deleted file mode 100644 index 81aed6a..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/toggles/PlayerTeleportInCombatListener.java +++ /dev/null @@ -1,33 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.toggles; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.players.PlayerManager; -import me.youhavetrouble.preventstabby.util.PluginMessages; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; - -@PreventStabbyListener -public class PlayerTeleportInCombatListener implements Listener { - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onPlayerTeleportInCombat(org.bukkit.event.player.PlayerTeleportEvent event) { - - if (!PreventStabby.getPlugin().getConfigCache().isBlock_teleports_in_combat()) - return; - - PlayerManager playerManager = PreventStabby.getPlugin().getPlayerManager(); - - if (!playerManager.getPlayer(event.getPlayer().getUniqueId()).isInCombat()) - return; - - if (event.getPlayer().hasPermission("toglepvp.combatteleportblock.bypass")) - return; - - event.setCancelled(true); - PluginMessages.sendMessage(event.getPlayer(), PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat()); - - } - -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/unspecific/AreaEffectCloudApplyListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/unspecific/AreaEffectCloudApplyListener.java deleted file mode 100644 index 8bdbe43..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/unspecific/AreaEffectCloudApplyListener.java +++ /dev/null @@ -1,61 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.unspecific; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.players.PlayerManager; -import me.youhavetrouble.preventstabby.util.CombatTimer; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import me.youhavetrouble.preventstabby.util.Util; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; -import org.bukkit.entity.Tameable; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.entity.AreaEffectCloudApplyEvent; -import org.bukkit.potion.PotionEffectType; - -import java.util.Iterator; -import java.util.UUID; - -@PreventStabbyListener -public class AreaEffectCloudApplyListener implements Listener { - - @EventHandler(ignoreCancelled = true) - public void onCloudEffects(AreaEffectCloudApplyEvent event) { - - if (!(event.getEntity().getSource() instanceof Player)) return; - PotionEffectType potionEffectType = event.getEntity().getBasePotionData().getType().getEffectType(); - if (potionEffectType == null) return; - - if (!Util.isPotionEffectHarmful(potionEffectType)) return; - - PlayerManager playerManager = PreventStabby.getPlugin().getPlayerManager(); - - Iterator it = event.getAffectedEntities().iterator(); - UUID damager = ((Player) event.getEntity().getSource()).getUniqueId(); - while (it.hasNext()) { - LivingEntity entity = it.next(); - if (entity instanceof Player) { - UUID victim = entity.getUniqueId(); - if (damager == victim) continue; - - if (playerManager.canDamage(damager, victim, true)) - CombatTimer.refreshPlayersCombatTime(damager, victim); - else - it.remove(); - - } else if (entity instanceof Tameable) { - Tameable tameable = (Tameable) entity; - - if (tameable.getOwner() == null) continue; - - UUID victim = tameable.getOwner().getUniqueId(); - if (victim == damager) continue; - - if (playerManager.canDamage(damager, victim, true, false)) - CombatTimer.refreshPlayersCombatTime(damager, victim); - else - it.remove(); - } - } - } -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/unspecific/EntityHitByLightningListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/unspecific/EntityHitByLightningListener.java deleted file mode 100644 index 9ec35a7..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/unspecific/EntityHitByLightningListener.java +++ /dev/null @@ -1,61 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.unspecific; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.entity.LightningStrike; -import org.bukkit.entity.Player; -import org.bukkit.entity.Tameable; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.weather.LightningStrikeEvent; -import org.bukkit.metadata.FixedMetadataValue; -import java.util.UUID; - -/** - * Listen for lightning strikes and tag the trident spawned ones. - * Idea from aasmus' PvPToggle plugin - */ -@PreventStabbyListener -public class EntityHitByLightningListener implements Listener { - - /** - * Cancels damage from lightning strike caused by channeling for players with pvp off - */ - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onPlayerLightningDamage(org.bukkit.event.entity.EntityDamageByEntityEvent event) { - if (event.getDamager() instanceof LightningStrike && event.getDamager().getMetadata("TRIDENT").size() >= 1) { - if (event.getEntity() instanceof Player) { - UUID victim = event.getEntity().getUniqueId(); - - if (PreventStabby.getPlugin().getPlayerManager().hasLoginProtection(victim)) { - event.setCancelled(true); - return; - } - - if (!PreventStabby.getPlugin().getSmartCache().getPlayerData(victim).isPvpEnabled()) { - event.setCancelled(true); - } - } else if (event.getEntity() instanceof Tameable) { - Tameable victim = (Tameable) event.getEntity(); - if (victim.getOwner() != null && !PreventStabby.getPlugin().getSmartCache().getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled()) { - event.setCancelled(true); - } - } - } - } - - /** - * Tags the lightning strike - */ - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onLightningStrike(LightningStrikeEvent event){ - if(event.getCause() == LightningStrikeEvent.Cause.TRIDENT){ - if (PreventStabby.getPlugin().getConfigCache().isChanneling_enchant_disabled()) { - event.setCancelled(true); - return; - } - event.getLightning().setMetadata("TRIDENT", new FixedMetadataValue(PreventStabby.getPlugin(), event.getLightning().getLocation())); - } - } -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/unspecific/FishingListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/unspecific/FishingListener.java deleted file mode 100644 index 1c677c6..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/unspecific/FishingListener.java +++ /dev/null @@ -1,49 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.unspecific; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.util.CombatTimer; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.entity.Player; -import org.bukkit.entity.Tameable; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import java.util.UUID; - -@PreventStabbyListener -public class FishingListener implements Listener { - - /** - * Prevents hooking players with disabled pvp with fishing rod - */ - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onFish(org.bukkit.event.player.PlayerFishEvent event) { - if (event.getCaught() instanceof Player) { - if (PreventStabby.getPlugin().getConfigCache().isAllow_fishing_rod_pull()) return; - UUID damager = event.getPlayer().getUniqueId(); - UUID victim = event.getCaught().getUniqueId(); - if (damager == victim) - return; - - if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true)) - CombatTimer.refreshPlayersCombatTime(damager, victim); - else - event.setCancelled(true); - } else if (event.getCaught() instanceof Tameable) { - Tameable tameable = (Tameable) event.getCaught(); - UUID damager = event.getPlayer().getUniqueId(); - if (tameable.getOwner() == null) - return; - - UUID victim = tameable.getOwner().getUniqueId(); - - if (damager == victim) - return; - - if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false)) - CombatTimer.refreshPlayersCombatTime(damager, victim); - else - event.setCancelled(true); - } - } -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/unspecific/LavaDumpAndIgniteListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/unspecific/LavaDumpAndIgniteListener.java deleted file mode 100644 index aed5d05..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/unspecific/LavaDumpAndIgniteListener.java +++ /dev/null @@ -1,125 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.unspecific; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.config.ConfigCache; -import me.youhavetrouble.preventstabby.util.BoundingBoxUtil; -import me.youhavetrouble.preventstabby.util.CombatTimer; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Player; -import org.bukkit.entity.Tameable; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.util.BoundingBox; - -import java.util.UUID; - - -@PreventStabbyListener -public class LavaDumpAndIgniteListener implements Listener { - - /** - * Prevents dumping lava and pufferfish bucket near players with pvp off - */ - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onLavaDump(org.bukkit.event.player.PlayerBucketEmptyEvent event) { - - ConfigCache config = PreventStabby.getPlugin().getConfigCache(); - - if (!config.isLava_and_fire_stopper_enabled()) - return; - - if (event.getBucket().equals(Material.LAVA_BUCKET) || event.getBucket().equals(Material.PUFFERFISH_BUCKET)) { - Location location = event.getBlockClicked().getLocation(); - UUID damager = event.getPlayer().getUniqueId(); - double radius = config.getLava_and_fire_stopper_radius(); - - BoundingBox boundingBox = BoundingBoxUtil.getBoundingBox(location, radius); - for (Entity entity : location.getWorld().getNearbyEntities(boundingBox)) { - if (entity instanceof Player) { - UUID victim = entity.getUniqueId(); - if (victim != damager) { - if (PreventStabby.getPlugin().getPlayerManager().hasLoginProtection(victim, damager)) { - event.setCancelled(true); - return; - } - - if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true)) - CombatTimer.refreshPlayersCombatTime(damager, victim); - else - event.setCancelled(true); - - } - } else if (entity instanceof Tameable) { - Tameable tameable = (Tameable) entity; - if (tameable.getOwner() == null) { - return; - } - - UUID victim = tameable.getOwner().getUniqueId(); - if (PreventStabby.getPlugin().getPlayerManager().hasLoginProtection(victim, damager)) { - event.setCancelled(true); - return; - } - - if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true)) - CombatTimer.refreshPlayersCombatTime(damager, victim); - else - event.setCancelled(true); - - } - } - } - } - - /** - * Prevents setting blocks on fire near players with pvp off - */ - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onIgnite(org.bukkit.event.block.BlockIgniteEvent event) { - - ConfigCache config = PreventStabby.getPlugin().getConfigCache(); - - if (!config.isLava_and_fire_stopper_enabled()) - return; - - if (event.getPlayer() == null) - return; - - Location location = event.getBlock().getLocation(); - UUID damager = event.getPlayer().getUniqueId(); - double radius = config.getLava_and_fire_stopper_radius(); - BoundingBox boundingBox = BoundingBoxUtil.getBoundingBox(location, radius); - for (Entity entity : location.getWorld().getNearbyEntities(boundingBox)) { - if (entity instanceof Player) { - UUID victim = entity.getUniqueId(); - if (victim == damager) - continue; - - if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true)) - CombatTimer.refreshPlayersCombatTime(damager, victim); - else - event.setCancelled(true); - - } else if (entity instanceof Tameable) { - Tameable tameable = (Tameable) entity; - if (tameable.getOwner() == null) { - continue; - } - - UUID victim = tameable.getOwner().getUniqueId(); - if (victim == damager) - continue; - - if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false)) - CombatTimer.refreshPlayersCombatTime(damager, victim); - else - event.setCancelled(true); - } - } - - } -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/unspecific/LightningBlockIgniteListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/unspecific/LightningBlockIgniteListener.java deleted file mode 100644 index e14b95b..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/unspecific/LightningBlockIgniteListener.java +++ /dev/null @@ -1,50 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.unspecific; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.entity.*; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; - -@PreventStabbyListener -public class LightningBlockIgniteListener implements Listener { - - /** - * Lightning strikes from channeling enchant won't ignite blocks if player with pvp off is in radius - */ - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onBlockIgnite(org.bukkit.event.block.BlockIgniteEvent event) { - - if (event.getIgnitingEntity() instanceof LightningStrike && event.getIgnitingEntity().getMetadata("TRIDENT").size() >= 1) { - LightningStrike lightningStrike = (LightningStrike) event.getIgnitingEntity(); - - for (Entity entity : lightningStrike.getNearbyEntities(2,2,2)) { - if (entity instanceof Player) { - Player victim = (Player) entity; - - if (PreventStabby.getPlugin().getPlayerManager().hasLoginProtection(victim.getUniqueId())) { - event.setCancelled(true); - return; - } - - if (!PreventStabby.getPlugin().getSmartCache().getPlayerData(victim.getUniqueId()).isPvpEnabled()) { - event.setCancelled(true); - return; - } - } else if (entity instanceof Tameable) { - Tameable victim = (Tameable) entity; - if (victim.getOwner() == null) { - return; - } - if (!PreventStabby.getPlugin().getSmartCache().getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled()) { - event.setCancelled(true); - return; - } - } - } - } - - } - -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/unspecific/PlaceWitherRoseListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/unspecific/PlaceWitherRoseListener.java deleted file mode 100644 index 2d66351..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/listeners/unspecific/PlaceWitherRoseListener.java +++ /dev/null @@ -1,64 +0,0 @@ -package me.youhavetrouble.preventstabby.listeners.unspecific; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.config.ConfigCache; -import me.youhavetrouble.preventstabby.util.BoundingBoxUtil; -import me.youhavetrouble.preventstabby.util.CombatTimer; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Player; -import org.bukkit.entity.Tameable; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.util.BoundingBox; - -import java.util.UUID; - -@PreventStabbyListener -public class PlaceWitherRoseListener implements Listener { - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onPlayerWitherRosePlace(org.bukkit.event.block.BlockPlaceEvent event) { - - ConfigCache config = PreventStabby.getPlugin().getConfigCache(); - - if (!config.isLava_and_fire_stopper_enabled()) - return; - - if (event.getBlock().getType().equals(Material.WITHER_ROSE)) { - Location location = event.getBlockPlaced().getLocation(); - double radius = config.getLava_and_fire_stopper_radius(); - BoundingBox boundingBox = BoundingBoxUtil.getBoundingBox(location, radius); - for (Entity entity : location.getWorld().getNearbyEntities(boundingBox)) { - if (entity instanceof Player) { - UUID damager = event.getPlayer().getUniqueId(); - UUID victim = entity.getUniqueId(); - if (victim == damager) - return; - - if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true)) - CombatTimer.refreshPlayersCombatTime(damager, victim); - else - event.setCancelled(true); - } else if (entity instanceof Tameable) { - Tameable tameable = (Tameable) entity; - UUID damager = event.getPlayer().getUniqueId(); - if (tameable.getOwner() == null) - return; - - UUID victim = tameable.getOwner().getUniqueId(); - if (victim == damager) - return; - - if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false)) - CombatTimer.refreshPlayersCombatTime(damager, victim); - else - event.setCancelled(true); - } - } - } - } -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerData.java b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerData.java index 90e20c2..25d2c9c 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerData.java +++ b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerData.java @@ -11,11 +11,12 @@ public class PlayerData { private final UUID playerUuid; private long lastAccessTimestamp, combatStartTimestamp, loginTimestamp, teleportTimestamp; - private boolean pvpEnabled; + private boolean pvpEnabled, lastCombatCheck; public PlayerData(UUID playerUuid, boolean pvpEnabled) { this.playerUuid = playerUuid; this.pvpEnabled = pvpEnabled; + this.lastCombatCheck = false; this.combatStartTimestamp = Long.MIN_VALUE; this.loginTimestamp = Long.MIN_VALUE; this.teleportTimestamp = Long.MIN_VALUE; @@ -29,7 +30,6 @@ public class PlayerData { /** * Returns true if player has personal pvp enabled, false otherwise. * @return True if player has personal pvp enabled, false otherwise. - * @see PlayerManager#getPlayerPvPState(UUID) */ public boolean isPvpEnabled() { return pvpEnabled; @@ -71,6 +71,14 @@ public class PlayerData { return combatStartTimestamp; } + protected boolean getLastCombatCheckState() { + return lastCombatCheck; + } + + protected void setLastCombatCheckState(boolean state) { + this.lastCombatCheck = state; + } + /** * Marks the player as in combat. */ @@ -79,6 +87,11 @@ public class PlayerData { this.combatStartTimestamp = System.currentTimeMillis(); } + protected void markNotInCombat() { + refreshCacheTime(); + this.combatStartTimestamp = Long.MIN_VALUE; + } + /** * Sets the login timestamp for the player. * @param loginTimestamp The login timestamp to set. @@ -109,10 +122,19 @@ public class PlayerData { * @return true if the player is in combat, false otherwise. */ public boolean isInCombat() { - refreshCacheTime(); return System.currentTimeMillis() - (combatStartTimestamp + (PreventStabby.getPlugin().getConfigCache().combat_time * 1000)) < 0; } + /** + * Retrieves the number of seconds left until combat ends for the player. + * @return The number of seconds left until combat ends. -1 if not in combat + */ + public long getSecondsLeftUntilCombatEnd() { + long timeSinceCombatStart = System.currentTimeMillis() - combatStartTimestamp; + long combatTimeConfigured = PreventStabby.getPlugin().getConfigCache().combat_time * 1000; + return (timeSinceCombatStart < combatTimeConfigured) ? (combatTimeConfigured - timeSinceCombatStart) / 1000 : -1; + } + /** * Checks if the player has login protection. * diff --git a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerDeathListener.java b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerDeathListener.java deleted file mode 100644 index ff6ad47..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerDeathListener.java +++ /dev/null @@ -1,28 +0,0 @@ -package me.youhavetrouble.preventstabby.players; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.entity.EntityDeathEvent; - -@PreventStabbyListener -public class PlayerDeathListener implements Listener { - - @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) - public void onPlayerDeath(EntityDeathEvent event) { - - if (!(event.getEntity() instanceof Player)) return; - - Player player = (Player) event.getEntity(); - - PlayerData playerData = PreventStabby.getPlugin().getSmartCache().getPlayerData(player.getUniqueId()); - if (playerData == null) return; - playerData.setCombattime(0); - playerData.setLastCombatCheck(false); - playerData.setInCombat(false); - } - -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerJoinAndLeaveListener.java b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerListener.java similarity index 55% rename from src/main/java/me/youhavetrouble/preventstabby/players/PlayerJoinAndLeaveListener.java rename to src/main/java/me/youhavetrouble/preventstabby/players/PlayerListener.java index 3d75367..749759d 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerJoinAndLeaveListener.java +++ b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerListener.java @@ -2,19 +2,19 @@ package me.youhavetrouble.preventstabby.players; import me.youhavetrouble.preventstabby.PreventStabby; import me.youhavetrouble.preventstabby.util.PluginMessages; -import me.youhavetrouble.preventstabby.util.PreventStabbyListener; -import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.event.player.PlayerTeleportEvent; import java.time.Instant; import java.util.UUID; -@PreventStabbyListener -public class PlayerJoinAndLeaveListener implements Listener { +public class PlayerListener implements Listener { /** * This event is here to get players saved options on join */ @@ -29,21 +29,30 @@ public class PlayerJoinAndLeaveListener implements Listener { * This event is here to save player's data to database * Also punishes players who log out during combat */ - @EventHandler + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onPlayerLeave(PlayerQuitEvent event) { Player player = event.getPlayer(); - - if (!PreventStabby.getPlugin().getConfigCache().punish_for_combat_logout) return; - - PlayerData playerData = PreventStabby.getPlugin().getSmartCache().getPlayerData(player.getUniqueId()); - + PlayerData playerData = PreventStabby.getPlugin().getPlayerManager().getPlayer(player.getUniqueId()); if (!playerData.isInCombat()) return; - player.setHealth(0); if (!PreventStabby.getPlugin().getConfigCache().punish_for_combat_logout_announce) return; PluginMessages.broadcastMessage(player, PreventStabby.getPlugin().getConfigCache().punish_for_combat_logout_message); - - } + + @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + public void onPlayerTeleport(PlayerTeleportEvent event) { + Player player = event.getPlayer(); + PlayerData playerData = PreventStabby.getPlugin().getPlayerManager().getPlayer(player.getUniqueId()); + playerData.setTeleportTimestamp(Instant.now().getEpochSecond()); + } + + @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + public void onPlayerDeath(EntityDeathEvent event) { + if (!(event.getEntity() instanceof Player player)) return; + PlayerData playerData = PreventStabby.getPlugin().getPlayerManager().getPlayer(player.getUniqueId()); + if (playerData == null) return; + playerData.markNotInCombat(); + } + } diff --git a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerManager.java b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerManager.java index 01e08a5..d655dba 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerManager.java +++ b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerManager.java @@ -1,10 +1,12 @@ package me.youhavetrouble.preventstabby.players; import me.youhavetrouble.preventstabby.PreventStabby; +import me.youhavetrouble.preventstabby.api.event.PlayerEnterCombatEvent; +import me.youhavetrouble.preventstabby.api.event.PlayerLeaveCombatEvent; import me.youhavetrouble.preventstabby.util.DamageCheck; +import me.youhavetrouble.preventstabby.util.PluginMessages; import me.youhavetrouble.preventstabby.util.PvpState; import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import java.util.UUID; @@ -21,17 +23,50 @@ public class PlayerManager { public PlayerManager(PreventStabby plugin) { this.plugin = plugin; Bukkit.getAsyncScheduler().runAtFixedRate(plugin, (task) -> { - // Refresh cache timer if player is online + // Check for entries that should be invalidated + playerList.values().removeIf(PlayerData::isCacheExpired); + }, 250, 250, TimeUnit.MILLISECONDS); + + Bukkit.getGlobalRegionScheduler().runAtFixedRate(plugin, (task) -> { for (PlayerData playerData : playerList.values()) { if (playerData == null) continue; Player player = Bukkit.getPlayer(playerData.getPlayerUuid()); - if (player != null && player.isOnline()) { - playerData.refreshCacheTime(); + if (player == null || !player.isOnline()) continue; + playerData.refreshCacheTime(); // Refresh cache timer if player is online + // leaving combat logic + if (playerData.getLastCombatCheckState() && !playerData.isInCombat()) { + PlayerLeaveCombatEvent leaveCombatEvent = null; + if (PlayerLeaveCombatEvent.getHandlerList().getRegisteredListeners().length > 0) { + leaveCombatEvent = new PlayerLeaveCombatEvent(player); + Bukkit.getPluginManager().callEvent(leaveCombatEvent); + } + if (leaveCombatEvent != null && leaveCombatEvent.isCancelled()) { + playerData.markInCombat(); + playerData.setLastCombatCheckState(playerData.isInCombat()); + continue; + } + PluginMessages.sendActionBar(player, plugin.getConfigCache().leaving_combat); + playerData.setLastCombatCheckState(playerData.isInCombat()); + continue; + } + // entering combat logic + if (!playerData.getLastCombatCheckState() && playerData.isInCombat()) { + PlayerEnterCombatEvent enterCombatEvent = null; + if (PlayerEnterCombatEvent.getHandlerList().getRegisteredListeners().length > 0) { + enterCombatEvent = new PlayerEnterCombatEvent(player); + Bukkit.getPluginManager().callEvent(enterCombatEvent); + } + if (enterCombatEvent != null && enterCombatEvent.isCancelled()) { + playerData.markNotInCombat(); + playerData.setLastCombatCheckState(playerData.isInCombat()); + continue; + } + PluginMessages.sendActionBar(player, plugin.getConfigCache().entering_combat); + playerData.setLastCombatCheckState(playerData.isInCombat()); + continue; } } - // Check for entries that should be invalidated - playerList.values().removeIf(PlayerData::isCacheExpired); - },250, 250, TimeUnit.MILLISECONDS); + }, 1, 1); } /** @@ -57,30 +92,12 @@ public class PlayerManager { * @return A {@link DamageCheck.DamageCheckResult} object containing the result of the damage check. */ public DamageCheck.DamageCheckResult canDamage(Entity attacker, Entity victim) { - DamageCheck damageCheck = PreventStabby.getPlugin().getDamageUtil(); + DamageCheck damageCheck = plugin.getDamageUtil(); return damageCheck.canDamage(attacker, victim); } - /** - * Determines whether the given players have any form of protection enabled, including login and teleport protection. - * - * @param players The players to check for protection. - * @return true if any of the players have protection enabled, false otherwise. - * @see PlayerData#isProtected() - */ - public boolean hasProtection(OfflinePlayer... players) { - for (OfflinePlayer offlinePlayer : players) { - UUID uuid = offlinePlayer.getUniqueId(); - PlayerData playerData = playerList.get(uuid); - if (playerData == null) continue; - if (playerData.isProtected()) return true; - } - return false; - } - /** * Returns current forced pvp state. - * * @return Current forced pvp state. */ public PvpState getForcedPvpState() { @@ -89,13 +106,18 @@ public class PlayerManager { /** * Sets current forced pvp state. - * * @param forcedPvpState New forced pvp state. */ public void setForcedPvpState(PvpState forcedPvpState) { this.pvpForcedState = forcedPvpState; } + /** + * Retrieves the PlayerData object for the player with the provided UUID. Returns new default if there isn't data. + * + * @param uuid The UUID of the player. + * @return The PlayerData object associated with the player. + */ public CompletableFuture getPlayerData(UUID uuid) { // Try to get data from cache and refresh it PlayerData data = getPlayer(uuid); @@ -105,15 +127,13 @@ public class PlayerManager { } // Get data from database or provide default return CompletableFuture.supplyAsync(() -> { - PlayerData playerData = PreventStabby.getPlugin().getSqLite().getPlayerInfo(uuid); + PlayerData playerData = plugin.getSqLite().getPlayerInfo(uuid); if (playerData == null) { playerData = new PlayerData(uuid, false); } - PreventStabby.getPlugin().getPlayerManager().addPlayer(uuid, playerData); + plugin.getPlayerManager().addPlayer(uuid, playerData); return playerData; }); - - } public void setPlayerPvpState(UUID uuid, boolean state) { @@ -122,6 +142,13 @@ public class PlayerManager { getPlayer(uuid).setPvpEnabled(state); } // Update the database aswell - PreventStabby.getPlugin().getSqLite().updatePlayerInfo(uuid, new PlayerData(uuid, state)); + plugin.getSqLite().updatePlayerInfo(uuid, new PlayerData(uuid, state)); + } + + public CompletableFuture togglePlayerPvpState(UUID uuid) { + return getPlayerData(uuid).thenApply(playerData -> { + playerData.setPvpEnabled(!playerData.isPvpEnabled()); + return playerData.isPvpEnabled(); + }); } } diff --git a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerTeleportListener.java b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerTeleportListener.java deleted file mode 100644 index ebf155c..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerTeleportListener.java +++ /dev/null @@ -1,21 +0,0 @@ -package me.youhavetrouble.preventstabby.players; - -import me.youhavetrouble.preventstabby.PreventStabby; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerTeleportEvent; - -import java.time.Instant; - -public class PlayerTeleportListener implements Listener { - - @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) - public void onPlayerTeleport(PlayerTeleportEvent event) { - Player player = event.getPlayer(); - PlayerData playerData = PreventStabby.getPlugin().getPlayerManager().getPlayer(player.getUniqueId()); - playerData.setTeleportTimestamp(Instant.now().getEpochSecond()); - } - -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/util/BoundingBoxUtil.java b/src/main/java/me/youhavetrouble/preventstabby/util/BoundingBoxUtil.java deleted file mode 100644 index bd8b9c9..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/util/BoundingBoxUtil.java +++ /dev/null @@ -1,22 +0,0 @@ -package me.youhavetrouble.preventstabby.util; - -import org.bukkit.Location; -import org.bukkit.util.BoundingBox; - -public class BoundingBoxUtil { - - public static BoundingBox getBoundingBox(Location location, double radius) { - - double x1 = location.getX()+radius; - double y1 = location.getY()+radius; - double z1 = location.getZ()+radius; - - double x2 = location.getX()-radius; - double y2 = location.getY()-radius; - double z2 = location.getZ()-radius; - - return new BoundingBox(x1, y1, z1, x2, y2, z2); - - } - -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/util/CombatTimer.java b/src/main/java/me/youhavetrouble/preventstabby/util/CombatTimer.java deleted file mode 100644 index 062b1fd..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/util/CombatTimer.java +++ /dev/null @@ -1,49 +0,0 @@ -package me.youhavetrouble.preventstabby.util; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.api.event.PlayerEnterCombatEvent; -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; -import java.time.Instant; -import java.util.UUID; - -public class CombatTimer { - - public static void refreshPlayersCombatTime(UUID uuid) { - try { - long combattime = PreventStabby.getPlugin().getSmartCache().getPlayerData(uuid).getCombatTime(); - - Player player = Bukkit.getPlayer(uuid); - if (player == null || !player.isOnline()) return; - PlayerEnterCombatEvent playerEnterCombatEvent = new PlayerEnterCombatEvent(player); - Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> { - if (PlayerEnterCombatEvent.getHandlerList().getRegisteredListeners().length > 0) { - Bukkit.getPluginManager().callEvent(playerEnterCombatEvent); - if (playerEnterCombatEvent.isCancelled()) return; - } - - PreventStabby.getPlugin().getPlayerManager().refreshPlayersCombatTime(uuid); - - if (combattime <= 0) { - PluginMessages.sendActionBar(uuid, PreventStabby.getPlugin().getConfigCache().getEntering_combat()); - } - }); - } catch (Exception ignored) { - } - } - - public static void refreshPlayersCombatTime(UUID... uuid) { - for (UUID id : uuid) { - refreshPlayersCombatTime(id); - } - } - - public static boolean isInCombat(UUID uuid) { - try { - return PreventStabby.getPlugin().getPlayerManager().getPlayer(uuid).getCombatTime() >= Instant.now().getEpochSecond(); - } catch (Exception e) { - return false; - } - } - -} diff --git a/src/main/java/me/youhavetrouble/preventstabby/util/DamageCheck.java b/src/main/java/me/youhavetrouble/preventstabby/util/DamageCheck.java index e622246..3d50a7b 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/util/DamageCheck.java +++ b/src/main/java/me/youhavetrouble/preventstabby/util/DamageCheck.java @@ -24,12 +24,18 @@ public class DamageCheck { Target attackerData = getUuidOfActualPlayer(attacker); Target victimData = getUuidOfActualPlayer(victim); if (attackerData == null || victimData == null) return new DamageCheckResult(true, null, null); + return canDamage(attackerData.playerUuid, victimData.playerUuid, victimData.classifier); + } - PlayerData attackerPlayerData = PreventStabby.getPlugin().getPlayerManager().getPlayer(attackerData.playerUuid); - PlayerData victimPlayerData = PreventStabby.getPlugin().getPlayerManager().getPlayer(victimData.playerUuid); + public DamageCheckResult canDamage(UUID attackerId, UUID victimId, EntityClassifier victimClassifier) { + + if (attackerId == null || victimId == null) return new DamageCheckResult(true, null, null); + + PlayerData attackerPlayerData = PreventStabby.getPlugin().getPlayerManager().getPlayer(attackerId); + PlayerData victimPlayerData = PreventStabby.getPlugin().getPlayerManager().getPlayer(victimId); if (attackerPlayerData.isProtected()) { - String message = switch (victimData.classifier) { + String message = switch (victimClassifier) { case PLAYER -> config.cannotAttackTeleportOrSpawnProtectionAttacker; case PET -> config.cannotAttackPetsTeleportOrSpawnProtectionAttacker; case MOUNT -> config.cannotAttackMountsTeleportOrSpawnProtectionAttacker; @@ -39,7 +45,7 @@ public class DamageCheck { } if (victimPlayerData.isProtected()) { String message = null; - if (victimData.classifier == EntityClassifier.PLAYER) { + if (victimClassifier == EntityClassifier.PLAYER) { message = config.cannotAttackTeleportOrSpawnProtectionVictim; } return new DamageCheckResult(false, message, null); @@ -50,7 +56,6 @@ public class DamageCheck { case ENABLED -> new DamageCheckResult(true, null, null); default -> new DamageCheckResult(true, null, null); }; - } /** @@ -60,7 +65,7 @@ public class DamageCheck { * @return UUID of the actual player, null if not found */ @Nullable - private Target getUuidOfActualPlayer(@NotNull Entity entity) { + public Target getUuidOfActualPlayer(@NotNull Entity entity) { if (entity instanceof Player) return new Target(entity.getUniqueId(), EntityClassifier.PLAYER); // Get shooter of projectile diff --git a/src/main/java/me/youhavetrouble/preventstabby/util/DatabaseSQLite.java b/src/main/java/me/youhavetrouble/preventstabby/util/DatabaseSQLite.java index 053406c..2b03095 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/util/DatabaseSQLite.java +++ b/src/main/java/me/youhavetrouble/preventstabby/util/DatabaseSQLite.java @@ -18,9 +18,10 @@ public class DatabaseSQLite { this.url = url; this.folder = folder; this.logger = logger; + createDatabaseFile(); } - public void createDatabaseFile() { + private void createDatabaseFile() { this.folder.mkdir(); try (Connection conn = DriverManager.getConnection(url)) { if (conn == null) return; @@ -34,30 +35,14 @@ public class DatabaseSQLite { } } - public boolean testConnection() { - try (Connection conn = DriverManager.getConnection(url)) { - logger.info("Connection to SQLite has been established."); - if (conn != null) return true; - } catch (SQLException exception) { - exception.printStackTrace(); - } - return false; - } - public PlayerData getPlayerInfo(UUID uuid) { try (Connection conn = DriverManager.getConnection(url)) { - try { - PreparedStatement insertnewuser = conn.prepareStatement("INSERT OR IGNORE INTO `players` (player_uuid, pvpenabled) VALUES (?, ?)"); - insertnewuser.setString(1, uuid.toString()); - insertnewuser.setBoolean(2, PreventStabby.getPlugin().getConfigCache().isPvp_enabled_by_default()); - insertnewuser.executeUpdate(); - } catch (SQLException e) { - if (e.getErrorCode() != 19) { - e.printStackTrace(); - } - } - PreparedStatement statement = conn.prepareStatement("SELECT * FROM `players` WHERE `player_uuid` = ?"); + PreparedStatement statement = conn.prepareStatement( + "INSERT OR IGNORE INTO `players` (player_uuid, pvpenabled) VALUES (?, ?); SELECT * FROM `players` WHERE `player_uuid` = ?;" + ); statement.setString(1, uuid.toString()); + statement.setBoolean(2, PreventStabby.getPlugin().getConfigCache().pvp_enabled_by_default); + statement.setString(3, uuid.toString()); statement.executeQuery(); ResultSet result = statement.getResultSet(); boolean state = result.getBoolean("pvpenabled"); diff --git a/src/main/java/me/youhavetrouble/preventstabby/util/PluginMessages.java b/src/main/java/me/youhavetrouble/preventstabby/util/PluginMessages.java index 826a331..a00375b 100644 --- a/src/main/java/me/youhavetrouble/preventstabby/util/PluginMessages.java +++ b/src/main/java/me/youhavetrouble/preventstabby/util/PluginMessages.java @@ -2,7 +2,6 @@ package me.youhavetrouble.preventstabby.util; import me.clip.placeholderapi.PlaceholderAPI; import me.youhavetrouble.preventstabby.PreventStabby; -import net.kyori.adventure.platform.bukkit.BukkitAudiences; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; @@ -15,7 +14,6 @@ import java.util.UUID; public class PluginMessages { public static final MiniMessage MINIMESSAGE = MiniMessage.miniMessage(); - private static final BukkitAudiences audiences = PreventStabby.getAudiences(); public static Component parseMessage(String message) { message = makeColorsWork('&', message); @@ -24,8 +22,7 @@ public class PluginMessages { } public static Component parseMessage(CommandSender sender,String message) { - if (sender instanceof Player && isPlaceholderApiEnabled()) { - Player player = (Player) sender; + if (sender instanceof Player player && isPlaceholderApiEnabled()) { message = PlaceholderAPI.setPlaceholders(player, message); } return parseMessage(message); @@ -37,13 +34,13 @@ public class PluginMessages { public static void sendMessage(CommandSender sender, String message) { if ("".equals(message)) return; - audiences.sender(sender).sendMessage(parseMessage(sender, message)); + sender.sendMessage(parseMessage(sender, message)); } public static void sendActionBar(Player player, String message) { if ("".equals(message)) return; Component parsedMessage = parseMessage(player, message); - audiences.player(player).sendActionBar(parsedMessage); + player.sendActionBar(parsedMessage); } public static void sendActionBar(UUID uuid, String message) { @@ -64,12 +61,12 @@ public class PluginMessages { if (PreventStabby.getPlugin().getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) { message = PlaceholderAPI.setPlaceholders(player, message); } - audiences.all().sendMessage(parseMessage(message)); + Bukkit.broadcast(parseMessage(message)); } public static void broadcastMessage(String message) { if ("".equals(message)) return; - audiences.all().sendMessage(parseMessage(message)); + Bukkit.broadcast(parseMessage(message)); } /** diff --git a/src/main/java/me/youhavetrouble/preventstabby/util/PreventStabbyListener.java b/src/main/java/me/youhavetrouble/preventstabby/util/PreventStabbyListener.java deleted file mode 100644 index f0e10c1..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/util/PreventStabbyListener.java +++ /dev/null @@ -1,11 +0,0 @@ -package me.youhavetrouble.preventstabby.util; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.TYPE}) - -public @interface PreventStabbyListener {} diff --git a/src/main/java/me/youhavetrouble/preventstabby/util/Util.java b/src/main/java/me/youhavetrouble/preventstabby/util/Util.java deleted file mode 100644 index f097a2a..0000000 --- a/src/main/java/me/youhavetrouble/preventstabby/util/Util.java +++ /dev/null @@ -1,73 +0,0 @@ -package me.youhavetrouble.preventstabby.util; - -import me.youhavetrouble.preventstabby.PreventStabby; -import me.youhavetrouble.preventstabby.config.ConfigCache; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Player; -import org.bukkit.potion.PotionEffectType; - -import java.util.HashSet; -import java.util.Set; -import java.util.UUID; - -public class Util { - - private static final HashSet harmfulPotions = new HashSet<>(); - - public static void initData() { - harmfulPotions.add(PotionEffectType.BLINDNESS); - harmfulPotions.add(PotionEffectType.CONFUSION); - harmfulPotions.add(PotionEffectType.HARM); - harmfulPotions.add(PotionEffectType.HUNGER); - harmfulPotions.add(PotionEffectType.POISON); - harmfulPotions.add(PotionEffectType.SLOW_DIGGING); - harmfulPotions.add(PotionEffectType.WEAKNESS); - harmfulPotions.add(PotionEffectType.SLOW); - harmfulPotions.add(PotionEffectType.WITHER); - } - - /** - * @param attacker Player attacking the mount - * @param mount Entity being ridden - * @return true if event should be cancelled - */ - public static boolean processMountAttack(UUID attacker, Entity mount) { - - // Don't cancel attacks on players that have passengers - if (mount instanceof Player) return false; - - ConfigCache config = PreventStabby.getPlugin().getConfigCache(); - - Set playerPassengersWithPvpEnabled = new HashSet<>(); - - boolean hasPlayerPassengers = false; - for (Entity passenger : mount.getPassengers()) { - if (!(passenger instanceof Player)) continue; - Player player = (Player) passenger; - hasPlayerPassengers = true; - if (PreventStabby.getPlugin().getPlayerManager().getPlayerPvPState(player.getUniqueId())) - playerPassengersWithPvpEnabled.add(player.getUniqueId()); - } - - if (!hasPlayerPassengers) return false; - - if (!PreventStabby.getPlugin().getPlayerManager().getPlayerPvPState(attacker)) { - PluginMessages.sendActionBar(attacker, config.getCannot_attack_mounts_attacker()); - return true; - } - - if (playerPassengersWithPvpEnabled.isEmpty()) { - PluginMessages.sendActionBar(attacker, config.getCannot_attack_mounts_victim()); - return true; - } - - playerPassengersWithPvpEnabled.forEach(CombatTimer::refreshPlayersCombatTime); - CombatTimer.refreshPlayersCombatTime(attacker); - return false; - } - - public static boolean isPotionEffectHarmful(PotionEffectType effect) { - return harmfulPotions.contains(effect); - } - -}