diff --git a/paper-server/nms-patches/BlockPlant.patch b/paper-server/nms-patches/BlockPlant.patch index ff1d2de5b6..c9ac5dc76e 100644 --- a/paper-server/nms-patches/BlockPlant.patch +++ b/paper-server/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/paper-server/nms-patches/BlockTallPlant.patch b/paper-server/nms-patches/BlockTallPlant.patch new file mode 100644 index 0000000000..a1127a3aed --- /dev/null +++ b/paper-server/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; diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/paper-server/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java index ad383ffe63..95f602e198 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -1039,6 +1039,13 @@ public class CraftEventFactory { return event; } + public static BlockPhysicsEvent callBlockPhysicsEvent(World world, BlockPosition blockposition) { + 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); + return event; + } + public static boolean handleBlockFormEvent(World world, BlockPosition pos, net.minecraft.server.Block block, @Nullable Entity entity) { BlockState blockState = world.getWorld().getBlockAt(pos.getX(), pos.getY(), pos.getZ()).getState(); blockState.setType(CraftMagicNumbers.getMaterial(block));