From 993f8288fa1c20a5942908da1b08022f2cd0599e Mon Sep 17 00:00:00 2001 From: Owen <23108066+Owen1212055@users.noreply.github.com> Date: Sat, 19 Mar 2022 20:50:33 -0400 Subject: [PATCH] Add TameableDeathMessageEvent (#5392) --- .../0376-Add-TameableDeathMessageEvent.patch | 81 +++++++++++++++++++ .../0884-Add-TameableDeathMessageEvent.patch | 23 ++++++ 2 files changed, 104 insertions(+) create mode 100644 patches/api/0376-Add-TameableDeathMessageEvent.patch create mode 100644 patches/server/0884-Add-TameableDeathMessageEvent.patch diff --git a/patches/api/0376-Add-TameableDeathMessageEvent.patch b/patches/api/0376-Add-TameableDeathMessageEvent.patch new file mode 100644 index 000000000..6152eacbe --- /dev/null +++ b/patches/api/0376-Add-TameableDeathMessageEvent.patch @@ -0,0 +1,81 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com> +Date: Fri, 19 Mar 2021 23:25:38 -0400 +Subject: [PATCH] Add TameableDeathMessageEvent + + +diff --git a/src/main/java/io/papermc/paper/event/entity/TameableDeathMessageEvent.java b/src/main/java/io/papermc/paper/event/entity/TameableDeathMessageEvent.java +new file mode 100644 +index 0000000000000000000000000000000000000000..70cd37aefbd5d64c798ab2fc3b6d502134690348 +--- /dev/null ++++ b/src/main/java/io/papermc/paper/event/entity/TameableDeathMessageEvent.java +@@ -0,0 +1,69 @@ ++package io.papermc.paper.event.entity; ++ ++import net.kyori.adventure.text.Component; ++import org.bukkit.entity.Tameable; ++import org.bukkit.event.Cancellable; ++import org.bukkit.event.HandlerList; ++import org.bukkit.event.entity.EntityEvent; ++import org.jetbrains.annotations.NotNull; ++ ++/** ++ * Called when a {@link Tameable} dies and sends a death message. ++ */ ++public class TameableDeathMessageEvent extends EntityEvent implements Cancellable { ++ ++ private static final HandlerList handlers = new HandlerList(); ++ private boolean cancelled; ++ private Component deathMessage; ++ ++ public TameableDeathMessageEvent(@NotNull Tameable what, @NotNull Component deathMessage) { ++ super(what); ++ this.deathMessage = deathMessage; ++ } ++ ++ /** ++ * Set the death message that appears to the owner of the tameable. ++ * ++ * @param deathMessage Death message to appear ++ */ ++ public void deathMessage(@NotNull Component deathMessage) { ++ this.deathMessage = deathMessage; ++ } ++ ++ /** ++ * Get the death message that appears to the owner of the tameable. ++ * ++ * @return Death message to appear ++ */ ++ @NotNull ++ public Component deathMessage() { ++ return deathMessage; ++ } ++ ++ @Override ++ public boolean isCancelled() { ++ return cancelled; ++ } ++ ++ @Override ++ public void setCancelled(boolean cancel) { ++ this.cancelled = cancel; ++ } ++ ++ @NotNull ++ @Override ++ public Tameable getEntity() { ++ return (Tameable) super.getEntity(); ++ } ++ ++ @NotNull ++ @Override ++ public HandlerList getHandlers() { ++ return handlers; ++ } ++ ++ @NotNull ++ public static HandlerList getHandlerList() { ++ return handlers; ++ } ++} diff --git a/patches/server/0884-Add-TameableDeathMessageEvent.patch b/patches/server/0884-Add-TameableDeathMessageEvent.patch new file mode 100644 index 000000000..23302de76 --- /dev/null +++ b/patches/server/0884-Add-TameableDeathMessageEvent.patch @@ -0,0 +1,23 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com> +Date: Mon, 21 Jun 2021 21:24:45 -0400 +Subject: [PATCH] Add TameableDeathMessageEvent + + +diff --git a/src/main/java/net/minecraft/world/entity/TamableAnimal.java b/src/main/java/net/minecraft/world/entity/TamableAnimal.java +index 7e67c47434d1f29cc87f3af926f3efc920c87829..de95bfd6e5a97257cb4915ce0a7a704784f110df 100644 +--- a/src/main/java/net/minecraft/world/entity/TamableAnimal.java ++++ b/src/main/java/net/minecraft/world/entity/TamableAnimal.java +@@ -209,7 +209,11 @@ public abstract class TamableAnimal extends Animal implements OwnableEntity { + @Override + public void die(DamageSource source) { + if (!this.level.isClientSide && this.level.getGameRules().getBoolean(GameRules.RULE_SHOWDEATHMESSAGES) && this.getOwner() instanceof ServerPlayer) { +- this.getOwner().sendMessage(this.getCombatTracker().getDeathMessage(), Util.NIL_UUID); ++ // Paper start - TameableDeathMessageEvent ++ io.papermc.paper.event.entity.TameableDeathMessageEvent event = new io.papermc.paper.event.entity.TameableDeathMessageEvent((org.bukkit.entity.Tameable) getBukkitEntity(), io.papermc.paper.adventure.PaperAdventure.asAdventure(this.getCombatTracker().getDeathMessage())); ++ if (event.callEvent()) { ++ this.getOwner().sendMessage(io.papermc.paper.adventure.PaperAdventure.asVanilla(event.deathMessage()), Util.NIL_UUID); ++ } // Paper end - TameableDeathMessageEvent + } + + super.die(source);