public function canTick()
{
if ($this->amplifier < 0) {
$this->amplifier = 0;
}
switch ($this->id) {
case Effect::POISON:
if (($interval = 25 >> $this->amplifier) > 0) {
return $this->duration % $interval === 0;
}
return true;
case Effect::WITHER:
if (($interval = 50 >> $this->amplifier) > 0) {
return $this->duration % $interval === 0;
}
return true;
case Effect::REGENERATION:
if (($interval = 40 >> $this->amplifier) > 0) {
return $this->duration % $interval === 0;
}
return true;
case Effect::HUNGER:
if ($this->amplifier < 0) {
// prevents hacking with amplifier -1
return false;
}
if (($interval = 20) > 0) {
return $this->duration % $interval === 0;
}
return true;
case Effect::HEALING:
case Effect::HARMING:
return true;
case Effect::SATURATION:
if (($interval = 20 >> $this->amplifier) > 0) {
return $this->duration % $interval === 0;
}
return true;
}
return false;
}