1. The forums will be archived and moved to a read only mode in about 2 weeks (mid march).

Help

Discussion in 'Development' started by str0nix, Aug 16, 2020.

  1. str0nix

    str0nix Spider Jockey

    Messages:
    33
    GitHub:
    str0nixofficial
    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($killer200);
                    
    $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($killer500);
                    
    $pc $this->getServer()->getPluginManager()->getPlugin("PureChat");
                    
    $pc->setPrefix("2"$killer);
                }
     
  2. str0nix

    str0nix Spider Jockey

    Messages:
    33
    GitHub:
    str0nixofficial
    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;
     
  3. GodWeedZao

    GodWeedZao Zombie Pigman

    Messages:
    401
    GitHub:
    godweedzao
    read the error: EntityDamageEvent::getDamager undefined.
     
  4. GodWeedZao

    GodWeedZao Zombie Pigman

    Messages:
    401
    GitHub:
    godweedzao
    what is $player->getLastDamageCause()->getDamager(); ??o_O:facepalm:
    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 dmg

    if ($hp $maxDamageHit >= 0) {
    //do stuff
    }
    now you can use it.
     
  5. str0nix

    str0nix Spider Jockey

    Messages:
    33
    GitHub:
    str0nixofficial
    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);
     
  6. Kyd

    Kyd Zombie Pigman

    Messages:
    678
    GitHub:
    boi1216
    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;
    }
     
    GodWeedZao likes this.
  7. GodWeedZao

    GodWeedZao Zombie Pigman

    Messages:
    401
    GitHub:
    godweedzao
    yes, isaid check if $event: EntityDamageByEntityEvent
    (like this):
     
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.