From e5d91d385c690db9e6e562220e6100ee465c3939 Mon Sep 17 00:00:00 2001 From: Madeline Miller Date: Tue, 28 Sep 2021 19:36:46 +1000 Subject: [PATCH] Workaround Spigot bug that requires manually un-leashing entities before re-leashing --- .../enginehub/craftbook/mechanics/BetterLeads.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/craftbook-bukkit/src/main/java/org/enginehub/craftbook/mechanics/BetterLeads.java b/craftbook-bukkit/src/main/java/org/enginehub/craftbook/mechanics/BetterLeads.java index b2014fc21..5438907da 100644 --- a/craftbook-bukkit/src/main/java/org/enginehub/craftbook/mechanics/BetterLeads.java +++ b/craftbook-bukkit/src/main/java/org/enginehub/craftbook/mechanics/BetterLeads.java @@ -51,7 +51,7 @@ public class BetterLeads extends AbstractCraftBookMechanic { @EventHandler(priority = EventPriority.HIGH) public void onPlayerClick(final PlayerInteractEntityEvent event) { - if (!(event.getRightClicked() instanceof LivingEntity) || !EventUtil.passesFilter(event)) { + if (!(event.getRightClicked() instanceof LivingEntity entity) || entity.isLeashed() || !EventUtil.passesFilter(event)) { return; } @@ -70,8 +70,8 @@ public void onPlayerClick(final PlayerInteractEntityEvent event) { CraftBookPlugin.logDebugMessage("It is of type: " + typeName, "betterleads.allowed-mobs"); if (!allowedMobs.contains(typeName) - || !typeName.startsWith("minecraft:") - || !allowedMobs.contains(typeName.substring("minecraft:".length()))) { + && (!typeName.startsWith("minecraft:") + || !allowedMobs.contains(typeName.substring("minecraft:".length())))) { return; } @@ -85,14 +85,14 @@ public void onPlayerClick(final PlayerInteractEntityEvent event) { } CraftBookPlugin.logDebugMessage("Leashing entity!", "betterleads.allowed-mobs"); - if (event.getRightClicked() instanceof Creature && ((Creature) event.getRightClicked()).getTarget() != null && ((Creature) event.getRightClicked()).getTarget().equals(event.getPlayer())) { - ((Creature) event.getRightClicked()).setTarget(null); //Rescan for a new target. + if (event.getRightClicked() instanceof Creature creature && creature.getTarget() != null && creature.getTarget().equals(event.getPlayer())) { + creature.setTarget(null); //Rescan for a new target. } event.setCancelled(true); Bukkit.getScheduler().runTask(CraftBookPlugin.inst(), () -> { - if (!((LivingEntity) event.getRightClicked()).setLeashHolder(event.getPlayer())) { + if (!entity.setLeashHolder(event.getPlayer())) { CraftBookPlugin.logDebugMessage("Failed to leash entity!", "betterleads.allowed-mobs"); return; }