diff --git a/patches/api/Add-custom-destroyerIdentity-to-sendBlockDamage.patch b/patches/api/Add-custom-destroyerIdentity-to-sendBlockDamage.patch
new file mode 100644
index 0000000000..b7b02bc86c
--- /dev/null
+++ b/patches/api/Add-custom-destroyerIdentity-to-sendBlockDamage.patch
@@ -0,0 +1,38 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: TheFruxz <cedricspitzer@outlook.de>
+Date: Sat, 2 Apr 2022 13:03:39 +0200
+Subject: [PATCH] Add custom destroyerIdentity to sendBlockDamage
+
+
+diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
+index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
+--- a/src/main/java/org/bukkit/entity/Player.java
++++ b/src/main/java/org/bukkit/entity/Player.java
+@@ -0,0 +0,0 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+     /**
+      * Send block damage. This fakes block break progress for a user at a
+      * certain location. This will not actually change the block's break
+-     * progress in any way.
++     * progress in any way. The destroying entity will be this player.
+      *
+      * @param loc the location of the damaged block
+      * @param progress the progress from 0.0 - 1.0 where 0 is no damage and
+@@ -0,0 +0,0 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+     public void sendBlockDamage(@NotNull Location loc, float progress);
+ 
+     // Paper start
++
++    /**
++     * Send block damage. This fakes block break progress for a user at a certain location.
++     * This will not actually change the block's break progress in any way.
++     * The destroying entity is defined via the destroyerIdentity parameter.
++     *
++     * @param loc the location of the damaged block
++     * @param progress the progress from 0.0 - 1.0 where 0 is no damage and 1.0 is the most damaged
++     * @param destroyerIdentity the entity id of the destroyer
++     */
++    public void sendBlockDamage(@NotNull Location loc, float progress, int destroyerIdentity);
++
+     /**
+      * Send multiple block changes. This fakes a multi block change packet for each
+      * chunk section that a block change occurs. This will not actually change the world in any way.
diff --git a/patches/server/Add-custom-destroyerIdentity-to-sendBlockDamage.patch b/patches/server/Add-custom-destroyerIdentity-to-sendBlockDamage.patch
new file mode 100644
index 0000000000..73467e4749
--- /dev/null
+++ b/patches/server/Add-custom-destroyerIdentity-to-sendBlockDamage.patch
@@ -0,0 +1,32 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: TheFruxz <cedricspitzer@outlook.de>
+Date: Sat, 26 Mar 2022 18:41:36 +0100
+Subject: [PATCH] Add custom destroyerIdentity to sendBlockDamage
+
+
+diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
+--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+@@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+ 
+     @Override
+     public void sendBlockDamage(Location loc, float progress) {
++        // Paper start - customBlockDamage identity
++        sendBlockDamage(loc, progress, this.getHandle().getId());
++    }
++
++    @Override
++    public void sendBlockDamage(Location loc, float progress, int destroyerIdentity) {
++        // Paper end - customBlockDamage identity
+         Preconditions.checkArgument(loc != null, "loc must not be null");
+         Preconditions.checkArgument(progress >= 0.0 && progress <= 1.0, "progress must be between 0.0 and 1.0 (inclusive)");
+ 
+         if (this.getHandle().connection == null) return;
+ 
+         int stage = (int) (9 * progress); // There are 0 - 9 damage states
+-        ClientboundBlockDestructionPacket packet = new ClientboundBlockDestructionPacket(this.getHandle().getId(), new BlockPos(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()), stage);
++        ClientboundBlockDestructionPacket packet = new ClientboundBlockDestructionPacket(destroyerIdentity, new BlockPos(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()), stage);  // Paper - customBlockDamage identity
+         this.getHandle().connection.send(packet);
+     }
+