From 57e44f2948318f327a183cac7850128ce9698f51 Mon Sep 17 00:00:00 2001 From: YouHaveTrouble Date: Fri, 21 Aug 2020 02:44:23 +0200 Subject: [PATCH] deny leashing someone's wolves --- .../eu/endermite/togglepvp/TogglePvP.java | 1 + .../listeners/wolf/WolfLeashListener.java | 41 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 src/main/java/eu/endermite/togglepvp/listeners/wolf/WolfLeashListener.java diff --git a/src/main/java/eu/endermite/togglepvp/TogglePvP.java b/src/main/java/eu/endermite/togglepvp/TogglePvP.java index 3c2544f..a9e87aa 100644 --- a/src/main/java/eu/endermite/togglepvp/TogglePvP.java +++ b/src/main/java/eu/endermite/togglepvp/TogglePvP.java @@ -56,6 +56,7 @@ public final class TogglePvP extends JavaPlugin { getServer().getPluginManager().registerEvents(new WolfHitByFireworkListener(), this); getServer().getPluginManager().registerEvents(new WolfTargettingWolfListener(), this); getServer().getPluginManager().registerEvents(new WolfHitByExplosionListener(), this); + getServer().getPluginManager().registerEvents(new WolfLeashListener(), this); Objects.requireNonNull(getCommand("pvp")).setExecutor(new MainCommand()); Objects.requireNonNull(getCommand("pvp")).setTabCompleter(new MainCommand()); diff --git a/src/main/java/eu/endermite/togglepvp/listeners/wolf/WolfLeashListener.java b/src/main/java/eu/endermite/togglepvp/listeners/wolf/WolfLeashListener.java new file mode 100644 index 0000000..9be6399 --- /dev/null +++ b/src/main/java/eu/endermite/togglepvp/listeners/wolf/WolfLeashListener.java @@ -0,0 +1,41 @@ +package eu.endermite.togglepvp.listeners.wolf; + +import eu.endermite.togglepvp.TogglePvP; +import eu.endermite.togglepvp.config.ConfigCache; +import eu.endermite.togglepvp.players.SmartCache; +import eu.endermite.togglepvp.util.PluginMessages; +import org.bukkit.entity.Player; +import org.bukkit.entity.Wolf; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; + +public class WolfLeashListener implements Listener { + + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onWolfLeash(org.bukkit.event.entity.PlayerLeashEntityEvent event) { + if (event.getEntity() instanceof Wolf) { + Wolf victim = (Wolf) event.getEntity(); + if (victim.getOwner() == null) { + return; + } + Player damager = event.getPlayer(); + if (victim.getOwner() == damager) { + return; + } + ConfigCache config = TogglePvP.getPlugin().getConfigCache(); + boolean damagerPvpEnabled = (boolean) SmartCache.getPlayerData(damager.getUniqueId()).get("pvpenabled"); + if (!damagerPvpEnabled) { + PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker()); + event.setCancelled(true); + return; + } + boolean victimPvpEnabled = (boolean) SmartCache.getPlayerData(victim.getOwner().getUniqueId()).get("pvpenabled"); + if (!victimPvpEnabled) { + PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim()); + event.setCancelled(true); + } + } + } + +}