From f04a77dc2d3133ee0c9f7e7ef3bc1c5d29c99dc2 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sun, 18 Jul 2021 10:14:55 +1000 Subject: [PATCH] SPIGOT-6656: CauldronLevelChangeEvent is not fired correctly when dripstone fills the cauldron --- .../world/level/block/BlockCauldron.patch | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 nms-patches/net/minecraft/world/level/block/BlockCauldron.patch diff --git a/nms-patches/net/minecraft/world/level/block/BlockCauldron.patch b/nms-patches/net/minecraft/world/level/block/BlockCauldron.patch new file mode 100644 index 000000000..fdb95b71b --- /dev/null +++ b/nms-patches/net/minecraft/world/level/block/BlockCauldron.patch @@ -0,0 +1,27 @@ +--- a/net/minecraft/world/level/block/BlockCauldron.java ++++ b/net/minecraft/world/level/block/BlockCauldron.java +@@ -11,6 +11,10 @@ + import net.minecraft.world.level.material.FluidType; + import net.minecraft.world.level.material.FluidTypes; + ++// CraftBukkit start ++import org.bukkit.event.block.CauldronLevelChangeEvent; ++// CraftBukkit end ++ + public class BlockCauldron extends AbstractCauldronBlock { + + private static final float RAIN_FILL_CHANCE = 0.05F; +@@ -51,11 +55,11 @@ + @Override + protected void a(IBlockData iblockdata, World world, BlockPosition blockposition, FluidType fluidtype) { + if (fluidtype == FluidTypes.WATER) { +- world.setTypeUpdate(blockposition, Blocks.WATER_CAULDRON.getBlockData()); ++ LayeredCauldronBlock.changeLevel(iblockdata, world, blockposition, Blocks.WATER_CAULDRON.getBlockData(), null, CauldronLevelChangeEvent.ChangeReason.NATURAL_FILL); // CraftBukkit + world.triggerEffect(1047, blockposition, 0); + world.a((Entity) null, GameEvent.FLUID_PLACE, blockposition); + } else if (fluidtype == FluidTypes.LAVA) { +- world.setTypeUpdate(blockposition, Blocks.LAVA_CAULDRON.getBlockData()); ++ LayeredCauldronBlock.changeLevel(iblockdata, world, blockposition, Blocks.LAVA_CAULDRON.getBlockData(), null, CauldronLevelChangeEvent.ChangeReason.NATURAL_FILL); // CraftBukkit + world.triggerEffect(1046, blockposition, 0); + world.a((Entity) null, GameEvent.FLUID_PLACE, blockposition); + }