mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-05-12 16:59:44 +00:00
Simplify motion handling in ProjectileItem
This commit is contained in:
parent
6a26c0bebf
commit
3f135da704
@ -27,7 +27,6 @@ use pocketmine\entity\EntityFactory;
|
||||
use pocketmine\entity\Location;
|
||||
use pocketmine\entity\projectile\Egg as EggEntity;
|
||||
use pocketmine\entity\projectile\Throwable;
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\player\Player;
|
||||
|
||||
class Egg extends ProjectileItem{
|
||||
@ -36,10 +35,10 @@ class Egg extends ProjectileItem{
|
||||
return 16;
|
||||
}
|
||||
|
||||
protected function createEntity(Location $location, Vector3 $velocity, Player $thrower) : Throwable{
|
||||
protected function createEntity(Location $location, Player $thrower) : Throwable{
|
||||
return new EggEntity(
|
||||
$location->getWorldNonNull(),
|
||||
EntityFactory::createBaseNBT($location, $velocity, $location->yaw, $location->pitch),
|
||||
EntityFactory::createBaseNBT($location, null, $location->yaw, $location->pitch),
|
||||
$thrower
|
||||
);
|
||||
}
|
||||
|
@ -27,7 +27,6 @@ use pocketmine\entity\EntityFactory;
|
||||
use pocketmine\entity\Location;
|
||||
use pocketmine\entity\projectile\EnderPearl as EnderPearlEntity;
|
||||
use pocketmine\entity\projectile\Throwable;
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\player\Player;
|
||||
|
||||
class EnderPearl extends ProjectileItem{
|
||||
@ -36,10 +35,10 @@ class EnderPearl extends ProjectileItem{
|
||||
return 16;
|
||||
}
|
||||
|
||||
protected function createEntity(Location $location, Vector3 $velocity, Player $thrower) : Throwable{
|
||||
protected function createEntity(Location $location, Player $thrower) : Throwable{
|
||||
return new EnderPearlEntity(
|
||||
$location->getWorldNonNull(),
|
||||
EntityFactory::createBaseNBT($location, $velocity, $location->yaw, $location->pitch),
|
||||
EntityFactory::createBaseNBT($location, null, $location->yaw, $location->pitch),
|
||||
$thrower
|
||||
);
|
||||
}
|
||||
|
@ -27,15 +27,14 @@ use pocketmine\entity\EntityFactory;
|
||||
use pocketmine\entity\Location;
|
||||
use pocketmine\entity\projectile\ExperienceBottle as ExperienceBottleEntity;
|
||||
use pocketmine\entity\projectile\Throwable;
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\player\Player;
|
||||
|
||||
class ExperienceBottle extends ProjectileItem{
|
||||
|
||||
protected function createEntity(Location $location, Vector3 $velocity, Player $thrower) : Throwable{
|
||||
protected function createEntity(Location $location, Player $thrower) : Throwable{
|
||||
return new ExperienceBottleEntity(
|
||||
$location->getWorldNonNull(),
|
||||
EntityFactory::createBaseNBT($location, $velocity, $location->yaw, $location->pitch),
|
||||
EntityFactory::createBaseNBT($location, null, $location->yaw, $location->pitch),
|
||||
$thrower
|
||||
);
|
||||
}
|
||||
|
@ -34,13 +34,13 @@ abstract class ProjectileItem extends Item{
|
||||
|
||||
abstract public function getThrowForce() : float;
|
||||
|
||||
abstract protected function createEntity(Location $location, Vector3 $velocity, Player $thrower) : Throwable;
|
||||
abstract protected function createEntity(Location $location, Player $thrower) : Throwable;
|
||||
|
||||
public function onClickAir(Player $player, Vector3 $directionVector) : ItemUseResult{
|
||||
$location = $player->getLocation();
|
||||
|
||||
$projectile = $this->createEntity(Location::fromObject($player->getEyePos(), $player->getWorld(), $location->yaw, $location->pitch), $directionVector, $player);
|
||||
$projectile->setMotion($projectile->getMotion()->multiply($this->getThrowForce()));
|
||||
$projectile = $this->createEntity(Location::fromObject($player->getEyePos(), $player->getWorld(), $location->yaw, $location->pitch), $player);
|
||||
$projectile->setMotion($directionVector->multiply($this->getThrowForce()));
|
||||
|
||||
$projectileEv = new ProjectileLaunchEvent($projectile);
|
||||
$projectileEv->call();
|
||||
|
@ -27,7 +27,6 @@ use pocketmine\entity\EntityFactory;
|
||||
use pocketmine\entity\Location;
|
||||
use pocketmine\entity\projectile\Snowball as SnowballEntity;
|
||||
use pocketmine\entity\projectile\Throwable;
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\player\Player;
|
||||
|
||||
class Snowball extends ProjectileItem{
|
||||
@ -36,10 +35,10 @@ class Snowball extends ProjectileItem{
|
||||
return 16;
|
||||
}
|
||||
|
||||
protected function createEntity(Location $location, Vector3 $velocity, Player $thrower) : Throwable{
|
||||
protected function createEntity(Location $location, Player $thrower) : Throwable{
|
||||
return new SnowballEntity(
|
||||
$location->getWorldNonNull(),
|
||||
EntityFactory::createBaseNBT($location, $velocity, $location->yaw, $location->pitch),
|
||||
EntityFactory::createBaseNBT($location, null, $location->yaw, $location->pitch),
|
||||
$thrower
|
||||
);
|
||||
}
|
||||
|
@ -27,7 +27,6 @@ use pocketmine\entity\EntityFactory;
|
||||
use pocketmine\entity\Location;
|
||||
use pocketmine\entity\projectile\SplashPotion as SplashPotionEntity;
|
||||
use pocketmine\entity\projectile\Throwable;
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\player\Player;
|
||||
|
||||
class SplashPotion extends ProjectileItem{
|
||||
@ -36,10 +35,10 @@ class SplashPotion extends ProjectileItem{
|
||||
return 1;
|
||||
}
|
||||
|
||||
protected function createEntity(Location $location, Vector3 $velocity, Player $thrower) : Throwable{
|
||||
protected function createEntity(Location $location, Player $thrower) : Throwable{
|
||||
$projectile = new SplashPotionEntity(
|
||||
$location->getWorldNonNull(),
|
||||
EntityFactory::createBaseNBT($location, $velocity, $location->yaw, $location->pitch),
|
||||
EntityFactory::createBaseNBT($location, null, $location->yaw, $location->pitch),
|
||||
$thrower
|
||||
);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user