@Override
  public void collide(Entity inEntity) {
    if (this.getRemoteEntity() == null) {
      super.collide(inEntity);
      return;
    }

    if (((RemoteBaseEntity) this.m_remoteEntity).onCollide(inEntity.getBukkitEntity()))
      super.collide(inEntity);
  }
Example #2
0
 public boolean attack(Entity entity, DamageSource damageSource, float damage) {
   PetAttackEvent attackEvent = new PetAttackEvent(this.getPet(), entity.getBukkitEntity(), f);
   EchoPet.getPlugin().getServer().getPluginManager().callEvent(attackEvent);
   if (!attackEvent.isCancelled()) {
     if (entity instanceof EntityPlayer) {
       if (!(EchoPet.getConfig().getBoolean("canAttackPlayers", false))) {
         return false;
       }
     }
     return entity.damageEntity(damageSource, (float) attackEvent.getDamage());
   }
   return false;
 }
  @Override
  public void collide(Entity entity) {
    if (this.controllableEntity == null) {
      super.collide(entity);
      return;
    }

    if (!this.controllableEntity
        .getMind()
        .getAttribute(CollideAttribute.class)
        .call(this.controllableEntity, entity.getBukkitEntity())
        .isCancelled()) {
      super.collide(entity);
    }
  }
Example #4
0
  @Override
  public boolean damageEntity(DamageSource source, float damage) {
    if (invulnerable || noDamageTicks > 0) {
      return false;
    }

    DamageCause cause = null;
    org.bukkit.entity.Entity bEntity = null;
    if (source instanceof EntityDamageSource) {
      Entity damager = source.getEntity();
      cause = DamageCause.ENTITY_ATTACK;
      if (source instanceof EntityDamageSourceIndirect) {
        damager = ((EntityDamageSourceIndirect) source).getProximateDamageSource();
        if (damager.getBukkitEntity() instanceof ThrownPotion) {
          cause = DamageCause.MAGIC;
        } else if (damager.getBukkitEntity() instanceof Projectile) {
          cause = DamageCause.PROJECTILE;
        }
      }

      bEntity = damager.getBukkitEntity();
    } else if (source == DamageSource.FIRE) cause = DamageCause.FIRE;
    else if (source == DamageSource.STARVE) cause = DamageCause.STARVATION;
    else if (source == DamageSource.WITHER) cause = DamageCause.WITHER;
    else if (source == DamageSource.STUCK) cause = DamageCause.SUFFOCATION;
    else if (source == DamageSource.DROWN) cause = DamageCause.DROWNING;
    else if (source == DamageSource.BURN) cause = DamageCause.FIRE_TICK;
    else if (source == CraftEventFactory.MELTING) cause = DamageCause.MELTING;
    else if (source == CraftEventFactory.POISON) cause = DamageCause.POISON;
    else if (source == DamageSource.MAGIC) {
      cause = DamageCause.MAGIC;
    } else if (source == DamageSource.OUT_OF_WORLD) {
      cause = DamageCause.VOID;
    }

    if (cause != null) {
      NPCDamageEvent event = new NPCDamageEvent(npc, bEntity, cause, (double) damage);
      Bukkit.getPluginManager().callEvent(event);
      if (!event.isCancelled()) {
        return super.damageEntity(source, (float) event.getDamage());
      } else {
        return false;
      }
    }

    if (super.damageEntity(source, damage)) {
      if (bEntity != null) {
        Entity e = ((CraftEntity) bEntity).getHandle();
        double d0 = e.locX - this.locX;

        double d1;
        for (d1 = e.locZ - this.locZ;
            d0 * d0 + d1 * d1 < 0.0001D;
            d1 = (Math.random() - Math.random()) * 0.01D) {
          d0 = (Math.random() - Math.random()) * 0.01D;
        }

        a(e, damage, d0, d1);
      }

      return true;
    } else {
      return false;
    }
  }