Update death message
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user