Greetings, I wrote a Tier System plugin which rewards the player on a tier. If I try to kill a player with an enchanted sword which has fire aspect enchant and the player got killed not by me but the fire the server crashes. Here is the error: Code: [15:40:49] [Server thread/CRITICAL]: Error: "Call to undefined method pocketmine\event\entity\EntityDamageEvent::getDamager()" (EXCEPTION) in "plugins/SeasonRendszer_v1.0.0/src/str0nix/SeasonRendszer/Main" at line 197 [15:40:49] [Server thread/CRITICAL]: #0 src/pocketmine/plugin/MethodEventExecutor(42): str0nix\SeasonRendszer\Main->tierRendszer(object pocketmine\event\player\PlayerDeathEvent) [15:40:49] [Server thread/CRITICAL]: #1 src/pocketmine/plugin/RegisteredListener(80): pocketmine\plugin\MethodEventExecutor->execute(object str0nix\SeasonRendszer\Main, object pocketmine\event\player\PlayerDeathEvent) [15:40:49] [Server thread/CRITICAL]: #2 src/pocketmine/event/Event(88): pocketmine\plugin\RegisteredListener->callEvent(object pocketmine\event\player\PlayerDeathEvent) [15:40:49] [Server thread/CRITICAL]: #3 src/pocketmine/Player(3782): pocketmine\event\Event->call() [15:40:49] [Server thread/CRITICAL]: #4 src/pocketmine/entity/Living(606): pocketmine\Player->onDeath() [15:40:49] [Server thread/CRITICAL]: #5 src/pocketmine/Player(3771): pocketmine\entity\Living->kill() [15:40:49] [Server thread/CRITICAL]: #6 src/pocketmine/entity/Entity(982): pocketmine\Player->kill() [15:40:49] [Server thread/CRITICAL]: #7 src/pocketmine/entity/Living(146): pocketmine\entity\Entity->setHealth(double 0)[15:40:49] [Server thread/CRITICAL]: #8 src/pocketmine/entity/Entity(939): pocketmine\entity\Living->setHealth(double 0)[15:40:49] [Server thread/CRITICAL]: #9 src/pocketmine/entity/Living(546): pocketmine\entity\Entity->attack(object pocketmine\event\entity\EntityDamageEvent) [15:40:49] [Server thread/CRITICAL]: #10 src/pocketmine/Player(3868): pocketmine\entity\Living->attack(object pocketmine\event\entity\EntityDamageEvent) [15:40:49] [Server thread/CRITICAL]: #11 src/pocketmine/entity/Entity(1113): pocketmine\Player->attack(object pocketmine\event\entity\EntityDamageEvent) [15:40:49] [Server thread/CRITICAL]: #12 src/pocketmine/entity/Entity(1096): pocketmine\entity\Entity->dealFireDamage() [15:40:49] [Server thread/CRITICAL]: #13 src/pocketmine/entity/Entity(1036): pocketmine\entity\Entity->doOnFireTick(integer 1) [15:40:49] [Server thread/CRITICAL]: #14 src/pocketmine/entity/Living(643): pocketmine\entity\Entity->entityBaseTick(integer 1) [15:40:49] [Server thread/CRITICAL]: #15 src/pocketmine/entity/Human(627): pocketmine\entity\Living->entityBaseTick(integer 1) [15:40:49] [Server thread/CRITICAL]: #16 src/pocketmine/Player(1780): pocketmine\entity\Human->entityBaseTick(integer 1)[15:40:49] [Server thread/CRITICAL]: #17 src/pocketmine/level/Level(852): pocketmine\Player->onUpdate(integer 1157) [15:40:49] [Server thread/CRITICAL]: #18 src/pocketmine/level/Level(785): pocketmine\level\Level->actuallyDoTick(integer 1157) [15:40:49] [Server thread/CRITICAL]: #19 src/pocketmine/Server(2267): pocketmine\level\Level->doTick(integer 1157) [15:40:49] [Server thread/CRITICAL]: #20 src/pocketmine/Server(2398): pocketmine\Server->checkTickUpdates(integer 1157, double 1597588849.0939) [15:40:49] [Server thread/CRITICAL]: #21 src/pocketmine/Server(2154): pocketmine\Server->tick() [15:40:49] [Server thread/CRITICAL]: #22 src/pocketmine/Server(1994): pocketmine\Server->tickProcessor() [15:40:49] [Server thread/CRITICAL]: #23 src/pocketmine/Server(1588): pocketmine\Server->start() [15:40:49] [Server thread/CRITICAL]: #24 src/pocketmine/PocketMine(273): pocketmine\Server->__construct(object BaseClassLoader, object pocketmine\utils\MainLogger, string[78] C:\Users\Varga Domonkos P..ter\Documents\Minecraft PE Szerverek\Teszt Szerver\, string[86] C:\Users\Varga Domonkos P..ter\Documents\Minecraft PE Szerverek\Teszt Szerver\pl) [15:40:49] [Server thread/CRITICAL]: #25 src/pocketmine/PocketMine(304): pocketmine\server() [15:40:49] [Server thread/CRITICAL]: #26 (11): require(string[133] phar://C:/Users/Varga Domonkos P..ter/Documents/Minecraft PE Szerverek/Teszt Sze) [15:40:49] [Server thread/EMERGENCY]: An unrecoverable error has occurred and the server has crashed. Creating a crash dump [15:40:49] [Server thread/EMERGENCY]: Please upload the "C:\Users\Varga Domonkos Péter\Documents\Minecraft PE Szerverek\Teszt Szerver\crashdumps/Sun_Aug_16-15.40.49-BST_2020.log" file to the Crash Archive and submit the link to the Bug Reporting page. Give as much info as you can. Here is the code of my plugin: PHP: if($player->getLastDamageCause() instanceof EntityDamageByEntityEvent){ if($player->getLastDamageCause()->getDamager() instanceof Player){ if($killdata === $elsotier){ $killer->sendMessage("§8[§b!§8]§7 Elérted a(z) elsõ Season szintet! Jutalmad:§b 200$"); $killer->sendTitle("§aSzint 1 feloldva!"); $killer->sendSubTitle("§7Jutalmad: §6200$"); $this->getServer()->getPluginManager()->getPlugin("BasicEconomy"); EconomyAPI::getInstance()->addMoney($killer, 200); $pc = $this->getServer()->getPluginManager()->getPlugin("PureChat"); $pc->setPrefix("1", $killer); }# the code that should be executed when the player reach the second tier if($killdata === $masodiktier){ $killer->sendMessage("§8[§b!§8]§7 Elérted a(z) második Season szintet! Jutalmad:§b 500$"); $killer->sendTitle("§aSzint 2 feloldva!"); $killer->sendSubTitle("§7Jutalmad: §6500$"); $this->getServer()->getPluginManager()->getPlugin("BasicEconomy"); EconomyAPI::getInstance()->addMoney($killer, 500); $pc = $this->getServer()->getPluginManager()->getPlugin("PureChat"); $pc->setPrefix("2", $killer); }
These are the variables: PHP: public function tierRendszer(PlayerDeathEvent $event){ $kdr = $this->getServer()->getPluginManager()->getPlugin("KDR"); $player = $event->getPlayer(); $killer = $player->getLastDamageCause()->getDamager(); $killdata = $kdr->getProvider()->getPlayerKillPoints($killer); $elsotier = 5; $masodiktier = 10;
what is $player->getLastDamageCause()->getDamager(); ?? if you want to get damager (when kill a player) you need to do: PHP: //event: EntityDamageByEntityEvent$player = $event->getEntity(); //return player$hp = $player->getHealth(); //getting player hp$maxDamageHit = $event->getFinalDamage(); //getting final dmgif ($hp - $maxDamageHit >= 0) {//do stuff} now you can use it.
Thank you, but if I put $player to the getPlayerKillPoints() the plugin can't get the KDR plugin's data values PHP: $killdata = $kdr->getProvider()->getPlayerKillPoints($player);
PHP: public function tierRendszer(PlayerDeathEvent $event){ if($event->getLastDamageCause() instanceof EntityDamageByEntityEvent){ $kdr = $this->getServer()->getPluginManager()->getPlugin("KDR"); $player = $event->getPlayer(); $killer = $player->getLastDamageCause()->getDamager(); $killdata = $kdr->getProvider()->getPlayerKillPoints($killer); $elsotier = 5; $masodiktier = 10;}