Skip to content

Commit 454daaa

Browse files
committed
feat:implements player death event
1 parent f2cc443 commit 454daaa

1 file changed

Lines changed: 20 additions & 2 deletions

File tree

src/main/java/org/teneted/neotenet/mixin/server/level/MixinServerPlayer.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@
5050
import net.minecraft.world.item.ItemStack;
5151
import net.minecraft.world.item.enchantment.EnchantmentEffectComponents;
5252
import net.minecraft.world.item.enchantment.EnchantmentHelper;
53-
import net.minecraft.world.level.GameRules;
5453
import net.minecraft.world.level.GameType;
5554
import net.minecraft.world.level.Level;
5655
import 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

Comments
 (0)