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

Help Me getBlock

Discussion in 'Development' started by TheStepKla, Feb 20, 2020.

  1. TheStepKla

    TheStepKla Silverfish

    Messages:
    20
    my code
    Code:
    function move ($player,$eid,$damage,$type,$value = true)
        {
            //$typeは将来使うかもだから一応keep
            if (!isset($this->pos[$eid])) return false;
            $S = $this->pos[$eid];
            $F = $this->motion[$eid];
            if ($value) $F->y-=0.05;
            $this->pos[$eid] = new Vector3($S->x+$F->x, $S->y+$F->y, $S->z+$F->z);
            for ($K = 1; $K < 4; $K++) {
                $G = new Vector3($S->x+$F->x/$K, $S->y+$F->y/$K, $S->z+$F->z/$K);
                if ($player->level->getBlock($G)->isSolid()) {
                    $this->close($eid);
                    break;
                    return false;
                }
                foreach (Server::getInstance()->getOnlinePlayers() as $p) {
                    $x = $p->x;
                    $y = $p->y;
                    $z = $p->z;
                    $c = new Vector2($x, $z);
                    if ((new Vector2($S->x, $S->z))->distance($c) <= 1.2 && $S->y-$p->y <= 2.6 && $S->y-$p->y > 0) {
                        if($p->getName() != $player->getName()) {
                            $d = $this->getFinalDamage($p, $damage);
                            $ev = new EntityDamageByEntityEvent($player, $p, EntityDamageEvent::CAUSE_ENTITY_ATTACK, $d);
                            $p->attack($d, $ev);
                        }
                        return $this->close($eid);
                    }
                }
            }
            $this->getScheduler()->scheduleDelayedTask(new Callback([$this,"move"],[$player,$eid,$damage]),1);
        }
    [Server thread/CRITICAL]: Error: "Call to a member function getBlock() on null" (EXCEPTION) in "plugins/AGun/src/AGun/AGun" at line 1151

    mydump
    Code:
    THIS CRASH WAS CAUSED BY A PLUGIN
    BAD PLUGIN: test
    
    Code:
    [1142]     {
    [1143]         //$typeは将来使うかもだから一応keep
    [1144]         if (!isset($this->pos[$eid])) return false;
    [1145]         $S = $this->pos[$eid];
    [1146]         $F = $this->motion[$eid];
    [1147]         if ($value) $F->y-=0.05;
    [1148]         $this->pos[$eid] = new Vector3($S->x+$F->x, $S->y+$F->y, $S->z+$F->z);
    [1149]         for ($K = 1; $K < 4; $K++) {
    [1150]             $G = new Vector3($S->x+$F->x/$K, $S->y+$F->y/$K, $S->z+$F->z/$K);
    [1151]             if ($player->level->getBlock($G)->isSolid()) {
    [1152]                 $this->close($eid);
    [1153]                 break;
    [1154]                 return false;
    [1155]             }
    [1156]             foreach (Server::getInstance()->getOnlinePlayers() as $p) {
    [1157]                 $x = $p->x;
    [1158]                 $y = $p->y;
    [1159]                 $z = $p->z;
    [1160]                 $c = new Vector2($x, $z);
    [1161]                 if ((new Vector2($S->x, $S->z))->distance($c) <= 1.2 && $S->y-$p->y <= 2.6 && $S->y-$p->y > 0) {
    
    Backtrace:
    #0 (): AGun\AGun->move(object pocketmine\Player, integer 6084433, integer 6, object AGun\Callback)
    #1 plugins/AGun/src/AGun/AGun(1236): call_user_func_array(array[2], array[4])
    #2 src/pocketmine/scheduler/TaskHandler(134): AGun\Callback->onRun(integer 111)
    #3 src/pocketmine/scheduler/TaskScheduler(176): pocketmine\scheduler\TaskHandler->run(integer 111)
    #4 src/pocketmine/plugin/PluginManager(643): pocketmine\scheduler\TaskScheduler->mainThreadHeartbeat(integer 111)
    #5 src/pocketmine/Server(2379): pocketmine\plugin\PluginManager->tickSchedulers(integer 111)
    #6 src/pocketmine/Server(2142): pocketmine\Server->tick()
    #7 src/pocketmine/Server(1989): pocketmine\Server->tickProcessor()
    #8 src/pocketmine/Server(1583): pocketmine\Server->start()
    #9 src/pocketmine/PocketMine(274): pocketmine\Server->__construct(object BaseClassLoader, object pocketmine\utils\MainLogger, string[24] C:\PocketMine-MP-3.11.5\, string[32] C:\PocketMine-MP-3.11.5\plugins\)
    #10 src/pocketmine/PocketMine(297): pocketmine\server()
    #11 (11): require(string[79] phar://C:/PocketMine-MP-3.11.5/PocketMine-MP.phar/src/pocketmine/PocketMine.php)
    Help Me please:(
     
  2. GamakCZ

    GamakCZ Zombie Pigman

    Messages:
    598
    GitHub:
    GamakCZ
    $player->level is null

    In php still isn't possible to call null->level and expect that \pocketmine\level\Level will be returned. Maybe try use $player->getLevel() instead. However I don't know what type $player is, so I can't tell you more.
     
    Invy55 likes this.
  3. TheStepKla

    TheStepKla Silverfish

    Messages:
    20
  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.