From 6f94d97a9c57a0b2e3c61a53aac89880e1632294 Mon Sep 17 00:00:00 2001 From: Dueris Date: Sun, 4 Oct 2026 01:44:17 -0700 Subject: [PATCH 1/2] Fix field not being unset if emptyContents returns false --- .../sources/net/minecraft/world/item/BucketItem.java.patch | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/paper-server/patches/sources/net/minecraft/world/item/BucketItem.java.patch b/paper-server/patches/sources/net/minecraft/world/item/BucketItem.java.patch index 6002353277f6..af79080c0fce 100644 --- a/paper-server/patches/sources/net/minecraft/world/item/BucketItem.java.patch +++ b/paper-server/patches/sources/net/minecraft/world/item/BucketItem.java.patch @@ -17,7 +17,11 @@ this.checkExtraContent(player, level, itemStack, placePos); if (player instanceof ServerPlayer serverPlayer && this.content != Fluids.EMPTY) { CriteriaTriggers.PLACED_BLOCK.trigger(serverPlayer, placePos, itemStack); -@@ -72,12 +_,22 @@ +@@ -69,15 +_,26 @@ + ItemStack emptyResult = ItemUtils.createFilledResult(itemStack, player, getEmptySuccessItem(itemStack, player)); + return InteractionResult.SUCCESS.heldItemTransformedTo(emptyResult); + } else { ++ itemLeftInHandAfterPlayerBucketEmptyEvent = null; // Paper - Fix PlayerBucketEmptyEvent result itemstack if (this.content == Fluids.EMPTY) { BlockState blockState = level.getBlockState(pos); if (blockState.getBlock() instanceof BucketPickup bucketPickupBlock) { From ac0455a512552d86f6f6e56450e681cb58ce6341 Mon Sep 17 00:00:00 2001 From: Dueris Date: Sun, 4 Oct 2026 02:54:20 -0700 Subject: [PATCH 2/2] Adjust from review --- .../net/minecraft/world/item/BucketItem.java.patch | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/paper-server/patches/sources/net/minecraft/world/item/BucketItem.java.patch b/paper-server/patches/sources/net/minecraft/world/item/BucketItem.java.patch index af79080c0fce..eb36b140cf5f 100644 --- a/paper-server/patches/sources/net/minecraft/world/item/BucketItem.java.patch +++ b/paper-server/patches/sources/net/minecraft/world/item/BucketItem.java.patch @@ -17,11 +17,7 @@ this.checkExtraContent(player, level, itemStack, placePos); if (player instanceof ServerPlayer serverPlayer && this.content != Fluids.EMPTY) { CriteriaTriggers.PLACED_BLOCK.trigger(serverPlayer, placePos, itemStack); -@@ -69,15 +_,26 @@ - ItemStack emptyResult = ItemUtils.createFilledResult(itemStack, player, getEmptySuccessItem(itemStack, player)); - return InteractionResult.SUCCESS.heldItemTransformedTo(emptyResult); - } else { -+ itemLeftInHandAfterPlayerBucketEmptyEvent = null; // Paper - Fix PlayerBucketEmptyEvent result itemstack +@@ -72,12 +_,22 @@ if (this.content == Fluids.EMPTY) { BlockState blockState = level.getBlockState(pos); if (blockState.getBlock() instanceof BucketPickup bucketPickupBlock) { @@ -91,6 +87,14 @@ if (level.environmentAttributes().getValue(EnvironmentAttributes.WATER_EVAPORATES, pos) && this.content.is(FluidTags.WATER)) { int x = pos.getX(); int y = pos.getY(); +@@ -143,6 +_,7 @@ + + if (!level.setBlock(pos, this.content.defaultFluidState().createLegacyBlock(), Block.UPDATE_ALL_IMMEDIATE) + && !blockState.getFluidState().isSource()) { ++ itemLeftInHandAfterPlayerBucketEmptyEvent = null; // Paper - Fix PlayerBucketEmptyEvent result itemstack + return false; + } + @@ -150,7 +_,7 @@ return true; }