Frage von Ungedacht, 51

Warum funktioniert die instanceof Abfrage nicht?

Ich habe folgenden code:

if (e.getEntity().getKiller() instanceof Player) { Player k = e.getEntity().getKiller(); Main.main.kills.replace(k, Main.main.kills.get(k) + 1); }

... aber anscheinend ist der Killer immer null.

PS: Das ist Event ist das PlayerDeathEvent (Der spieler wird immer mit einem Schwert getötet)

Antwort
von TillGames, 25

Eigentlich ist alles richtig, frag vorher nochmal ab if(e.getEntity().getKiller() != null{}

Einfach um Fehlern vorzubeugen :)

und mach in die if abfrage: system.out.println("aw"); oder e.getEntity.getKiller().sendMessage("wawd");

Wenn nicht beim Spieler/Konsole ankommt, dann liegts doch an der instanceof anfrage, würde aber auf den ersten Blick sagen, die ist in Ordnung

Kommentar von PWolff ,

Laut Doku gibt der instanceof-Operator von Java immer false zurück, wenn der linke Operand null ist.

Kommentar von TillGames ,

Ok, wenn dies so ist...

Hast du die Ausgabe getestet?

Antwort
von magicced01, 31

probier mal p.getplayer.getkiller statt e.getentity

Kommentar von Fundefs ,

events in der bukkit api haben nur eine der beiden methoden ...

und dieses event wird #getPlayer() definetiv nicht haben, da anscheinend auch entitys außer einem player möglich sind.

Kommentar von magicced01 ,

Da es PlayerDeathEvent heißt triggert es logischerweise nur bei Spielern

Keine passende Antwort gefunden?

Fragen Sie die Community