示例#1
0
文件: Mob.java 项目: spenk/CanaryMod
  /**
   * Spawns this mob with a rider
   *
   * @param rider
   */
  public void spawn(LivingEntity rider) {
    OWorld world = entity.bi; // etc.getMCServer().a(0);

    entity.c(getX() + 0.5d, getY(), getZ() + 0.5d, getRotation(), 0f);
    world.b(entity);

    if (rider != null) {
      OEntityLiving mob2 = rider.getEntity();

      mob2.c(getX(), getY(), getZ(), getRotation(), 0f);
      world.b(mob2);
      mob2.b(entity);
    }
  }
示例#2
0
  public void u() {
    if (am > 0) {
      double d1 = aL + (an - aL) / am;
      double d2 = aM + (ao - aM) / am;
      double d3 = aN + (ap - aN) / am;

      double d4 = aq - aR;
      while (d4 < -180.0D) d4 += 360.0D;
      while (d4 >= 180.0D) d4 -= 360.0D;
      aR = (float) (aR + d4 / am);
      aS = (float) (aS + (ar - aS) / am);

      am -= 1;
      a(d1, d2, d3);
      c(aR, aS);
    }

    if (A()) {
      ay = false;
      av = 0.0F;
      aw = 0.0F;
      ax = 0.0F;
    } else if (!U) c_();

    boolean bool1 = Z();
    boolean bool2 = aa();

    if (ay)
      if (bool1) aP += 0.04D;
      else if (bool2) aP += 0.04D;
      else if (aW) L();

    av *= 0.98F;
    aw *= 0.98F;
    ax *= 0.9F;
    a(av, aw);

    List localList = aH.b(this, aV.b(0.2D, 0.0D, 0.2D));
    if ((localList != null) && (localList.size() > 0))
      for (int i = 0; i < localList.size(); i++) {
        OEntity localOEntity = (OEntity) localList.get(i);
        if (!localOEntity.d_()) continue;
        localOEntity.h(this);
      }
  }
  public void r() {
    if (al > 0) {
      double d1 = aK + (am - aK) / al;
      double d2 = aL + (an - aL) / al;
      double d3 = aM + (ao - aM) / al;

      double d4 = ap - aQ;
      while (d4 < -180.0D) d4 += 360.0D;
      while (d4 >= 180.0D) d4 -= 360.0D;
      aQ = (float) (aQ + d4 / al);
      aR = (float) (aR + (aq - aR) / al);

      al -= 1;
      a(d1, d2, d3);
      c(aQ, aR);
    }

    if (p_()) {
      ax = false;
      au = 0.0F;
      av = 0.0F;
      aw = 0.0F;
    } else if (!T) c_();

    boolean bool1 = g_();
    boolean bool2 = V();

    if (ax)
      if (bool1) aO += 0.03999999910593033D;
      else if (bool2) aO += 0.03999999910593033D;
      else if (aV) I();

    au *= 0.98F;
    av *= 0.98F;
    aw *= 0.9F;
    a(au, av);

    List localList = aG.b(this, aU.b(0.2000000029802322D, 0.0D, 0.2000000029802322D));
    if ((localList != null) && (localList.size() > 0))
      for (int i = 0; i < localList.size(); i++) {
        OEntity localOEntity = (OEntity) localList.get(i);
        if (!localOEntity.e_()) continue;
        localOEntity.h(this);
      }
  }
