aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0562-Correctly-check-if-bucket-dispenses-will-succeed-for.patch
diff options
context:
space:
mode:
authormaxcom1 <[email protected]>2024-03-23 22:26:17 +0100
committerGitHub <[email protected]>2024-03-23 17:26:17 -0400
commitb6001403e9703cadaa6e8c8558e732b91c3c6d6e (patch)
treea8c57bbc334a8ad48d4ad2b43db335667b142bee /patches/server/0562-Correctly-check-if-bucket-dispenses-will-succeed-for.patch
parent9ec7dfcbc41c6e625de0050b6997160a75df9f44 (diff)
downloadPaper-b6001403e9703cadaa6e8c8558e732b91c3c6d6e.tar.gz
Paper-b6001403e9703cadaa6e8c8558e732b91c3c6d6e.zip
Add methods to change entity physics (#10334)
Diffstat (limited to 'patches/server/0562-Correctly-check-if-bucket-dispenses-will-succeed-for.patch')
-rw-r--r--patches/server/0562-Correctly-check-if-bucket-dispenses-will-succeed-for.patch28
1 files changed, 28 insertions, 0 deletions
diff --git a/patches/server/0562-Correctly-check-if-bucket-dispenses-will-succeed-for.patch b/patches/server/0562-Correctly-check-if-bucket-dispenses-will-succeed-for.patch
new file mode 100644
index 0000000000..5ca75e86a3
--- /dev/null
+++ b/patches/server/0562-Correctly-check-if-bucket-dispenses-will-succeed-for.patch
@@ -0,0 +1,28 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jake Potrebic <[email protected]>
+Date: Mon, 1 Jan 2024 12:57:19 -0800
+Subject: [PATCH] Correctly check if bucket dispenses will succeed for event
+
+Upstream incorrectly checks if the bucket place will succeed
+in order to fire the BlockDispenseEvent. This patch corrects
+that.
+
+diff --git a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java
+index 8c8d2e81f0866dc1441e181f2580852d87263bcc..c1c57f24ccfa7bd17541f53d02293db0bce8dc5c 100644
+--- a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java
++++ b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java
+@@ -617,7 +617,13 @@ public interface DispenseItemBehavior {
+ int y = blockposition.getY();
+ int z = blockposition.getZ();
+ BlockState iblockdata = worldserver.getBlockState(blockposition);
+- if (iblockdata.isAir() || iblockdata.canBeReplaced() || (dispensiblecontaineritem instanceof BucketItem && iblockdata.getBlock() instanceof LiquidBlockContainer && ((LiquidBlockContainer) iblockdata.getBlock()).canPlaceLiquid((Player) null, worldserver, blockposition, iblockdata, ((BucketItem) dispensiblecontaineritem).content))) {
++ // Paper start - correctly check if the bucket place will succeed
++ /* Taken from SolidBucketItem#emptyContents */
++ boolean willEmptyContentsSolidBucketItem = dispensiblecontaineritem instanceof net.minecraft.world.item.SolidBucketItem && worldserver.isInWorldBounds(blockposition) && iblockdata.isAir();
++ /* Taken from BucketItem#emptyContents */
++ boolean willEmptyBucketItem = dispensiblecontaineritem instanceof final BucketItem bucketItem && bucketItem.content instanceof net.minecraft.world.level.material.FlowingFluid && (iblockdata.isAir() || iblockdata.canBeReplaced(bucketItem.content) || (iblockdata.getBlock() instanceof LiquidBlockContainer liquidBlockContainer && liquidBlockContainer.canPlaceLiquid(null, worldserver, blockposition, iblockdata, bucketItem.content)));
++ if (willEmptyContentsSolidBucketItem || willEmptyBucketItem) {
++ // Paper end - correctly check if the bucket place will succeed
+ org.bukkit.block.Block block = CraftBlock.at(worldserver, pointer.pos());
+ CraftItemStack craftItem = CraftItemStack.asCraftMirror(stack);
+