diff options
Diffstat (limited to 'nms-patches/ItemHanging.patch')
-rw-r--r-- | nms-patches/ItemHanging.patch | 43 |
1 files changed, 17 insertions, 26 deletions
diff --git a/nms-patches/ItemHanging.patch b/nms-patches/ItemHanging.patch index d6ec92ab..0b517da4 100644 --- a/nms-patches/ItemHanging.patch +++ b/nms-patches/ItemHanging.patch @@ -1,41 +1,32 @@ --- a/net/minecraft/server/ItemHanging.java +++ b/net/minecraft/server/ItemHanging.java -@@ -1,5 +1,11 @@ +@@ -1,5 +1,10 @@ package net.minecraft.server; +// CraftBukkit start +import org.bukkit.entity.Player; +import org.bukkit.event.hanging.HangingPlaceEvent; -+import org.bukkit.event.painting.PaintingPlaceEvent; +// CraftBukkit end + public class ItemHanging extends Item { private final Class<? extends EntityHanging> a; -@@ -24,6 +30,26 @@ +@@ -17,6 +22,18 @@ - if (entityhanging != null && entityhanging.survives()) { - if (!world.isClientSide) { -+ // CraftBukkit start - fire HangingPlaceEvent -+ Player who = (entityhuman == null) ? null : (Player) entityhuman.getBukkitEntity(); -+ org.bukkit.block.Block blockClicked = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ()); -+ org.bukkit.block.BlockFace blockFace = org.bukkit.craftbukkit.block.CraftBlock.notchToBlockFace(enumdirection); + if (entityhanging != null && entityhanging.survives()) { + if (!world.isClientSide) { ++ // CraftBukkit start - fire HangingPlaceEvent ++ Player who = (entityhuman == null) ? null : (Player) entityhuman.getBukkitEntity(); ++ org.bukkit.block.Block blockClicked = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ()); ++ org.bukkit.block.BlockFace blockFace = org.bukkit.craftbukkit.block.CraftBlock.notchToBlockFace(enumdirection); + -+ HangingPlaceEvent event = new HangingPlaceEvent((org.bukkit.entity.Hanging) entityhanging.getBukkitEntity(), who, blockClicked, blockFace); -+ world.getServer().getPluginManager().callEvent(event); ++ HangingPlaceEvent event = new HangingPlaceEvent((org.bukkit.entity.Hanging) entityhanging.getBukkitEntity(), who, blockClicked, blockFace); ++ world.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()); -+ world.getServer().getPluginManager().callEvent(paintingEvent); -+ } -+ -+ if (event.isCancelled() || (paintingEvent != null && paintingEvent.isCancelled())) { -+ return false; -+ } -+ // CraftBukkit end - world.addEntity(entityhanging); - } - ++ if (event.isCancelled()) { ++ return EnumInteractionResult.FAIL; ++ } ++ // CraftBukkit end + entityhanging.o(); + world.addEntity(entityhanging); + } |