public function applyEffect(Entity $entity) { switch ($this->id) { case Effect::POISON: if ($entity->getHealth() > 1) { $ev = new EntityDamageEvent($entity, EntityDamageEvent::CAUSE_MAGIC, 1); $entity->attack($ev->getFinalDamage(), $ev); } break; case Effect::WITHER: $ev = new EntityDamageEvent($entity, EntityDamageEvent::CAUSE_MAGIC, 1); $entity->attack($ev->getFinalDamage(), $ev); break; case Effect::REGENERATION: if ($entity->getHealth() < $entity->getMaxHealth()) { $ev = new EntityRegainHealthEvent($entity, 1, EntityRegainHealthEvent::CAUSE_MAGIC); $entity->heal($ev->getAmount(), $ev); } break; case Effect::HUNGER: if ($entity instanceof Player) { if ($entity->getServer()->foodEnabled) { $entity->setFood($entity->getFood() - 1); } } break; case Effect::HEALING: $level = $this->amplifier + 1; if ($entity->getHealth() + 4 * $level <= $entity->getMaxHealth()) { $ev = new EntityRegainHealthEvent($entity, 4 * $level, EntityRegainHealthEvent::CAUSE_MAGIC); $entity->heal($ev->getAmount(), $ev); } else { $ev = new EntityRegainHealthEvent($entity, $entity->getMaxHealth() - $entity->getHealth(), EntityRegainHealthEvent::CAUSE_MAGIC); $entity->heal($ev->getAmount(), $ev); } break; case Effect::HARMING: $level = $this->amplifier + 1; if ($entity->getHealth() - 6 * $level >= 0) { $ev = new EntityDamageEvent($entity, EntityDamageEvent::CAUSE_MAGIC, 6 * $level); $entity->attack($ev->getFinalDamage(), $ev); } else { $ev = new EntityDamageEvent($entity, EntityDamageEvent::CAUSE_MAGIC, $entity->getHealth()); $entity->attack($ev->getFinalDamage(), $ev); } break; case Effect::SATURATION: if ($entity instanceof Player) { if ($entity->getServer()->foodEnabled) { $entity->setFood($entity->getFood() + 1); } } break; case Effect::SPEED: if ($entity instanceof Player) { $entity->setMovementSpeed(0.1 + ($this->amplifier + 1) * 0.01); } break; case Effect::SLOWNESS: if ($entity instanceof Player) { $entity->setMovementSpeed(0.1 - ($this->amplifier + 1) * 0.01); } break; } }