aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorFruxz <[email protected]>2022-09-17 23:27:46 +0200
committerGitHub <[email protected]>2022-09-17 22:27:46 +0100
commitf5f84ff476fff9c1f3f3f755a7045af9a0e32da1 (patch)
tree495ecceb534fc617fd2954b74c677d80de40aea4
parent751d092af3605263434fbb5bf18439bdbde57491 (diff)
downloadPaper-f5f84ff476fff9c1f3f3f755a7045af9a0e32da1.tar.gz
Paper-f5f84ff476fff9c1f3f3f755a7045af9a0e32da1.zip
Add custom destroyerIdentity parameter to the sendBlockBreak function (#5840)
-rw-r--r--patches/api/0392-Add-custom-destroyerIdentity-to-sendBlockDamage.patch38
-rw-r--r--patches/server/0937-Add-custom-destroyerIdentity-to-sendBlockDamage.patch32
2 files changed, 70 insertions, 0 deletions
diff --git a/patches/api/0392-Add-custom-destroyerIdentity-to-sendBlockDamage.patch b/patches/api/0392-Add-custom-destroyerIdentity-to-sendBlockDamage.patch
new file mode 100644
index 0000000000..46ac25ad48
--- /dev/null
+++ b/patches/api/0392-Add-custom-destroyerIdentity-to-sendBlockDamage.patch
@@ -0,0 +1,38 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: TheFruxz <[email protected]>
+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 b607c229cfb1e95b17b6a0073380089ef5e1b675..5e51bc9176b481ec70fd7e5ac23d04d59f8d1a9a 100644
+--- a/src/main/java/org/bukkit/entity/Player.java
++++ b/src/main/java/org/bukkit/entity/Player.java
+@@ -592,7 +592,7 @@ 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
+@@ -601,6 +601,18 @@ 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/0937-Add-custom-destroyerIdentity-to-sendBlockDamage.patch b/patches/server/0937-Add-custom-destroyerIdentity-to-sendBlockDamage.patch
new file mode 100644
index 0000000000..d883e026d7
--- /dev/null
+++ b/patches/server/0937-Add-custom-destroyerIdentity-to-sendBlockDamage.patch
@@ -0,0 +1,32 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: TheFruxz <[email protected]>
+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 41258fcfa0505500665c2f185b9ef6d050213355..4ba927b4585ca56337fa763d60d21de3b58bb2f7 100644
+--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+@@ -965,13 +965,20 @@ 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);
+ }
+