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.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()));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user