Code: Server thread/CRITICAL Error: "Call to a member function getEffectLevel() on null" (EXCEPTION) in "plugins/1MMORPG/src/minijaham/MMORPG/EventListener" at line 108 30.10 17:10:32 [Server] Server thread/CRITICAL #0 src/pocketmine/plugin/MethodEventExecutor(42): minijaham\MMORPG\EventListener->shootBow(object pocketmine\event\entity\EntityShootBowEvent) 30.10 17:10:32 [Server] Server thread/CRITICAL #1 src/pocketmine/plugin/RegisteredListener(80): pocketmine\plugin\MethodEventExecutor->execute(object minijaham\MMORPG\EventListener, object pocketmine\event\entity\EntityShootBowEvent) Full code: PHP: public function shootBow(EntityShootBowEvent $event) { $player = $event->getEntity(); $effect = Effect::SLOWNESS; if ($player instanceof Player){ if ($player->getEffect($effect)->getEffectLevel() === 0) { $amount = 8; $anglesBetweenArrows = (45 / ($amount - 1)) * M_PI / 180; $pitch = ($player->pitch + 90) * M_PI / 180; $yaw = ($player->yaw + 90 - 45 / 2) * M_PI / 180; /** @var Projectile $projectile */ $projectile = $event->getProjectile(); for ($i = 0; $i < $amount; $i++) { $class = get_class($projectile); $entityType = substr($class, strrpos($class, "\\") + 1); $nbt = Entity::createBaseNBT($player->add(0, $player->getEyeHeight()), $player->getDirectionVector(), $player->yaw, $player->pitch); /** @var Projectile $newProjectile */ $newProjectile = Entity::createEntity($entityType, $player->getLevel(), $nbt, $player, $projectile); if ($newProjectile instanceof Arrow) $newProjectile->setPickupMode(Arrow::PICKUP_NONE); $newProjectile->spawnToAll(); ProjectileTracker::addProjectile($newProjectile, $item); $newDirection = new Vector3(sin($pitch) * cos($yaw + $anglesBetweenArrows * $i), cos($pitch), sin($pitch) * sin($yaw + $anglesBetweenArrows * $i)); $newProjectile->setMotion($newDirection->normalize()->multiply($projectile->getMotion()->multiply($event->getForce())->length())); if ($projectile->isOnFire()) $newProjectile->setOnFire($projectile->getFireTicks() / 20); } ProjectileTracker::removeProjectile($projectile); $projectile->close(); } } } Error line: PHP: if ($player->getEffect($effect)->getEffectLevel() === 0) {
The error means that there are no getEffectLevel() function on the Effect class... The function is only callable on EffectInstance class... But I don't know how to get the EffectInstance of an effect... You can check the pocketmine source code for more information...
$player->getEffect($effect) may return either EffectInstance (if the player has $effect) or null (if they don't have $effect). Assign it to a variable, check if it's null before proceeding further.