5050import net .minecraft .world .item .ItemStack ;
5151import net .minecraft .world .item .enchantment .EnchantmentEffectComponents ;
5252import net .minecraft .world .item .enchantment .EnchantmentHelper ;
53- import net .minecraft .world .level .GameRules ;
5453import net .minecraft .world .level .GameType ;
5554import net .minecraft .world .level .Level ;
5655import net .minecraft .world .level .border .WorldBorder ;
@@ -702,9 +701,11 @@ public int nextContainerCounterInt() {
702701
703702 loot .get ().addAll (this .drops );
704703 this .drops .clear (); // SPIGOT-5188: make sure to clear
704+ }
705705
706+ @ Redirect (method = "die" , at = @ At (value = "INVOKE" , target = "Lnet/minecraft/world/damagesource/CombatTracker;getDeathMessage()Lnet/minecraft/network/chat/Component;" ))
707+ private Component neotenet$callDeathEvent (CombatTracker instance , @ Local (argsOnly = true ) DamageSource p_9035_ , @ Share ("loot" ) LocalRef <java .util .List <org .bukkit .inventory .ItemStack >> loot , @ Share ("neotenet$flag" )LocalBooleanRef neotenet$flag ) {
706708 Component defaultMessage = this .getCombatTracker ().getDeathMessage ();
707-
708709 String deathmessage = defaultMessage .getString ();
709710 keepLevel = neotenet$flag .get (); // SPIGOT-2222: pre-set keepLevel
710711 org .bukkit .event .entity .PlayerDeathEvent event = CraftEventFactory .callPlayerDeathEvent (((ServerPlayer ) (Object ) this ), p_9035_ , loot .get (), deathmessage , neotenet$flag .get ());
@@ -713,8 +714,25 @@ public int nextContainerCounterInt() {
713714 if (this .containerMenu != this .inventoryMenu ) {
714715 this .closeContainer ();
715716 }
717+ if (!event .getKeepInventory ()) {
718+ this .getInventory ().clearContent ();
719+ }
720+
721+ String deathMessage = event .getDeathMessage ();
722+ Component ichatbasecomponent ;
723+
724+ if (deathMessage != null && deathMessage .length () > 0 && neotenet$flag .get ()) { // TODO: allow plugins to override?
725+ if (deathMessage .equals (deathmessage )) {
726+ ichatbasecomponent = this .getCombatTracker ().getDeathMessage ();
727+ } else {
728+ ichatbasecomponent = org .bukkit .craftbukkit .util .CraftChatMessage .fromStringOrNull (deathMessage );
729+ }
730+ return ichatbasecomponent ;
731+ }
732+ return defaultMessage ;
716733 }
717734
735+
718736 @ Override
719737 public Entity changeDimension (ServerLevel worldserver , PlayerTeleportEvent .TeleportCause cause ) {
720738 neotenet$changeDimensionCause .set (cause );
0 commit comments