PlayerDeathEvent gibt als Killer "null" aus, was soll ich tun?
Ich möchte in meinem PlayerDeathEvent abfragen, von welchem Mob man getötet wurde. Hier einmal der code
@EventHandler
public void onPlayerDeath(PlayerDeathEvent e) {
Player p = e.getEntity();
Entity killer = p.getKiller();
DamageCause cause = p.getLastDamageCause().getCause();
if(cause != null && cause.equals(DamageCause.BLOCK_EXPLOSION)){
e.setDeathMessage(p.getName+"wurde in die Luft gesprengt");
}
else if(cause != null && cause.equals(DamageCause.FALL)) {
e.setDeathMessage("§2"+p.getName()+"§2 hat Fallschaden genossen!");
}
else if(!(killer instanceof Player)){
p.sendMessage("Du wurdest von einem "+killer+" gekillt");
EntityType type = killer.getType();
p.sendMessage("type wurde festgestellt");
switch(type) {
case ZOMBIE:
e.setDeathMessage("§2"+p.getName()+"§2 wurde von einem Zombie getötet!");
break;
default:
p.sendMessage("Du wurdest von einem Mob gekillt");
break;
}
}
Und bei dem "Du wurdest von einem "+killer+" gekillt" wird immer "null" anstatt von "killer" ausgegeben Hoffe ihr könnt mir sagen, was ich falsch mache und wie ich es schaffe den Mob Typ abzufragen
2 Antworten
Es will einfach nicht
@EventHandler
public void onPlayerDeath(PlayerDeathEvent e) {
PLayer p = e.getEntity;
if(e.getEntity().getKiller() instanceof Zombie){
e.sendDeathMessage(p + "wurde von einem Zombie getötet")
}
}
getPlayer liefert nur einen Player, ich habe mir gedacht, dass ich das EntityDamagedEvent nutzen muss, um herrauszufinden was für eines es war, aber mir will nicht in den Kopf wie es gehen kann. bitte nochmals m Hilfe
Er gibt null aus da dein killer nur ein Entity Object ist wenn ich das richtig sehe, du musst schon den namen des Killers holen und nicht das Objekt.
Hoffe ich hab nichts überlesen.
@EventHandler
public void onDeath(PlayerDeathEvent e){
if(e.getEntity().getKiller() instanceof ZombieVillager){
}
}
Also das hier?
Momentan hab ich es so probiert:
Normale Todesnachricht als String holen, und gucken ob der Mobname (z.B Zombie) drinne vorhanden ist. Hat auch funktioniert, nur will ich wissen, wie das im richtigen Minecraft gemacht ist, also wodurch erkannt wird, was der Auslöser für den Tod des Spielers ist.
Kannst du mir sagen wie?