diff --git a/Spigot-Server-Patches/0137-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch b/Spigot-Server-Patches/0137-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch
index 407499f483..1bdda8112e 100644
--- a/Spigot-Server-Patches/0137-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch
+++ b/Spigot-Server-Patches/0137-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch
@@ -8,10 +8,10 @@ Adds lots of information about why this orb exists.
 Replaces isFromBottle() with logic that persists entity reloads too.
 
 diff --git a/src/main/java/net/minecraft/server/level/PlayerInteractManager.java b/src/main/java/net/minecraft/server/level/PlayerInteractManager.java
-index e9730597f2bd55a021f212d5eb5a76a26f320fb0..51157a9223f3da22d1110cfa211a502de59fb8a1 100644
+index 164fd6b867bc68f6aba3fa2c17371e87495baea3..74b4b127f39a0ad06e8f9add6861763724ab70ba 100644
 --- a/src/main/java/net/minecraft/server/level/PlayerInteractManager.java
 +++ b/src/main/java/net/minecraft/server/level/PlayerInteractManager.java
-@@ -408,7 +408,7 @@ public class PlayerInteractManager {
+@@ -409,7 +409,7 @@ public class PlayerInteractManager {
  
                  // Drop event experience
                  if (flag && event != null) {
diff --git a/Spigot-Server-Patches/0192-Extend-Player-Interact-cancellation.patch b/Spigot-Server-Patches/0192-Extend-Player-Interact-cancellation.patch
index a0147364f6..d3407a908a 100644
--- a/Spigot-Server-Patches/0192-Extend-Player-Interact-cancellation.patch
+++ b/Spigot-Server-Patches/0192-Extend-Player-Interact-cancellation.patch
@@ -13,7 +13,7 @@ Update adjacent blocks of doors, double plants, pistons and beds
 when cancelling interaction.
 
 diff --git a/src/main/java/net/minecraft/server/level/PlayerInteractManager.java b/src/main/java/net/minecraft/server/level/PlayerInteractManager.java
-index 51157a9223f3da22d1110cfa211a502de59fb8a1..0ead8f1fabcc8debea8e2211d58a83b34acfcf0b 100644
+index 74b4b127f39a0ad06e8f9add6861763724ab70ba..14f287d30c9a141f78f6311bef02a6fc4fa17564 100644
 --- a/src/main/java/net/minecraft/server/level/PlayerInteractManager.java
 +++ b/src/main/java/net/minecraft/server/level/PlayerInteractManager.java
 @@ -6,6 +6,7 @@ import net.minecraft.core.BlockPosition;
@@ -32,7 +32,7 @@ index 51157a9223f3da22d1110cfa211a502de59fb8a1..0ead8f1fabcc8debea8e2211d58a83b3
  import net.minecraft.world.level.block.BlockJigsaw;
  import net.minecraft.world.level.block.BlockStructure;
  import net.minecraft.world.level.block.entity.TileEntity;
-@@ -179,6 +181,11 @@ public class PlayerInteractManager {
+@@ -180,6 +182,11 @@ public class PlayerInteractManager {
                  PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.LEFT_CLICK_BLOCK, blockposition, enumdirection, this.player.inventory.getItemInHand(), EnumHand.MAIN_HAND);
                  if (event.isCancelled()) {
                      // Let the client know the block still exists
@@ -44,7 +44,7 @@ index 51157a9223f3da22d1110cfa211a502de59fb8a1..0ead8f1fabcc8debea8e2211d58a83b3
                      this.player.playerConnection.sendPacket(new PacketPlayOutBlockChange(this.world, blockposition));
                      // Update any tile entity data for this block
                      TileEntity tileentity = this.world.getTileEntity(blockposition);
-@@ -483,13 +490,20 @@ public class PlayerInteractManager {
+@@ -484,6 +491,7 @@ public class PlayerInteractManager {
          interactItemStack = itemstack.cloneItemStack();
  
          if (event.useInteractedBlock() == Event.Result.DENY) {
@@ -52,9 +52,10 @@ index 51157a9223f3da22d1110cfa211a502de59fb8a1..0ead8f1fabcc8debea8e2211d58a83b3
              // If we denied a door from opening, we need to send a correcting update to the client, as it already opened the door.
              if (iblockdata.getBlock() instanceof BlockDoor) {
                  boolean bottom = iblockdata.get(BlockDoor.HALF) == BlockPropertyDoubleBlockHalf.LOWER;
-                 entityplayer.playerConnection.sendPacket(new PacketPlayOutBlockChange(world, bottom ? blockposition.up() : blockposition.down()));
-             } else if (iblockdata.getBlock() instanceof BlockCake) {
-                 entityplayer.getBukkitEntity().sendHealthUpdate(); // SPIGOT-1341 - reset health for cake
+@@ -496,7 +504,13 @@ public class PlayerInteractManager {
+ 
+                 // send a correcting update to the client for the block above as well, this because of replaceable blocks (such as grass, sea grass etc)
+                 entityplayer.playerConnection.sendPacket(new PacketPlayOutBlockChange(world, blockposition.up()));
 +            // Paper start  - extend Player Interact cancellation // TODO: consider merging this into the extracted method
 +            } else if (iblockdata.getBlock() instanceof BlockStructure) {
 +                entityplayer.playerConnection.sendPacket(new PacketPlayOutCloseWindow());
diff --git a/Spigot-Server-Patches/0311-Don-t-allow-digging-into-unloaded-chunks.patch b/Spigot-Server-Patches/0311-Don-t-allow-digging-into-unloaded-chunks.patch
index 0dcfc5b688..c76760fe81 100644
--- a/Spigot-Server-Patches/0311-Don-t-allow-digging-into-unloaded-chunks.patch
+++ b/Spigot-Server-Patches/0311-Don-t-allow-digging-into-unloaded-chunks.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Don't allow digging into unloaded chunks
 
 
 diff --git a/src/main/java/net/minecraft/server/level/PlayerInteractManager.java b/src/main/java/net/minecraft/server/level/PlayerInteractManager.java
-index cea19f4aafb3d81bf0dfcdac9103c03786fd5fc2..e7f762dc131ae40e36ff5e70b0394e0d5abdcee8 100644
+index 14f287d30c9a141f78f6311bef02a6fc4fa17564..d86b1e528b53db809ac993aa2f1d2799d4f1a574 100644
 --- a/src/main/java/net/minecraft/server/level/PlayerInteractManager.java
 +++ b/src/main/java/net/minecraft/server/level/PlayerInteractManager.java
-@@ -113,8 +113,8 @@ public class PlayerInteractManager {
+@@ -114,8 +114,8 @@ public class PlayerInteractManager {
          IBlockData iblockdata;
  
          if (this.j) {
@@ -19,7 +19,7 @@ index cea19f4aafb3d81bf0dfcdac9103c03786fd5fc2..e7f762dc131ae40e36ff5e70b0394e0d
                  this.j = false;
              } else {
                  float f = this.a(iblockdata, this.k, this.l);
-@@ -125,7 +125,13 @@ public class PlayerInteractManager {
+@@ -126,7 +126,13 @@ public class PlayerInteractManager {
                  }
              }
          } else if (this.f) {
@@ -34,7 +34,7 @@ index cea19f4aafb3d81bf0dfcdac9103c03786fd5fc2..e7f762dc131ae40e36ff5e70b0394e0d
              if (iblockdata.isAir()) {
                  this.world.a(this.player.getId(), this.h, -1);
                  this.m = -1;
-@@ -289,10 +295,12 @@ public class PlayerInteractManager {
+@@ -290,10 +296,12 @@ public class PlayerInteractManager {
                  this.player.playerConnection.sendPacket(new PacketPlayOutBlockBreak(blockposition, this.world.getType(blockposition), packetplayinblockdig_enumplayerdigtype, true, "stopped destroying"));
              } else if (packetplayinblockdig_enumplayerdigtype == PacketPlayInBlockDig.EnumPlayerDigType.ABORT_DESTROY_BLOCK) {
                  this.f = false;
diff --git a/Spigot-Server-Patches/0363-Anti-Xray.patch b/Spigot-Server-Patches/0363-Anti-Xray.patch
index 5340e42f81..89d718549b 100644
--- a/Spigot-Server-Patches/0363-Anti-Xray.patch
+++ b/Spigot-Server-Patches/0363-Anti-Xray.patch
@@ -1160,10 +1160,10 @@ index 1f32ab230d650bb5f652efbacdd5e4b90dc4de89..71c2792d7eede35485cc36ac929cf295
          }
  
 diff --git a/src/main/java/net/minecraft/server/level/PlayerInteractManager.java b/src/main/java/net/minecraft/server/level/PlayerInteractManager.java
-index e7f762dc131ae40e36ff5e70b0394e0d5abdcee8..37e436c28c3c71c73fb0e7bf06a417739a318e47 100644
+index d86b1e528b53db809ac993aa2f1d2799d4f1a574..fbd8a6985a261396789c87e4b687140bd49cea0d 100644
 --- a/src/main/java/net/minecraft/server/level/PlayerInteractManager.java
 +++ b/src/main/java/net/minecraft/server/level/PlayerInteractManager.java
-@@ -308,6 +308,8 @@ public class PlayerInteractManager {
+@@ -309,6 +309,8 @@ public class PlayerInteractManager {
              }
  
          }
@@ -1173,7 +1173,7 @@ index e7f762dc131ae40e36ff5e70b0394e0d5abdcee8..37e436c28c3c71c73fb0e7bf06a41773
  
      public void a(BlockPosition blockposition, PacketPlayInBlockDig.EnumPlayerDigType packetplayinblockdig_enumplayerdigtype, String s) {
 diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java
-index 5da94d3c2498c84da81f41c37249159d1c3a9ca2..280ecd3634d77b93cf0923f4c4a5cfd7f114e848 100644
+index 735da5729c16940e3d8877f32a40342b9d1e989d..caf3d4df460d2d6dad6e68a68e1256e3603e3891 100644
 --- a/src/main/java/net/minecraft/server/level/WorldServer.java
 +++ b/src/main/java/net/minecraft/server/level/WorldServer.java
 @@ -210,7 +210,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
diff --git a/Spigot-Server-Patches/0507-Add-permission-for-command-blocks.patch b/Spigot-Server-Patches/0507-Add-permission-for-command-blocks.patch
index 951fc435d5..591d3130bf 100644
--- a/Spigot-Server-Patches/0507-Add-permission-for-command-blocks.patch
+++ b/Spigot-Server-Patches/0507-Add-permission-for-command-blocks.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add permission for command blocks
 
 
 diff --git a/src/main/java/net/minecraft/server/level/PlayerInteractManager.java b/src/main/java/net/minecraft/server/level/PlayerInteractManager.java
-index 37e436c28c3c71c73fb0e7bf06a417739a318e47..831bc83cdbf15f08961cc8703be348b458d47fd3 100644
+index fbd8a6985a261396789c87e4b687140bd49cea0d..984209e4f66ad23d85d2c5d02318caab1aff7324 100644
 --- a/src/main/java/net/minecraft/server/level/PlayerInteractManager.java
 +++ b/src/main/java/net/minecraft/server/level/PlayerInteractManager.java
-@@ -386,7 +386,7 @@ public class PlayerInteractManager {
+@@ -387,7 +387,7 @@ public class PlayerInteractManager {
              TileEntity tileentity = this.world.getTileEntity(blockposition);
              Block block = iblockdata.getBlock();
  
diff --git a/Spigot-Server-Patches/0571-Extend-block-drop-capture-to-capture-all-items-added.patch b/Spigot-Server-Patches/0571-Extend-block-drop-capture-to-capture-all-items-added.patch
index e37eac5da5..2c4e30d307 100644
--- a/Spigot-Server-Patches/0571-Extend-block-drop-capture-to-capture-all-items-added.patch
+++ b/Spigot-Server-Patches/0571-Extend-block-drop-capture-to-capture-all-items-added.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] Extend block drop capture to capture all items added to the
 
 
 diff --git a/src/main/java/net/minecraft/server/level/PlayerInteractManager.java b/src/main/java/net/minecraft/server/level/PlayerInteractManager.java
-index 831bc83cdbf15f08961cc8703be348b458d47fd3..5974cc9f895478eebd4922faa26d5a944064d7b6 100644
+index 984209e4f66ad23d85d2c5d02318caab1aff7324..31012963815a5c7355753b8cd2749976282ef0d2 100644
 --- a/src/main/java/net/minecraft/server/level/PlayerInteractManager.java
 +++ b/src/main/java/net/minecraft/server/level/PlayerInteractManager.java
 @@ -12,6 +12,7 @@ import net.minecraft.world.EnumHand;
@@ -17,7 +17,7 @@ index 831bc83cdbf15f08961cc8703be348b458d47fd3..5974cc9f895478eebd4922faa26d5a94
  import net.minecraft.world.entity.player.EntityHuman;
  import net.minecraft.world.item.ItemStack;
  import net.minecraft.world.item.context.ItemActionContext;
-@@ -418,10 +419,12 @@ public class PlayerInteractManager {
+@@ -419,10 +420,12 @@ public class PlayerInteractManager {
                      // return true; // CraftBukkit
                  }
                  // CraftBukkit start
diff --git a/Spigot-Server-Patches/0644-Implement-API-to-expose-exact-interaction-point.patch b/Spigot-Server-Patches/0644-Implement-API-to-expose-exact-interaction-point.patch
index 312e044f82..00853c3b60 100644
--- a/Spigot-Server-Patches/0644-Implement-API-to-expose-exact-interaction-point.patch
+++ b/Spigot-Server-Patches/0644-Implement-API-to-expose-exact-interaction-point.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Implement API to expose exact interaction point
 
 
 diff --git a/src/main/java/net/minecraft/server/level/PlayerInteractManager.java b/src/main/java/net/minecraft/server/level/PlayerInteractManager.java
-index d0a4b5cc21d40f17ed85cc174797e2705d7a0dc3..4203081692d2e4c43abc47aeb85f42b09acb7eee 100644
+index 31012963815a5c7355753b8cd2749976282ef0d2..87722285690d9d3370610e2a2eb809e0d1f497c9 100644
 --- a/src/main/java/net/minecraft/server/level/PlayerInteractManager.java
 +++ b/src/main/java/net/minecraft/server/level/PlayerInteractManager.java
-@@ -495,7 +495,7 @@ public class PlayerInteractManager {
+@@ -496,7 +496,7 @@ public class PlayerInteractManager {
              cancelledBlock = true;
          }
  
diff --git a/work/Bukkit b/work/Bukkit
index 6bff9d0996..80ece5de93 160000
--- a/work/Bukkit
+++ b/work/Bukkit
@@ -1 +1 @@
-Subproject commit 6bff9d0996132e9e38679b13853fc0b16a55e33c
+Subproject commit 80ece5de932aee4d2c37d13189722b26d45aec5b
diff --git a/work/CraftBukkit b/work/CraftBukkit
index a8d7c94a5b..0d86921e12 160000
--- a/work/CraftBukkit
+++ b/work/CraftBukkit
@@ -1 +1 @@
-Subproject commit a8d7c94a5b698732029f2f153904cbe943e70e71
+Subproject commit 0d86921e1231b8476ac5eb61e63da1411df658f7