--- a/net/minecraft/world/item/ItemLeash.java +++ b/net/minecraft/world/item/ItemLeash.java @@ -14,6 +14,8 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.phys.AxisAlignedBB; +import org.bukkit.event.hanging.HangingPlaceEvent; // CraftBukkit + public class ItemLeash extends Item { public ItemLeash(Item.Info item_info) { @@ -55,7 +57,23 @@ if (entityinsentient.getLeashHolder() == entityhuman) { if (entityleash == null) { entityleash = EntityLeash.a(world, blockposition); + + // CraftBukkit start - fire HangingPlaceEvent + HangingPlaceEvent event = new HangingPlaceEvent((org.bukkit.entity.Hanging) entityleash.getBukkitEntity(), entityhuman != null ? (org.bukkit.entity.Player) entityhuman.getBukkitEntity() : null, world.getWorld().getBlockAt(i, j, k), org.bukkit.block.BlockFace.SELF); + world.getServer().getPluginManager().callEvent(event); + + if (event.isCancelled()) { + entityleash.die(); + return EnumInteractionResult.PASS; + } + // CraftBukkit end + } + + // CraftBukkit start + if (org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerLeashEntityEvent(entityinsentient, entityleash, entityhuman).isCancelled()) { + continue; } + // CraftBukkit end entityinsentient.setLeashHolder(entityleash, true); flag = true;