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 +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 +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); + } +