本文整理汇总了PHP中pocketmine\entity\Entity::attack方法的典型用法代码示例。如果您正苦于以下问题:PHP Entity::attack方法的具体用法?PHP Entity::attack怎么用?PHP Entity::attack使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pocketmine\entity\Entity
的用法示例。
在下文中一共展示了Entity::attack方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: onEntityCollide
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);
}
示例2: attack
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
}
示例3: onEntityCollide
public function onEntityCollide(Entity $entity)
{
$ev = new EntityDamageByBlockEvent($this, $entity, EntityDamageEvent::CAUSE_CONTACT, 1);
if ($entity->attack($ev->getFinalDamage(), $ev) === true) {
$ev->useArmors();
}
}
示例4: attack
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
}
示例5: onEntityCollide
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());
}
}
示例6: attack
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);
}
}
}
示例7: onEntityCollide
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;
}
}
示例8: onEntityCollide
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();
}
示例9: onEntityCollide
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());
}
}
示例10: attack
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
}
示例11: applyEffect
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;
}
}
示例12: applyEffect
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;
}
}
示例13: attack
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));
}
示例14: applyEffect
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;
}
}
示例15: attack
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);
}