--- a/net/minecraft/server/ItemLeash.java +++ b/net/minecraft/server/ItemLeash.java @@ -3,6 +3,8 @@ import java.util.Iterator; import java.util.List; +import org.bukkit.event.hanging.HangingPlaceEvent; // CraftBukkit + public class ItemLeash extends Item { public ItemLeash(Item.Info item_info) { @@ -43,7 +45,23 @@ if (entityinsentient.isLeashed() && 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 false; + } + // CraftBukkit end + } + + // CraftBukkit start + if (org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerLeashEntityEvent(entityinsentient, entityleash, entityhuman).isCancelled()) { + continue; } + // CraftBukkit end entityinsentient.setLeashHolder(entityleash, true); flag = true;