--- ../src-base/minecraft/net/minecraft/item/ItemHangingEntity.java +++ ../src-work/minecraft/net/minecraft/item/ItemHangingEntity.java @@ -8,6 +8,12 @@ import net.minecraft.util.Direction; import net.minecraft.world.World; +// CraftBukkit start +import org.bukkit.entity.Player; +import org.bukkit.event.hanging.HangingPlaceEvent; +import org.bukkit.event.painting.PaintingPlaceEvent; +// CraftBukkit end + public class ItemHangingEntity extends Item { private final Class hangingEntityClass; @@ -44,6 +50,28 @@ { if (!p_77648_3_.isRemote) { + // CraftBukkit start + Player who = (Player) p_77648_2_.getBukkitEntity(); + org.bukkit.block.Block blockClicked = p_77648_3_.getWorld().getBlockAt(p_77648_4_, p_77648_5_, p_77648_6_); + org.bukkit.block.BlockFace blockFace = org.bukkit.craftbukkit.block.CraftBlock.notchToBlockFace(p_77648_7_); + HangingPlaceEvent event = new HangingPlaceEvent((org.bukkit.entity.Hanging) entityhanging.getBukkitEntity(), who, blockClicked, blockFace); + p_77648_3_.getServer().getPluginManager().callEvent(event); + PaintingPlaceEvent paintingEvent = null; + + if (entityhanging instanceof EntityPainting) + { + // Fire old painting event until it can be removed + paintingEvent = new PaintingPlaceEvent((org.bukkit.entity.Painting) entityhanging.getBukkitEntity(), who, blockClicked, blockFace); + paintingEvent.setCancelled(event.isCancelled()); + p_77648_3_.getServer().getPluginManager().callEvent(paintingEvent); + } + + if (event.isCancelled() || (paintingEvent != null && paintingEvent.isCancelled())) + { + return false; + } + + // CraftBukkit end p_77648_3_.spawnEntityInWorld(entityhanging); }