From e1faa8e8148d843ad692e15b6ebc37dc918cd246 Mon Sep 17 00:00:00 2001
From: Jake Potrebic <jake.m.potrebic@gmail.com>
Date: Fri, 29 Dec 2023 11:57:32 -0800
Subject: [PATCH] Call entity_die game event after event cancel check (#10096)

---
 patches/server/Improve-death-events.patch            | 10 ++++++++++
 patches/server/PlayerDeathEvent-getItemsToKeep.patch |  2 +-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/patches/server/Improve-death-events.patch b/patches/server/Improve-death-events.patch
index 542d47de30..037a7ae117 100644
--- a/patches/server/Improve-death-events.patch
+++ b/patches/server/Improve-death-events.patch
@@ -34,6 +34,15 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
      // CraftBukkit start
      public String displayName;
 @@ -0,0 +0,0 @@ public class ServerPlayer extends Player {
+ 
+     @Override
+     public void die(DamageSource damageSource) {
+-        this.gameEvent(GameEvent.ENTITY_DIE);
++        // this.gameEvent(GameEvent.ENTITY_DIE); // Paper - move below event cancellation check
+         boolean flag = this.level().getGameRules().getBoolean(GameRules.RULE_SHOWDEATHMESSAGES);
+         // CraftBukkit start - fire PlayerDeathEvent
+         if (this.isRemoved()) {
+@@ -0,0 +0,0 @@ public class ServerPlayer extends Player {
          String deathmessage = defaultMessage.getString();
          this.keepLevel = keepInventory; // SPIGOT-2222: pre-set keepLevel
          org.bukkit.event.entity.PlayerDeathEvent event = CraftEventFactory.callPlayerDeathEvent(this, loot, PaperAdventure.asAdventure(defaultMessage), defaultMessage.getString(), keepInventory); // Paper - Adventure
@@ -45,6 +54,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +            }
 +            return;
 +        }
++        this.gameEvent(GameEvent.ENTITY_DIE); // moved from the top of this method
 +        // Paper end
  
          // SPIGOT-943 - only call if they have an inventory open
diff --git a/patches/server/PlayerDeathEvent-getItemsToKeep.patch b/patches/server/PlayerDeathEvent-getItemsToKeep.patch
index 86a245aad9..65dc001af7 100644
--- a/patches/server/PlayerDeathEvent-getItemsToKeep.patch
+++ b/patches/server/PlayerDeathEvent-getItemsToKeep.patch
@@ -60,7 +60,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +
      @Override
      public void die(DamageSource damageSource) {
-         this.gameEvent(GameEvent.ENTITY_DIE);
+         // this.gameEvent(GameEvent.ENTITY_DIE); // Paper - move below event cancellation check
 @@ -0,0 +0,0 @@ public class ServerPlayer extends Player {
          this.dropExperience();
          // we clean the player's inventory after the EntityDeathEvent is called so plugins can get the exact state of the inventory.