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\SplashPotion;
use pocketmine\item\Item;
use pocketmine\item\Potion;
use pocketmine\math\Facing;
use pocketmine\math\Vector3;
use pocketmine\nbt\NbtDataException;
@ -147,7 +148,8 @@ final class EntityFactory{
}, ['Snowball', 'minecraft:snowball'], EntityLegacyIds::SNOWBALL);
$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);
$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\entity\effect\EffectInstance;
use pocketmine\entity\effect\InstantEffect;
use pocketmine\entity\Entity;
use pocketmine\entity\Living;
use pocketmine\entity\Location;
use pocketmine\event\entity\ProjectileHitBlockEvent;
use pocketmine\event\entity\ProjectileHitEntityEvent;
use pocketmine\event\entity\ProjectileHitEvent;
@ -54,12 +56,11 @@ class SplashPotion extends Throwable{
/** @var bool */
protected $linger = false;
/** @var int */
protected $potionId = Potion::WATER;
protected $potionId;
protected function initEntity(CompoundTag $nbt) : void{
parent::initEntity($nbt);
$this->setPotionId($nbt->getShort("PotionId", Potion::WATER));
public function __construct(Location $location, ?Entity $shootingEntity, int $potionId, ?CompoundTag $nbt = null){
$this->potionId = $potionId;
parent::__construct($location, $shootingEntity, $nbt);
}
public function saveNBT() : CompoundTag{

View File

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