SplashPotion: Require potionId in constructor

This commit is contained in:
Dylan K. Taylor 2021-06-19 19:47:44 +01:00
parent fc70b625b3
commit 6fea09ded4
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D
3 changed files with 10 additions and 9 deletions

View File

@ -41,6 +41,7 @@ use pocketmine\entity\projectile\ExperienceBottle;
use pocketmine\entity\projectile\Snowball; use pocketmine\entity\projectile\Snowball;
use pocketmine\entity\projectile\SplashPotion; use pocketmine\entity\projectile\SplashPotion;
use pocketmine\item\Item; use pocketmine\item\Item;
use pocketmine\item\Potion;
use pocketmine\math\Facing; use pocketmine\math\Facing;
use pocketmine\math\Vector3; use pocketmine\math\Vector3;
use pocketmine\nbt\NbtDataException; use pocketmine\nbt\NbtDataException;
@ -147,7 +148,8 @@ final class EntityFactory{
}, ['Snowball', 'minecraft:snowball'], EntityLegacyIds::SNOWBALL); }, ['Snowball', 'minecraft:snowball'], EntityLegacyIds::SNOWBALL);
$this->register(SplashPotion::class, function(World $world, CompoundTag $nbt) : SplashPotion{ $this->register(SplashPotion::class, function(World $world, CompoundTag $nbt) : SplashPotion{
return new SplashPotion(EntityDataHelper::parseLocation($nbt, $world), null, $nbt); $potionType = $nbt->getShort("PotionId", Potion::WATER);
return new SplashPotion(EntityDataHelper::parseLocation($nbt, $world), null, $potionType, $nbt);
}, ['ThrownPotion', 'minecraft:potion', 'thrownpotion'], EntityLegacyIds::SPLASH_POTION); }, ['ThrownPotion', 'minecraft:potion', 'thrownpotion'], EntityLegacyIds::SPLASH_POTION);
$this->register(Squid::class, function(World $world, CompoundTag $nbt) : Squid{ $this->register(Squid::class, function(World $world, CompoundTag $nbt) : Squid{

View File

@ -28,7 +28,9 @@ use pocketmine\block\VanillaBlocks;
use pocketmine\color\Color; use pocketmine\color\Color;
use pocketmine\entity\effect\EffectInstance; use pocketmine\entity\effect\EffectInstance;
use pocketmine\entity\effect\InstantEffect; use pocketmine\entity\effect\InstantEffect;
use pocketmine\entity\Entity;
use pocketmine\entity\Living; use pocketmine\entity\Living;
use pocketmine\entity\Location;
use pocketmine\event\entity\ProjectileHitBlockEvent; use pocketmine\event\entity\ProjectileHitBlockEvent;
use pocketmine\event\entity\ProjectileHitEntityEvent; use pocketmine\event\entity\ProjectileHitEntityEvent;
use pocketmine\event\entity\ProjectileHitEvent; use pocketmine\event\entity\ProjectileHitEvent;
@ -54,12 +56,11 @@ class SplashPotion extends Throwable{
/** @var bool */ /** @var bool */
protected $linger = false; protected $linger = false;
/** @var int */ /** @var int */
protected $potionId = Potion::WATER; protected $potionId;
protected function initEntity(CompoundTag $nbt) : void{ public function __construct(Location $location, ?Entity $shootingEntity, int $potionId, ?CompoundTag $nbt = null){
parent::initEntity($nbt); $this->potionId = $potionId;
parent::__construct($location, $shootingEntity, $nbt);
$this->setPotionId($nbt->getShort("PotionId", Potion::WATER));
} }
public function saveNBT() : CompoundTag{ public function saveNBT() : CompoundTag{

View File

@ -43,9 +43,7 @@ class SplashPotion extends ProjectileItem{
} }
protected function createEntity(Location $location, Player $thrower) : Throwable{ protected function createEntity(Location $location, Player $thrower) : Throwable{
$projectile = new SplashPotionEntity($location, $thrower); return new SplashPotionEntity($location, $thrower, $this->potionId);
$projectile->setPotionId($this->potionId);
return $projectile;
} }
public function getThrowForce() : float{ public function getThrowForce() : float{