add(0, $player->getEyeHeight(), 0), $directionVector, $player->yaw, $player->pitch); $this->addExtraTags($nbt); $class = $this->getProjectileEntityClass(); Utils::testValidInstance($class, Throwable::class); /** @var Throwable $projectile */ $projectile = EntityFactory::create($class, $player->getLevel(), $nbt, $player); $projectile->setMotion($projectile->getMotion()->multiply($this->getThrowForce())); $projectileEv = new ProjectileLaunchEvent($projectile); $projectileEv->call(); if($projectileEv->isCancelled()){ $projectile->flagForDespawn(); return ItemUseResult::FAIL(); } $projectile->spawnToAll(); $player->getLevel()->broadcastLevelSoundEvent($player, LevelSoundEventPacket::SOUND_THROW, 0, EntityIds::PLAYER); $this->pop(); return ItemUseResult::SUCCESS(); } }