diff --git a/src/main/java/dev/tatsi/reloadmc/smp/listener/PlayerDeathListener.java b/src/main/java/dev/tatsi/reloadmc/smp/listener/PlayerDeathListener.java index 8c0e807..dc645e8 100644 --- a/src/main/java/dev/tatsi/reloadmc/smp/listener/PlayerDeathListener.java +++ b/src/main/java/dev/tatsi/reloadmc/smp/listener/PlayerDeathListener.java @@ -2,6 +2,9 @@ package dev.tatsi.reloadmc.smp.listener; import dev.tatsi.reloadmc.smp.manager.DeathCounterManager; import dev.tatsi.reloadmc.smp.model.DeathRecord; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.TextDecoration; import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -20,32 +23,37 @@ public class PlayerDeathListener implements Listener { Player player = event.getEntity(); Location deathLocation = player.getLocation(); - // Get death reason from the death message, or use a default if null - String deathReason = event.getDeathMessage(); - if (deathReason == null || deathReason.trim().isEmpty()) { - deathReason = "Unknown cause"; + // Original-Death-Message (kann den Spielernamen enthalten) + String raw = event.getDeathMessage(); + if (raw == null || raw.trim().isEmpty()) { + raw = "died"; } - // Create death record with location and reason + // Heuristik: Spielernamen vorne entfernen, falls vorhanden + String name = player.getName(); + String reason = raw.trim(); + if (reason.startsWith(name)) { + reason = reason.substring(name.length()).trim(); + } + if (reason.isEmpty()) { + reason = "died"; + } + + // Death record speichern DeathRecord deathRecord = new DeathRecord( deathLocation.getX(), deathLocation.getY(), deathLocation.getZ(), deathLocation.getWorld().getName(), - deathReason + raw // originaler Grund für Historie ); + deathCounterManager.addDeath(player.getUniqueId(), name, deathRecord); - // Record the death - deathCounterManager.addDeath( - player.getUniqueId(), - player.getName(), - deathRecord - ); + // Schlanke Chat-Nachricht: Roter, fetter Spielername + Grund in Grau + Component message = Component.text(name, NamedTextColor.RED, TextDecoration.BOLD) + .append(Component.text(" " + reason, NamedTextColor.GRAY)); - // Optional: Send a message to the player about their death count - int deathCount = deathCounterManager.getDeathCount(player.getUniqueId()); - player.sendMessage(String.format("§cYou have died %d time(s). Death recorded at %.1f, %.1f, %.1f in %s", - deathCount, deathLocation.getX(), deathLocation.getY(), deathLocation.getZ(), - deathLocation.getWorld().getName())); + // Setze die Death-Message (Paper/Adventure) + event.deathMessage(message); } -} \ No newline at end of file +}