From fbb47e83831c8a9b0faf0a01855537ca57cdecef Mon Sep 17 00:00:00 2001 From: BlackHole Date: Mon, 1 May 2017 01:21:20 +0200 Subject: SPIGOT-3215: Call BlockPhysicsEvent for tall plants --- nms-patches/BlockPlant.patch | 21 +++------------------ nms-patches/BlockTallPlant.patch | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 18 deletions(-) create mode 100644 nms-patches/BlockTallPlant.patch (limited to 'nms-patches') diff --git a/nms-patches/BlockPlant.patch b/nms-patches/BlockPlant.patch index ff1d2de5..c9ac5dc7 100644 --- a/nms-patches/BlockPlant.patch +++ b/nms-patches/BlockPlant.patch @@ -1,26 +1,11 @@ --- a/net/minecraft/server/BlockPlant.java +++ b/net/minecraft/server/BlockPlant.java -@@ -2,6 +2,10 @@ - - import java.util.Random; - import javax.annotation.Nullable; -+// CraftBukkit start -+import org.bukkit.craftbukkit.util.CraftMagicNumbers; -+import org.bukkit.event.block.BlockPhysicsEvent; -+// CraftBukkit end - - public class BlockPlant extends Block { - -@@ -40,6 +44,15 @@ +@@ -40,6 +40,11 @@ protected void e(World world, BlockPosition blockposition, IBlockData iblockdata) { if (!this.f(world, blockposition, iblockdata)) { -+ // CraftBukkit Start -+ org.bukkit.block.Block block = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ()); -+ BlockPhysicsEvent event = new BlockPhysicsEvent(block, block.getTypeId()); -+ world.getServer().getPluginManager().callEvent(event); -+ -+ if (event.isCancelled()) { ++ // CraftBukkit start ++ if (org.bukkit.craftbukkit.event.CraftEventFactory.callBlockPhysicsEvent(world, blockposition).isCancelled()) { + return; + } + // CraftBukkit end diff --git a/nms-patches/BlockTallPlant.patch b/nms-patches/BlockTallPlant.patch new file mode 100644 index 00000000..a1127a3a --- /dev/null +++ b/nms-patches/BlockTallPlant.patch @@ -0,0 +1,14 @@ +--- a/net/minecraft/server/BlockTallPlant.java ++++ b/net/minecraft/server/BlockTallPlant.java +@@ -48,6 +48,11 @@ + + protected void e(World world, BlockPosition blockposition, IBlockData iblockdata) { + if (!this.f(world, blockposition, iblockdata)) { ++ // CraftBukkit start ++ if (org.bukkit.craftbukkit.event.CraftEventFactory.callBlockPhysicsEvent(world, blockposition).isCancelled()) { ++ return; ++ } ++ // CraftBukkit end + boolean flag = iblockdata.get(BlockTallPlant.HALF) == BlockTallPlant.EnumTallPlantHalf.UPPER; + BlockPosition blockposition1 = flag ? blockposition : blockposition.up(); + BlockPosition blockposition2 = flag ? blockposition.down() : blockposition; -- cgit v1.2.3