From 4f9ec57e823cf9ad97bf2ed43dc4f0f555496634 Mon Sep 17 00:00:00 2001 From: YouHaveTrouble Date: Sat, 20 Feb 2021 21:38:23 +0100 Subject: [PATCH] added pet interaction blocker for non-owners --- .../togglepvp/config/ConfigCache.java | 3 +- .../wolf/PlayerInteractWithPetListener.java | 36 +++++++++++++++++++ src/main/resources/config.yml | 4 +++ 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 src/main/java/eu/endermite/togglepvp/listeners/wolf/PlayerInteractWithPetListener.java diff --git a/src/main/java/eu/endermite/togglepvp/config/ConfigCache.java b/src/main/java/eu/endermite/togglepvp/config/ConfigCache.java index 29004e1..b427068 100644 --- a/src/main/java/eu/endermite/togglepvp/config/ConfigCache.java +++ b/src/main/java/eu/endermite/togglepvp/config/ConfigCache.java @@ -28,6 +28,7 @@ public class ConfigCache { @Getter private final String entering_combat; @Getter private final String leaving_combat; @Getter final String cant_do_that_during_combat; + @Getter final boolean only_owner_can_interact_with_pet; public ConfigCache() { @@ -62,6 +63,6 @@ public class ConfigCache { this.entering_combat = config.getString("messages.entering_combat", "&cEntering combat"); this.leaving_combat = config.getString("messages.leaving_combat", "&cLeaving combat"); this.cant_do_that_during_combat = config.getString("messages.cant_do_that_during_combat", "&cYou can't do that while in combat!"); - + this.only_owner_can_interact_with_pet = config.getBoolean("only_owner_can_interact_with_pet", false); } } diff --git a/src/main/java/eu/endermite/togglepvp/listeners/wolf/PlayerInteractWithPetListener.java b/src/main/java/eu/endermite/togglepvp/listeners/wolf/PlayerInteractWithPetListener.java new file mode 100644 index 0000000..a23e3c8 --- /dev/null +++ b/src/main/java/eu/endermite/togglepvp/listeners/wolf/PlayerInteractWithPetListener.java @@ -0,0 +1,36 @@ +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.CombatTimer; +import eu.endermite.togglepvp.util.PluginMessages; +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; + +@eu.endermite.togglepvp.util.Listener +public class PlayerInteractWithPetListener implements Listener { + + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onPlayerInteractWithPet(org.bukkit.event.player.PlayerInteractEntityEvent event) { + + if (!(event.getRightClicked() instanceof Tameable)) + return; + + Tameable tameable = (Tameable) event.getRightClicked(); + if (tameable.getOwner() == null) + return; + + if (!TogglePvp.getPlugin().getConfigCache().isOnly_owner_can_interact_with_pet()) + return; + + if (tameable.getOwner().getUniqueId().equals(event.getPlayer().getUniqueId())) + return; + + event.setCancelled(true); + + } +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 87a5431..588d6cd 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -11,6 +11,10 @@ settings: # You may want to keep it disabled because players with pvp off can use it to attack players with pvp on channeling_enchant_disabled: false + # Makes it so only pet owner can interact with it. + # Useful if you don't want people renaming other people's pets. + only_owner_can_interact_with_pet: false + # Time (in seconds) to keep player in combat combat_time: 25