I was testing out my code to see if killing a player outputs a message to killer and the code isn't working. I registered the PlayerDeathEvent and etc. I am not sure why it isn't working... No errors popup or crashes happen as well. PHP: public function onDeath(PlayerDeathEvent $event) { $entity = $event->getEntity(); $cause = $entity->getLastDamageCause(); if($cause instanceof EntityByDamageEntityEvent) { $player = $cause->getDamager()->getPlayer(); $player->sendMessage("You killed...."); } }} I also tried this, it checks the killer is a instance of player, but the code doesn't work either. PHP: public function onDeath(PlayerDeathEvent $event) { $entity = $event->getEntity(); $cause = $entity->getLastDamageCause(); if($cause instanceof EntityByDamageEntityEvent) { $player = $cause->getDamager()->getPlayer(); if($player instanceof) { $player->sendMessage("You killed...."); } }}
Add 'Player' after Insteancedof PHP: public function onPlayerDeathEvent(PlayerDeathEvent $event) { $player = $event->getEntity(); $name = strtolower($player->getName()); if ($player instanceof Player) { $cause = $player->getLastDamageCause();
Try this. PHP: public function onDeath(PlayerDeathEvent $event) { $entity = $event->getEntity(); if($entity instanceof Player){ $cause = $entity->getLastDamageCause(); if($cause instanceof EntityDamageByEntityEvent){ $player = $cause->getDamager(); if($player instanceof Player){ $player->sendMessage("You killed...."); } } }}
Why $name? It is EntityDamageByEntityEvent. PHP: public funciton onDeath(PlayerDeathEvent $event){ $entity = $event->getEntity(); $cause = $entity->getLastDamageCause(); if($cause instanceof EntityDamageByEntityEvent){ $player = $cause->getDamager(); // getPlayer() is not needed! Where did you learn this? This is just wrong! if($player instanceof Player){ $player->sendMessage("You killed " . $entity->getName()); } }}