setDuration(3600) ]; case self::LONG_NIGHT_VISION: return [ Effect::getEffect(Effect::NIGHT_VISION)->setDuration(9600) ]; case self::INVISIBILITY: return [ Effect::getEffect(Effect::INVISIBILITY)->setDuration(3600) ]; case self::LONG_INVISIBILITY: return [ Effect::getEffect(Effect::INVISIBILITY)->setDuration(9600) ]; case self::LEAPING: return [ Effect::getEffect(Effect::JUMP_BOOST)->setDuration(3600) ]; case self::LONG_LEAPING: return [ Effect::getEffect(Effect::JUMP_BOOST)->setDuration(9600) ]; case self::STRONG_LEAPING: return [ Effect::getEffect(Effect::JUMP_BOOST)->setDuration(1800)->setAmplifier(1) ]; case self::FIRE_RESISTANCE: return [ Effect::getEffect(Effect::FIRE_RESISTANCE)->setDuration(3600) ]; case self::LONG_FIRE_RESISTANCE: return [ Effect::getEffect(Effect::FIRE_RESISTANCE)->setDuration(9600) ]; case self::SWIFTNESS: return [ Effect::getEffect(Effect::SPEED)->setDuration(3600) ]; case self::LONG_SWIFTNESS: return [ Effect::getEffect(Effect::SPEED)->setDuration(9600) ]; case self::STRONG_SWIFTNESS: return [ Effect::getEffect(Effect::SPEED)->setDuration(1800)->setAmplifier(1) ]; case self::SLOWNESS: return [ Effect::getEffect(Effect::SLOWNESS)->setDuration(1800) ]; case self::LONG_SLOWNESS: return [ Effect::getEffect(Effect::SLOWNESS)->setDuration(4800) ]; case self::WATER_BREATHING: return [ Effect::getEffect(Effect::WATER_BREATHING)->setDuration(3600) ]; case self::LONG_WATER_BREATHING: return [ Effect::getEffect(Effect::WATER_BREATHING)->setDuration(9600) ]; case self::HEALING: return [ Effect::getEffect(Effect::INSTANT_HEALTH) ]; case self::STRONG_HEALING: return [ Effect::getEffect(Effect::INSTANT_HEALTH)->setAmplifier(1) ]; case self::HARMING: return [ Effect::getEffect(Effect::INSTANT_DAMAGE) ]; case self::STRONG_HARMING: return [ Effect::getEffect(Effect::INSTANT_DAMAGE)->setAmplifier(1) ]; case self::POISON: return [ Effect::getEffect(Effect::POISON)->setDuration(900) ]; case self::LONG_POISON: return [ Effect::getEffect(Effect::POISON)->setDuration(2400) ]; case self::STRONG_POISON: return [ Effect::getEffect(Effect::POISON)->setDuration(440)->setAmplifier(1) ]; case self::REGENERATION: return [ Effect::getEffect(Effect::REGENERATION)->setDuration(900) ]; case self::LONG_REGENERATION: return [ Effect::getEffect(Effect::REGENERATION)->setDuration(2400) ]; case self::STRONG_REGENERATION: return [ Effect::getEffect(Effect::REGENERATION)->setDuration(440)->setAmplifier(1) ]; case self::STRENGTH: return [ Effect::getEffect(Effect::STRENGTH)->setDuration(3600) ]; case self::LONG_STRENGTH: return [ Effect::getEffect(Effect::STRENGTH)->setDuration(9600) ]; case self::STRONG_STRENGTH: return [ Effect::getEffect(Effect::STRENGTH)->setDuration(1800)->setAmplifier(1) ]; case self::WEAKNESS: return [ Effect::getEffect(Effect::WEAKNESS)->setDuration(1800) ]; case self::LONG_WEAKNESS: return [ Effect::getEffect(Effect::WEAKNESS)->setDuration(4800) ]; case self::WITHER: return [ Effect::getEffect(Effect::WITHER)->setDuration(800)->setAmplifier(1) ]; } throw new \InvalidArgumentException("Unknown potion type $id"); } public function __construct(int $meta = 0){ parent::__construct(self::POTION, $meta, "Potion"); } public function getMaxStackSize() : int{ return 1; } public function onConsume(Living $consumer){ } public function getAdditionalEffects() : array{ //TODO: check CustomPotionEffects NBT return self::getPotionEffectsById($this->meta); } public function getResidue(){ return ItemFactory::get(Item::GLASS_BOTTLE); } }