示例#4
0
  public void a(float paramFloat1, float paramFloat2) {
    if (Z()) {
      double d1 = aM;
      a(paramFloat1, paramFloat2, 0.02F);
      c(aO, aP, aQ);

      aO *= 0.8D;
      aP *= 0.8D;
      aQ *= 0.8D;
      aP -= 0.02D;

      if ((aX) && (b(aO, aP + 0.6D - aM + d1, aQ))) aP = 0.3D;
    } else if (aa()) {
      double d1 = aM;
      a(paramFloat1, paramFloat2, 0.02F);
      c(aO, aP, aQ);
      aO *= 0.5D;
      aP *= 0.5D;
      aQ *= 0.5D;
      aP -= 0.02D;

      if ((aX) && (b(aO, aP + 0.6000000238418579D - aM + d1, aQ))) aP = 0.300000011920929D;
    } else {
      float f1 = 0.91F;
      if (aW) {
        f1 = 0.546F;
        int i = aH.a(OMathHelper.b(aL), OMathHelper.b(aV.b) - 1, OMathHelper.b(aN));
        if (i > 0) f1 = OBlock.m[i].bz * 0.91F;
      }

      float f2 = 0.1627714F / (f1 * f1 * f1);
      a(paramFloat1, paramFloat2, aW ? 0.1F * f2 : 0.02F);

      f1 = 0.91F;
      if (aW) {
        f1 = 0.546F;
        int j = aH.a(OMathHelper.b(aL), OMathHelper.b(aV.b) - 1, OMathHelper.b(aN));
        if (j > 0) f1 = OBlock.m[j].bz * 0.91F;
      }

      if (p()) {
        bj = 0.0F;
        if (aP < -0.15D) aP = -0.15D;
        if ((ae()) && (aP < 0.0D)) aP = 0.0D;
      }

      c(aO, aP, aQ);

      if ((aX) && (p())) aP = 0.2D;

      aP -= 0.08D;
      aP *= 0.98D;
      aO *= f1;
      aQ *= f1;
    }
    aj = ak;
    double d1 = aL - aI;
    double d2 = aN - aK;
    float f3 = OMathHelper.a(d1 * d1 + d2 * d2) * 4.0F;
    if (f3 > 1.0F) f3 = 1.0F;
    ak += (f3 - ak) * 0.4F;
    al += ak;
  }
