From 0082c633454320217787bc757c3b6ec1c6924c2f Mon Sep 17 00:00:00 2001 From: MelnCat Date: Sun, 12 Jan 2025 16:21:37 -0800 Subject: [PATCH] Add death screen API --- patches/api/0038-Add-death-screen-API.patch | 36 ------------------- .../server/0254-Add-death-screen-API.patch | 22 ------------ .../java/org/bukkit/entity/Player.java.patch | 22 +++++++++++- .../craftbukkit/entity/CraftPlayer.java.patch | 10 +++++- 4 files changed, 30 insertions(+), 60 deletions(-) delete mode 100644 patches/api/0038-Add-death-screen-API.patch delete mode 100644 patches/server/0254-Add-death-screen-API.patch diff --git a/patches/api/0038-Add-death-screen-API.patch b/patches/api/0038-Add-death-screen-API.patch deleted file mode 100644 index 11afb29cd..000000000 --- a/patches/api/0038-Add-death-screen-API.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: MelnCat -Date: Fri, 23 Sep 2022 18:35:28 -0700 -Subject: [PATCH] Add death screen API - - -diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 8cedbba4e65b0a8d3a17c6960033e2a324c64bc9..6f7f1fc3db0237021fa1bd0f11fe56b2d6d4f84a 100644 ---- a/src/main/java/org/bukkit/entity/Player.java -+++ b/src/main/java/org/bukkit/entity/Player.java -@@ -4009,5 +4009,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM - * Clears all debug block highlights - */ - void clearBlockHighlights(); -+ -+ /** -+ * Sends a player the death screen with a specified death message. -+ * -+ * @param message The death message to show the player -+ */ -+ void sendDeathScreen(@NotNull net.kyori.adventure.text.Component message); -+ -+ /** -+ * Sends a player the death screen with a specified death message, -+ * along with the entity that caused the death. -+ * -+ * @param message The death message to show the player -+ * @param killer The entity that killed the player -+ * @deprecated Use {@link #sendDeathScreen(net.kyori.adventure.text.Component)} instead, as 1.20 removed the killer ID from the packet. -+ */ -+ @Deprecated(since = "1.20") -+ default void sendDeathScreen(@NotNull net.kyori.adventure.text.Component message, @Nullable Entity killer) { -+ sendDeathScreen(message); -+ } - // Purpur end - } diff --git a/patches/server/0254-Add-death-screen-API.patch b/patches/server/0254-Add-death-screen-API.patch deleted file mode 100644 index 82b325cc5..000000000 --- a/patches/server/0254-Add-death-screen-API.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: MelnCat -Date: Fri, 23 Sep 2022 18:41:05 -0700 -Subject: [PATCH] Add death screen API - - -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 95d011d48c312f247d766650b33d2366a774e5bf..df6fc6e6f4d1587dad704f609a854c5d996cf358 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3655,4 +3655,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { - this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestClearMarkersDebugPayload())); - } - // Purpur end - Debug Marker API -+ // Purpur start - Add death screen API -+ @Override -+ public void sendDeathScreen(net.kyori.adventure.text.Component message) { -+ if (this.getHandle().connection == null) return; -+ this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundPlayerCombatKillPacket(getEntityId(), io.papermc.paper.adventure.PaperAdventure.asVanilla(message))); -+ } -+ // Purpur end - Add death screen API - } diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch index 23673ffe0..1bce37015 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3911,4 +_,103 @@ +@@ -3911,4 +_,123 @@ */ void sendEntityEffect(org.bukkit.@NotNull EntityEffect effect, @NotNull Entity target); // Paper end - entity effect API @@ -102,5 +102,25 @@ + * Clears all debug block highlights + */ + void clearBlockHighlights(); ++ ++ /** ++ * Sends a player the death screen with a specified death message. ++ * ++ * @param message The death message to show the player ++ */ ++ void sendDeathScreen(@NotNull net.kyori.adventure.text.Component message); ++ ++ /** ++ * Sends a player the death screen with a specified death message, ++ * along with the entity that caused the death. ++ * ++ * @param message The death message to show the player ++ * @param killer The entity that killed the player ++ * @deprecated Use {@link #sendDeathScreen(net.kyori.adventure.text.Component)} instead, as 1.20 removed the killer ID from the packet. ++ */ ++ @Deprecated(since = "1.20") ++ default void sendDeathScreen(@NotNull net.kyori.adventure.text.Component message, @Nullable Entity killer) { ++ sendDeathScreen(message); ++ } + // Purpur end } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch index 253e8db67..6464bba57 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch @@ -46,7 +46,7 @@ private void validateSpeed(float value) { Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); } -@@ -3559,4 +_,66 @@ +@@ -3559,4 +_,74 @@ this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundEntityEventPacket(((CraftEntity) target).getHandle(), effect.getData())); } // Paper end - entity effect API @@ -112,4 +112,12 @@ + this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestClearMarkersDebugPayload())); + } + // Purpur end - Debug Marker API ++ ++ // Purpur start - Death screen API ++ @Override ++ public void sendDeathScreen(net.kyori.adventure.text.Component message) { ++ if (this.getHandle().connection == null) return; ++ this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundPlayerCombatKillPacket(getEntityId(), io.papermc.paper.adventure.PaperAdventure.asVanilla(message))); ++ } ++ // Purpur end - Death screen API }