Update death message

This commit is contained in:
2025-09-01 23:35:37 +02:00
parent a01a3ba55e
commit ccfb2decd3

View File

@@ -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);
}
}