示例#5
0
  @Override
  public boolean a(OEntity paramOEntity, int paramInt) {
    if (aH.v) return false;
    au = 0;
    if (X <= 0) return false;

    ak = 1.5F;

    // CanaryMod damage entities.
    LivingEntity attacker =
        (paramOEntity != null && paramOEntity instanceof OEntityLiving)
            ? new LivingEntity((OEntityLiving) paramOEntity)
            : null;

    // CanaryMod attack by entity, but it might not do damage!
    if (attacker != null
        && (Boolean) manager.callHook(PluginLoader.Hook.ATTACK, attacker, entity, paramInt))
      return false;

    int i = 1;
    if (bx > D / 2.0F) {
      if (paramInt <= at) return false;
      // CanaryMod: partial damage
      if (attacker != null
          && (Boolean)
              manager.callHook(
                  PluginLoader.Hook.DAMAGE,
                  PluginLoader.DamageType.ENTITY,
                  attacker,
                  entity,
                  paramInt - at)) return false;

      c(paramInt - at);
      at = paramInt;
      i = 0;
    } else {
      // CanaryMod: full damage
      if (attacker != null
          && (Boolean)
              manager.callHook(
                  PluginLoader.Hook.DAMAGE,
                  PluginLoader.DamageType.ENTITY,
                  attacker,
                  entity,
                  paramInt)) return false;

      at = paramInt;
      Y = X;
      bx = D;
      c(paramInt);
      Z = (aa = 10);
    }

    ab = 0.0F;

    if (i != 0) {
      // CanaryMod: forced cast to send 'damage animation'.
      aH.a(this, (byte) 2);
      ab();
      if (paramOEntity != null) {
        double d1 = paramOEntity.aL - aL;
        double d2 = paramOEntity.aN - aN;
        while (d1 * d1 + d2 * d2 < 0.0001D) {
          d1 = (Math.random() - Math.random()) * 0.01D;
          d2 = (Math.random() - Math.random()) * 0.01D;
        }
        ab = ((float) (Math.atan2(d2, d1) * 180.0D / 3.141592741012573D) - aR);
        a(paramOEntity, paramInt, d1, d2);
      } else ab = ((int) (Math.random() * 2.0D) * 180);
    }

    if (X <= 0) {
      if (i != 0) aH.a(this, i(), k(), (br.nextFloat() - br.nextFloat()) * 0.2F + 1.0F);
      a(paramOEntity);
    } else if (i != 0) aH.a(this, h(), k(), (br.nextFloat() - br.nextFloat()) * 0.2F + 1.0F);

    return true;
  }
  public void a(float paramFloat1, float paramFloat2) {
    if (g_()) {
      double d1 = aL;
      a(paramFloat1, paramFloat2, 0.02F);
      c(aN, aO, aP);

      aN *= 0.800000011920929D;
      aO *= 0.800000011920929D;
      aP *= 0.800000011920929D;
      aO -= 0.02D;

      if ((aW) && (b(aN, aO + 0.6000000238418579D - aL + d1, aP))) aO = 0.300000011920929D;
    } else if (V()) {
      double d1 = aL;
      a(paramFloat1, paramFloat2, 0.02F);
      c(aN, aO, aP);
      aN *= 0.5D;
      aO *= 0.5D;
      aP *= 0.5D;
      aO -= 0.02D;

      if ((aW) && (b(aN, aO + 0.6000000238418579D - aL + d1, aP))) aO = 0.300000011920929D;
    } else {
      float f1 = 0.91F;
      if (aV) {
        f1 = 0.5460001F;
        int i = aG.a(OMathHelper.b(aK), OMathHelper.b(aU.b) - 1, OMathHelper.b(aM));
        if (i > 0) f1 = OBlock.m[i].bx * 0.91F;
      }

      float f2 = 0.1627714F / (f1 * f1 * f1);
      a(paramFloat1, paramFloat2, aV ? 0.1F * f2 : 0.02F);

      f1 = 0.91F;
      if (aV) {
        f1 = 0.5460001F;
        int j = aG.a(OMathHelper.b(aK), OMathHelper.b(aU.b) - 1, OMathHelper.b(aM));
        if (j > 0) f1 = OBlock.m[j].bx * 0.91F;
      }

      if (n()) {
        bh = 0.0F;
        if (aO < -0.15D) aO = -0.15D;
        if ((Z()) && (aO < 0.0D)) aO = 0.0D;
      }

      c(aN, aO, aP);

      if ((aW) && (n())) aO = 0.2D;

      aO -= 0.08D;
      aO *= 0.9800000190734863D;
      aN *= f1;
      aP *= f1;
    }
    ai = aj;
    double d1 = aK - aH;
    double d2 = aM - aJ;
    float f3 = OMathHelper.a(d1 * d1 + d2 * d2) * 4.0F;
    if (f3 > 1.0F) f3 = 1.0F;
    aj += (f3 - aj) * 0.4F;
    ak += aj;
  }
  @Override
  public boolean a(OEntity paramOEntity, int paramInt) {
    if (aG.t) return false;
    at = 0;
    if (W <= 0) return false;

    aj = 1.5F;

    // hMod damage entities.
    LivingEntity attacker =
        (paramOEntity != null && paramOEntity instanceof OEntityLiving)
            ? new LivingEntity((OEntityLiving) paramOEntity)
            : null;

    // hMod attack by entity, but it might not do damage!
    if (attacker != null
        && (Boolean) manager.callHook(PluginLoader.Hook.ATTACK, attacker, entity, paramInt))
      return false;

    int i = 1;
    if (bw > C / 2.0F) {
      if (paramInt <= as) return false;
      // hMod: partial damage
      if (attacker != null
          && (Boolean)
              manager.callHook(
                  PluginLoader.Hook.DAMAGE,
                  PluginLoader.DamageType.ENTITY,
                  attacker,
                  entity,
                  paramInt - as)) return false;

      c(paramInt - as);
      as = paramInt;
      i = 0;
    } else {
      // hMod: full damage
      if (attacker != null
          && (Boolean)
              manager.callHook(
                  PluginLoader.Hook.DAMAGE,
                  PluginLoader.DamageType.ENTITY,
                  attacker,
                  entity,
                  paramInt)) return false;

      as = paramInt;
      X = W;
      bw = C;
      c(paramInt);
      Y = (Z = 10);
    }

    aa = 0.0F;

    if (i != 0) {
      // hMod: Forced cast to play Death Animations.
      aG.a(this, (byte) 2);
      W();
      if (paramOEntity != null) {
        double d1 = paramOEntity.aK - aK;
        double d2 = paramOEntity.aM - aM;
        while (d1 * d1 + d2 * d2 < 0.0001D) {
          d1 = (Math.random() - Math.random()) * 0.01D;
          d2 = (Math.random() - Math.random()) * 0.01D;
        }
        aa = ((float) (Math.atan2(d2, d1) * 180.0D / 3.141592741012573D) - aQ);
        a(paramOEntity, paramInt, d1, d2);
      } else aa = ((int) (Math.random() * 2.0D) * 180);
    }

    if (W <= 0) {
      if (i != 0) aG.a(this, g(), i(), (bq.nextFloat() - bq.nextFloat()) * 0.2F + 1.0F);
      a(paramOEntity);
    } else if (i != 0) aG.a(this, f(), i(), (bq.nextFloat() - bq.nextFloat()) * 0.2F + 1.0F);

    return true;
  }