(Splash)Potion: do not assume that META == potion ID

it probably will be, but meta might not be accessible anymore soon.
This commit is contained in:
Dylan K. Taylor 2020-06-20 09:31:06 +01:00
parent d62d0762ff
commit 62e7b0e2b1
3 changed files with 20 additions and 4 deletions

View File

@ -252,8 +252,8 @@ class ItemFactory{
}
foreach(Potion::ALL as $type){
$this->register(new Potion(ItemIds::POTION, $type, "Potion"));
$this->register(new SplashPotion(ItemIds::SPLASH_POTION, $type, "Splash Potion"));
$this->register(new Potion(ItemIds::POTION, $type, "Potion", $type));
$this->register(new SplashPotion(ItemIds::SPLASH_POTION, $type, "Splash Potion", $type));
}
foreach(TreeType::getAll() as $type){

View File

@ -253,6 +253,14 @@ class Potion extends Item implements Consumable{
return [];
}
/** @var int */
private $potionId;
public function __construct(int $id, int $variant, string $name, int $potionId){
parent::__construct($id, $variant, $name);
$this->potionId = $potionId;
}
public function getMaxStackSize() : int{
return 1;
}
@ -263,7 +271,7 @@ class Potion extends Item implements Consumable{
public function getAdditionalEffects() : array{
//TODO: check CustomPotionEffects NBT
return self::getPotionEffectsById($this->meta);
return self::getPotionEffectsById($this->potionId);
}
public function getResidue(){

View File

@ -30,13 +30,21 @@ use pocketmine\player\Player;
class SplashPotion extends ProjectileItem{
/** @var int */
private $potionId;
public function __construct(int $id, int $variant, string $name, int $potionId){
parent::__construct($id, $variant, $name);
$this->potionId = $potionId;
}
public function getMaxStackSize() : int{
return 1;
}
protected function createEntity(Location $location, Player $thrower) : Throwable{
$projectile = new SplashPotionEntity($location, $thrower);
$projectile->setPotionId($this->meta);
$projectile->setPotionId($this->potionId);
return $projectile;
}