diff --git a/paper-server/patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch b/paper-server/patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch
index 86c8cf6309..9a2f656dc2 100644
--- a/paper-server/patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch
+++ b/paper-server/patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch
@@ -291,7 +291,7 @@
              }
          }
      }
-@@ -321,15 +483,54 @@
+@@ -321,15 +483,58 @@
          }
      }
  
@@ -337,7 +337,11 @@
 +
 +                // send a correcting update to the client for the block above as well, this because of replaceable blocks (such as grass, sea grass etc)
 +                player.connection.send(new ClientboundBlockUpdatePacket(world, blockposition.above()));
++            // Paper start - extend Player Interact cancellation // TODO: consider merging this into the extracted method
++            } else if (iblockdata.is(Blocks.JIGSAW) || iblockdata.is(Blocks.STRUCTURE_BLOCK) || iblockdata.getBlock() instanceof net.minecraft.world.level.block.CommandBlock) {
++                player.connection.send(new net.minecraft.network.protocol.game.ClientboundContainerClosePacket(this.player.containerMenu.containerId));
 +            }
++            // Paper end - extend Player Interact cancellation
 +            player.getBukkitEntity().updateInventory(); // SPIGOT-2867
 +            return (event.useItemInHand() != Event.Result.ALLOW) ? InteractionResult.SUCCESS : InteractionResult.PASS;
 +        } else if (this.gameModeForPlayer == GameType.SPECTATOR) {
@@ -346,7 +350,7 @@
              if (itileinventory != null) {
                  player.openMenu(itileinventory);
                  return InteractionResult.CONSUME;
-@@ -359,7 +560,7 @@
+@@ -359,7 +564,7 @@
                  }
              }