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.manager.DeathCounterManager;
import dev.tatsi.reloadmc.smp.model.DeathRecord; 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.Location;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@@ -20,32 +23,37 @@ public class PlayerDeathListener implements Listener {
Player player = event.getEntity(); Player player = event.getEntity();
Location deathLocation = player.getLocation(); Location deathLocation = player.getLocation();
// Get death reason from the death message, or use a default if null // Original-Death-Message (kann den Spielernamen enthalten)
String deathReason = event.getDeathMessage(); String raw = event.getDeathMessage();
if (deathReason == null || deathReason.trim().isEmpty()) { if (raw == null || raw.trim().isEmpty()) {
deathReason = "Unknown cause"; 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( DeathRecord deathRecord = new DeathRecord(
deathLocation.getX(), deathLocation.getX(),
deathLocation.getY(), deathLocation.getY(),
deathLocation.getZ(), deathLocation.getZ(),
deathLocation.getWorld().getName(), deathLocation.getWorld().getName(),
deathReason raw // originaler Grund für Historie
); );
deathCounterManager.addDeath(player.getUniqueId(), name, deathRecord);
// Record the death // Schlanke Chat-Nachricht: Roter, fetter Spielername + Grund in Grau
deathCounterManager.addDeath( Component message = Component.text(name, NamedTextColor.RED, TextDecoration.BOLD)
player.getUniqueId(), .append(Component.text(" " + reason, NamedTextColor.GRAY));
player.getName(),
deathRecord
);
// Optional: Send a message to the player about their death count // Setze die Death-Message (Paper/Adventure)
int deathCount = deathCounterManager.getDeathCount(player.getUniqueId()); event.deathMessage(message);
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()));
} }
} }