public function attack($damage, EntityDamageEvent $source) { if ($this->attackTime > 0 or $this->noDamageTicks > 0) { $lastCause = $this->getLastDamageCause(); if ($lastCause !== null and $lastCause->getDamage() >= $damage) { $source->setCancelled(); } } parent::attack($damage, $source); if ($source->isCancelled()) { return; } if ($source instanceof EntityDamageByEntityEvent) { $e = $source->getDamager(); if ($source instanceof EntityDamageByChildEntityEvent) { $e = $source->getChild(); } if ($e->isOnFire() > 0) { $this->setOnFire(2 * $this->server->getDifficulty()); } $deltaX = $this->x - $e->x; $deltaZ = $this->z - $e->z; $this->knockBack($e, $damage, $deltaX, $deltaZ, $source->getKnockBack()); } $pk = new EntityEventPacket(); $pk->eid = $this->getId(); $pk->event = $this->getHealth() <= 0 ? EntityEventPacket::DEATH_ANIMATION : EntityEventPacket::HURT_ANIMATION; // Ouch! Server::broadcastPacket($this->hasSpawned, $pk); $this->attackTime = 10; //0.5 seconds cooldown }
public function onEntityCollide(Entity $entity) { $entity->setOnFire(15); $ev = new EntityDamageEvent($entity, EntityDamageEvent::CAUSE_LAVA, 4); Server::getInstance()->getPluginManager()->callEvent($ev); if (!$ev->isCancelled()) { $entity->attack($ev->getFinalDamage(), $ev); } $entity->attack(4, EntityDamageEvent::CAUSE_LAVA); }
public function onEntityCollide(Entity $entity) { $ev = new EntityDamageByBlockEvent($this, $entity, EntityDamageEvent::CAUSE_CONTACT, 1); if ($entity->attack($ev->getFinalDamage(), $ev) === true) { $ev->useArmors(); } }
public function attack($damage, EntityDamageEvent $source) { if ($this->attackTime > 0 or $this->noDamageTicks > 0) { $lastCause = $this->getLastDamageCause(); if ($lastCause !== null and $lastCause->getDamage() >= $damage) { $source->setCancelled(); } } parent::attack($damage, $source); if ($source->isCancelled()) { return; } if ($source instanceof EntityDamageByEntityEvent) { $e = $source->getDamager(); $deltaX = $this->x - $e->x; $deltaZ = $this->z - $e->z; $yaw = atan2($deltaX, $deltaZ); $this->knockBack($e, $damage, sin($yaw), cos($yaw), $source->getKnockBack()); } $pk = new EntityEventPacket(); $pk->eid = $this->getId(); $pk->event = $this->getHealth() <= 0 ? 3 : 2; //Ouch! Server::broadcastPacket($this->hasSpawned, $pk->setChannel(Network::CHANNEL_WORLD_EVENTS)); $this->attackTime = 10; //0.5 seconds cooldown }
public function onEntityCollide(Entity $entity) { $ev = new EntityDamageByBlockEvent($this, $entity, EntityDamageEvent::CAUSE_FIRE, 1); $entity->attack($ev->getFinalDamage(), $ev); $ev = new EntityCombustByBlockEvent($this, $entity, 8); Server::getInstance()->getPluginManager()->callEvent($ev); if (!$ev->isCancelled()) { $entity->setOnFire($ev->getDuration()); } }
public function attack($damage, EntityDamageEvent $source) { parent::attack($damage, $source); if (!$source->isCancelled()) { $pk = new EntityEventPacket(); $pk->eid = $this->id; $pk->event = EntityEventPacket::HURT_ANIMATION; foreach ($this->getLevel()->getPlayers() as $player) { $player->dataPacket($pk); } } }
public function onEntityCollide(Entity $entity) { $entity->fallDistance *= 0.5; $ev = new EntityDamageByBlockEvent($this, $entity, EntityDamageEvent::CAUSE_LAVA, 4); $entity->attack($ev->getFinalDamage(), $ev); $ev = new EntityCombustByBlockEvent($this, $entity, 15); Server::getInstance()->getPluginManager()->callEvent($ev); if (!$ev->isCancelled()) { $entity->setOnFire($ev->getDuration()); } if ($entity instanceof Player) { $entity->onGround = true; } }
public function onEntityCollide(Entity $entity) { $entity->fallDistance *= 0.5; if (!$entity->hasEffect(Effect::FIRE_RESISTANCE)) { $ev = new EntityDamageByBlockEvent($this, $entity, EntityDamageEvent::CAUSE_LAVA, 4); $entity->attack($ev->getFinalDamage(), $ev); } $ev = new EntityCombustByBlockEvent($this, $entity, 15); Server::getInstance()->getPluginManager()->callEvent($ev); if (!$ev->isCancelled()) { $entity->setOnFire($ev->getDuration()); } $entity->resetFallDistance(); }
public function onEntityCollide(Entity $entity) { $ProtectL = 0; if (!$entity->hasEffect(Effect::FIRE_RESISTANCE)) { $ev = new EntityDamageByBlockEvent($this, $entity, EntityDamageEvent::CAUSE_FIRE, 1); if ($entity->attack($ev->getFinalDamage(), $ev) === true) { $ev->useArmors(); } $ProtectL = $ev->getMaxEnchantLevel(); } $ev = new EntityCombustByBlockEvent($this, $entity, 8, $ProtectL); if ($entity instanceof Arrow) { $ev->setCancelled(); } Server::getInstance()->getPluginManager()->callEvent($ev); if (!$ev->isCancelled()) { $entity->setOnFire($ev->getDuration()); } }
public function attack($damage, EntityDamageEvent $source) { if ($this->attackTime > 0 or $this->noDamageTicks > 0) { $lastCause = $this->getLastDamageCause(); if ($lastCause !== null and $lastCause->getDamage() >= $damage) { $source->setCancelled(); } } parent::attack($damage, $source); if ($source->isCancelled()) { return; } if ($source instanceof EntityDamageByEntityEvent) { $e = $source->getDamager(); if ($source instanceof EntityDamageByChildEntityEvent) { $e = $source->getChild(); } if ($e->isOnFire() > 0) { $this->setOnFire(2 * $this->server->getDifficulty()); } } $pk = new EntityEventPacket(); $pk->eid = $this->getId(); $pk->event = $this->getHealth() <= 0 ? EntityEventPacket::DEATH_ANIMATION : EntityEventPacket::HURT_ANIMATION; // Ouch! Server::broadcastPacket($this->hasSpawned, $pk); // TESTING for ($i = 0; $i < 400; $i++) { $pk = new AnimatePacket(); $pk->eid = $this->getId(); $pk->action = $i; Server::broadcastPacket($this->hasSpawned, $pk); } // END TESTING $this->attackTime = 0; // 0.5 seconds cooldown }
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) { $entity->subtractFood(1); } break; case Effect::SPEED: if ($entity instanceof Player) { $entity->setPlayerSpeed(0.1 + ($this->amplifier + 1) * 0.01); } break; case Effect::SLOWNESS: if ($entity instanceof Player) { $entity->setPlayerSpeed(0.1 - ($this->amplifier + 1) * 0.01); } break; } }
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->getFood() > 0) { if ($entity->getFood() - 0.025 * ($this->getAmplifier() + 1) > 0) { $entity->setFood($entity->getFood() - 0.025 * ($this->getAmplifier() + 1)); } else { $entity->setFood(0); } } } break; case Effect::SATURATION: if ($entity instanceof Player) { if ($entity->getFood() < 20) { if ($entity->getFood() + 1 * ($this->getAmplifier() + 1) > 20) { $entity->setFood(20); } else { $entity->setFood($entity->getFood() + 1 * ($this->getAmplifier() + 1)); } } } break; } }
public function attack($damage, EntityDamageEvent $source) { if ($this->attacker instanceof Entity) { return; } if ($this->attackTime > 0 or $this->noDamageTicks > 0) { $lastCause = $this->getLastDamageCause(); if ($lastCause !== null and $lastCause->getDamage() >= $damage) { $source->setCancelled(); } } Entity::attack($damage, $source); if ($source->isCancelled()) { return; } $this->attackTime = 10; if ($source instanceof EntityDamageByEntityEvent) { $this->stayTime = 0; $this->stayVec = null; $this->attackTime = 10; $this->attacker = $source->getDamager(); if ($this instanceof PigZombie) { $this->setAngry(1000); } } $pk = new EntityEventPacket(); $pk->eid = $this->getId(); $pk->event = $this->isAlive() ? 2 : 3; Server::broadcastPacket($this->hasSpawned, $pk->setChannel(Network::CHANNEL_WORLD_EVENTS)); }
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; } }
public function attack($damage, EntityDamageEvent $source) { // if($this->atkTime > 0) return; if ($this->attackTime > 0 or $this->noDamageTicks > 0) { $lastCause = $this->getLastDamageCause(); if ($lastCause !== null and $lastCause->getDamage() >= $damage) { $source->setCancelled(); } } Entity::attack($damage, $source); if ($source->isCancelled()) { return; } if ($source instanceof EntityDamageByEntityEvent) { $this->atkTime = 16; $this->stayTime = 0; $this->attacker = $source->getDamager(); if ($this instanceof PigZombie) { $this->setAngry(1000); } if ($this instanceof Wolf) { $this->setAngry(1000); } if ($this instanceof Ocelot) { $this->setAngry(1000); } } $pk = new EntityEventPacket(); $pk->eid = $this->getId(); $pk->event = $this->isAlive() ? 2 : 3; Server::broadcastPacket($this->hasSpawned, $pk); }
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 Human) { $entity->exhaust(0.5 * $this->amplifier, PlayerExhaustEvent::CAUSE_POTION); } } }
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; } }
public function attack($damage, EntityDamageEvent $source) { if ($source->getCause() === EntityDamageEvent::CAUSE_VOID or $source->getCause() === EntityDamageEvent::CAUSE_FIRE_TICK or $source->getCause() === EntityDamageEvent::CAUSE_ENTITY_EXPLOSION or $source->getCause() === EntityDamageEvent::CAUSE_BLOCK_EXPLOSION) { parent::attack($damage, $source); } }
public function attack($damage, EntityDamageEvent $source) { if ($source->getCause() === EntityDamageEvent::CAUSE_VOID or ($source->getCause() === EntityDamageEvent::CAUSE_FIRE_TICK or $source->getCause() === EntityDamageEvent::CAUSE_ENTITY_EXPLOSION or $source->getCause() === EntityDamageEvent::CAUSE_BLOCK_EXPLOSION) and $this->item->getId() !== ItemItem::NETHER_STAR) { parent::attack($damage, $source); } }
public function attack($damage, EntityDamageEvent $source) { if ($source->getCause() === EntityDamageEvent::CAUSE_VOID) { parent::attack($damage, $source); } }
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 Human) { $entity->exhaust(0.5 * $this->amplifier, PlayerExhaustEvent::CAUSE_POTION); } 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) { $entity->addFood(1); } break; } }