001 import java.util.List; 002 import java.util.Random; 003 004 public abstract class mj extends fe 005 { 006 public int aF = 20; 007 public float aG; 008 public float aH; 009 public float aI = 0.0F; public float aJ = 0.0F; 010 protected float aK; 011 protected float aL; 012 protected float aM; 013 protected float aN; 014 protected boolean aO = true; 015 protected String aP = "/mob/char.png"; 016 protected boolean aQ = true; 017 protected float aR = 0.0F; 018 protected String aS = null; 019 protected float aT = 1.0F; 020 protected int aU = 0; 021 protected float aV = 0.0F; 022 public boolean aW = false; 023 public float aX; 024 public float aY; 025 public int aZ; 026 public int ba; 027 private int a; 028 public int bb; 029 public int bc; 030 public float bd = 0.0F; 031 public int be = 0; 032 public int bf = 0; 033 public float bg; 034 public float bh; 035 protected boolean bi = false; 036 037 public int bj = -1; 038 public float bk = (float)(Math.random() * 0.8999999761581421D + 0.1000000014901161D); 039 public float bl; 040 public float bm; 041 public float bn; 042 protected int bo; 043 protected double bp; 044 protected double bq; 045 protected double br; 046 protected double bs; 047 protected double bt; 048 float bu = 0.0F; 049 050 protected int bv = 0; 051 052 protected int bw = 0; 053 protected float bx; 054 protected float by; 055 protected float bz; 056 protected boolean bA = false; 057 protected float bB = 0.0F; 058 protected float bC = 0.7F; 059 private fe b; 060 private int c = 0; 061 062 public mj(fv paramfv) 063 { 064 super(paramfv); 065 aZ = 10; 066 i = true; 067 068 aH = ((float)(Math.random() + 1.0D) * 0.01F); 069 a(p, q, r); 070 aG = ((float)Math.random() * 12398.0F); 071 v = (float)(Math.random() * 3.141592741012573D * 2.0D); 072 073 S = 0.5F; 074 } 075 076 protected void a() 077 { 078 } 079 080 public boolean i(fe paramfe) 081 { 082 // hMod fix the static reference here with a null element. 083 bu bu = null; 084 return l.a(bu.b(p, q + w(), r), bu.b(paramfe.p, paramfe.q + paramfe.w(), paramfe.r)) == null; 085 } 086 087 public boolean c_() 088 { 089 return !G; 090 } 091 092 public boolean z() { 093 return !G; 094 } 095 096 public float w() { 097 return J * 0.85F; 098 } 099 100 public int c() { 101 return 80; 102 } 103 104 public void r() { 105 aX = aY; 106 super.r(); 107 108 if (W.nextInt(1000) < a++) { 109 a = (-c()); 110 String str = e(); 111 if (str != null) { 112 l.a(this, str, i(), (W.nextFloat() - W.nextFloat()) * 0.2F + 1.0F); 113 } 114 } 115 116 if ((B()) && (C())) { 117 a((fe)null, 1); 118 } 119 120 if ((ae) || (l.z)) Z = 0; 121 int i; 122 if ((B()) && (a(mh.f)) && (!d_())) { 123 ad -= 1; 124 if (ad == -20) { 125 ad = 0; 126 for (i = 0; i < 8; i++) { 127 float f1 = W.nextFloat() - W.nextFloat(); 128 float f2 = W.nextFloat() - W.nextFloat(); 129 float f3 = W.nextFloat() - W.nextFloat(); 130 l.a("bubble", p + f1, q + f2, r + f3, s, t, u); 131 } 132 // hMod Damage hook: Drowning 133 LivingEntity defender = new LivingEntity(this); 134 if (!(Boolean) etc.getLoader().callHook(PluginLoader.Hook.DAMAGE, PluginLoader.DamageType.WATER, null, defender, 2)) { 135 a((fe)null, 2); 136 } 137 } 138 139 Z = 0; 140 } else { 141 ad = aa; 142 } 143 144 bg = bh; 145 146 if (bf > 0) bf -= 1; 147 if (bb > 0) bb -= 1; 148 if (ac > 0) ac -= 1; 149 if (aZ <= 0) { 150 be += 1; 151 if (be > 20) { 152 T(); 153 q(); 154 for (i = 0; i < 20; i++) { 155 double d1 = W.nextGaussian() * 0.02D; 156 double d2 = W.nextGaussian() * 0.02D; 157 double d3 = W.nextGaussian() * 0.02D; 158 l.a("explode", p + W.nextFloat() * I * 2.0F - I, q + W.nextFloat() * J, r + W.nextFloat() * I * 2.0F - I, d1, d2, d3); 159 } 160 } 161 } 162 163 aN = aM; 164 165 aJ = aI; 166 x = v; 167 y = w; 168 } 169 170 public void R() { 171 for (int i = 0; i < 20; i++) { 172 double d1 = W.nextGaussian() * 0.02D; 173 double d2 = W.nextGaussian() * 0.02D; 174 double d3 = W.nextGaussian() * 0.02D; 175 double d4 = 10.0D; 176 l.a("explode", p + W.nextFloat() * I * 2.0F - I - d1 * d4, q + W.nextFloat() * J - d2 * d4, r + W.nextFloat() * I * 2.0F - I - d3 * d4, d1, d2, d3); 177 } 178 } 179 180 public void D() 181 { 182 super.D(); 183 aK = aL; 184 aL = 0.0F; 185 } 186 187 public void b_() 188 { 189 super.b_(); 190 191 o(); 192 193 double d1 = p - m; 194 double d2 = r - o; 195 196 float f1 = iz.a(d1 * d1 + d2 * d2); 197 198 float f2 = aI; 199 200 float f3 = 0.0F; 201 aK = aL; 202 float f4 = 0.0F; 203 if (f1 > 0.05F) 204 { 205 f4 = 1.0F; 206 f3 = f1 * 3.0F; 207 f2 = (float)Math.atan2(d2, d1) * 180.0F / 3.141593F - 90.0F; 208 } 209 if (aY > 0.0F) { 210 f2 = v; 211 } 212 if (!A) { 213 f4 = 0.0F; 214 } 215 aL += (f4 - aL) * 0.3F; 216 217 float f5 = f2 - aI; 218 while (f5 < -180.0F) 219 f5 += 360.0F; 220 while (f5 >= 180.0F) 221 f5 -= 360.0F; 222 aI += f5 * 0.3F; 223 224 float f6 = v - aI; 225 while (f6 < -180.0F) 226 f6 += 360.0F; 227 while (f6 >= 180.0F) 228 f6 -= 360.0F; 229 int i = (f6 < -90.0F) || (f6 >= 90.0F) ? 1 : 0; 230 if (f6 < -75.0F) f6 = -75.0F; 231 if (f6 >= 75.0F) f6 = 75.0F; 232 aI = (v - f6); 233 if (f6 * f6 > 2500.0F) { 234 aI += f6 * 0.2F; 235 } 236 237 if (i != 0) { 238 f3 *= -1.0F; 239 } 240 while (v - x < -180.0F) 241 x -= 360.0F; 242 while (v - x >= 180.0F) { 243 x += 360.0F; 244 } 245 while (aI - aJ < -180.0F) 246 aJ -= 360.0F; 247 while (aI - aJ >= 180.0F) { 248 aJ += 360.0F; 249 } 250 while (w - y < -180.0F) 251 y -= 360.0F; 252 while (w - y >= 180.0F) 253 y += 360.0F; 254 aM += f3; 255 } 256 257 protected void a(float paramFloat1, float paramFloat2) { 258 super.a(paramFloat1, paramFloat2); 259 } 260 261 public void d(int paramInt) { 262 if (aZ <= 0) return; 263 aZ += paramInt; 264 if (aZ > 20) aZ = 20; 265 ac = (aF / 2); 266 } 267 268 public boolean a(fe paramfe, int paramInt) 269 { 270 if (l.z) return false; 271 bw = 0; 272 if (aZ <= 0) return false; 273 274 bm = 1.5F; 275 276 // hMod damage entities. 277 LivingEntity attacker = (paramfe != null && paramfe instanceof mj) ? new LivingEntity((mj) paramfe) : null; 278 LivingEntity defender = new LivingEntity(this); 279 280 // hMod attack by entity, but it might not do damage! 281 if (attacker != null && (Boolean) etc.getLoader().callHook(PluginLoader.Hook.ATTACK, attacker, defender, paramInt)) { 282 return false; 283 } 284 285 int i = 1; 286 if (ac > aF / 2.0F) { 287 if (paramInt <= bv) return false; 288 // hMod: partial damage 289 if (attacker != null && (Boolean) etc.getLoader().callHook(PluginLoader.Hook.DAMAGE, PluginLoader.DamageType.ENTITY, attacker, defender, paramInt - bw)) { 290 return false; 291 } 292 e(paramInt - bv); 293 bv = paramInt; 294 i = 0; 295 } else { 296 // hMod: full damage 297 if (attacker != null && (Boolean) etc.getLoader().callHook(PluginLoader.Hook.DAMAGE, PluginLoader.DamageType.ENTITY, attacker, defender, paramInt)) { 298 return false; 299 } 300 bv = paramInt; 301 ba = aZ; 302 ac = aF; 303 e(paramInt); 304 bb = (this.bc = 10); 305 } 306 307 bd = 0.0F; 308 309 if (i != 0) { 310 l.a(this, (byte)2); 311 y(); 312 if (paramfe != null) { 313 double d1 = paramfe.p - p; 314 double d2 = paramfe.r - r; 315 while (d1 * d1 + d2 * d2 < 0.0001D) { 316 d1 = (Math.random() - Math.random()) * 0.01D; 317 d2 = (Math.random() - Math.random()) * 0.01D; 318 } 319 bd = ((float)(Math.atan2(d2, d1) * 180.0D / 3.141592741012573D) - v); 320 a(paramfe, paramInt, d1, d2); 321 } else { 322 bd = ((int)(Math.random() * 2.0D) * 180); 323 } 324 } 325 326 if (aZ <= 0) { 327 if (i != 0) l.a(this, g(), i(), (W.nextFloat() - W.nextFloat()) * 0.2F + 1.0F); 328 f(paramfe); 329 } 330 else if (i != 0) { l.a(this, f(), i(), (W.nextFloat() - W.nextFloat()) * 0.2F + 1.0F); 331 } 332 333 return true; 334 } 335 336 protected void e(int paramInt) 337 { 338 aZ -= paramInt; 339 } 340 341 protected float i() 342 { 343 return 1.0F; 344 } 345 346 protected String e() { 347 return null; 348 } 349 350 protected String f() { 351 return "random.hurt"; 352 } 353 354 protected String g() { 355 return "random.hurt"; 356 } 357 358 public void a(fe paramfe, int paramInt, double paramDouble1, double paramDouble2) { 359 float f1 = iz.a(paramDouble1 * paramDouble1 + paramDouble2 * paramDouble2); 360 float f2 = 0.4F; 361 362 s /= 2.0D; 363 t /= 2.0D; 364 u /= 2.0D; 365 366 s -= paramDouble1 / f1 * f2; 367 t += 0.4000000059604645D; 368 u -= paramDouble2 / f1 * f2; 369 370 if (t > 0.4000000059604645D) t = 0.4000000059604645D; 371 } 372 373 public void f(fe paramfe) 374 { 375 if ((aU > 0) && (paramfe != null)) paramfe.b(this, aU); 376 bi = true; 377 378 if (!l.z) { 379 g_(); 380 } 381 // hMod: Forced cast to play Death Animations. 382 l.a(this, (byte)3); 383 } 384 385 protected void g_() { 386 int i = h(); 387 if (i > 0) { 388 int j = W.nextInt(3); 389 for (int k = 0; k < j; k++) 390 a(i, 1); 391 } 392 } 393 394 protected int h() { 395 return 0; 396 } 397 398 protected void a(float paramFloat) { 399 int i = (int)Math.ceil(paramFloat - 3.0F); 400 if (i > 0) { 401 // hMod Damage hook: Falling 402 LivingEntity defender = new LivingEntity(this); 403 if (!(Boolean) etc.getLoader().callHook(PluginLoader.Hook.DAMAGE, PluginLoader.DamageType.FALL, null, defender, i)) { 404 405 406 a((fe)null, i);} 407 408 int j = l.a(iz.b(p), iz.b(q - 0.2000000029802322D - H), iz.b(r)); 409 if (j > 0) { 410 cy localcy = hr.m[j].br; 411 l.a(this, localcy.c(), localcy.a() * 0.5F, localcy.b() * 0.75F); 412 } 413 } 414 } 415 416 public void c(float paramFloat1, float paramFloat2) 417 { 418 double d1; 419 if (v()) { 420 d1 = q; 421 a(paramFloat1, paramFloat2, 0.02F); 422 c(s, t, u); 423 424 s *= 0.800000011920929D; 425 t *= 0.800000011920929D; 426 u *= 0.800000011920929D; 427 t -= 0.02D; 428 429 if ((B) && (b(s, t + 0.6000000238418579D - q + d1, u))) 430 t = 0.300000011920929D; 431 } 432 else if (x()) { 433 d1 = q; 434 a(paramFloat1, paramFloat2, 0.02F); 435 c(s, t, u); 436 s *= 0.5D; 437 t *= 0.5D; 438 u *= 0.5D; 439 t -= 0.02D; 440 441 if ((B) && (b(s, t + 0.6000000238418579D - q + d1, u))) 442 t = 0.300000011920929D; 443 } 444 else { 445 float f1 = 0.91F; 446 if (A) { 447 f1 = 0.5460001F; 448 int i = l.a(iz.b(p), iz.b(z.b) - 1, iz.b(r)); 449 if (i > 0) { 450 f1 = hr.m[i].bu * 0.91F; 451 } 452 } 453 454 float f2 = 0.1627714F / (f1 * f1 * f1); 455 a(paramFloat1, paramFloat2, A ? 0.1F * f2 : 0.02F); 456 457 f1 = 0.91F; 458 if (A) { 459 f1 = 0.5460001F; 460 int j = l.a(iz.b(p), iz.b(z.b) - 1, iz.b(r)); 461 if (j > 0) { 462 f1 = hr.m[j].bu * 0.91F; 463 } 464 } 465 466 if (m()) { 467 N = 0.0F; 468 if (t < -0.15D) t = -0.15D; 469 470 } 471 472 c(s, t, u); 473 474 if ((B) && (m())) { 475 t = 0.2D; 476 } 477 478 t -= 0.08D; 479 t *= 0.9800000190734863D; 480 s *= f1; 481 u *= f1; 482 } 483 bl = bm; 484 double d2 = p - m; 485 double d3 = r - o; 486 float f3 = iz.a(d2 * d2 + d3 * d3) * 4.0F; 487 if (f3 > 1.0F) f3 = 1.0F; 488 bm += (f3 - bm) * 0.4F; 489 bn += bm; 490 } 491 492 public boolean m() { 493 int i = iz.b(p); 494 int j = iz.b(z.b); 495 int k = iz.b(r); 496 return (l.a(i, j, k) == hr.aF.bi) || (l.a(i, j + 1, k) == hr.aF.bi); 497 } 498 499 public void a(ah paramah) 500 { 501 paramah.a("Health", (short)aZ); 502 paramah.a("HurtTime", (short)bb); 503 paramah.a("DeathTime", (short)be); 504 paramah.a("AttackTime", (short)bf); 505 } 506 507 public void b(ah paramah) { 508 aZ = paramah.c("Health"); 509 if (!paramah.a("Health")) aZ = 10; 510 bb = paramah.c("HurtTime"); 511 be = paramah.c("DeathTime"); 512 bf = paramah.c("AttackTime"); 513 } 514 515 public boolean B() { 516 return (!G) && (aZ > 0); 517 } 518 519 public boolean d_() { 520 return false; 521 } 522 523 public void o() 524 { 525 if (bo > 0) { 526 double d1 = p + (bp - p) / bo; 527 double d2 = q + (bq - q) / bo; 528 double d3 = r + (br - r) / bo; 529 530 double d4 = bs - v; 531 while (d4 < -180.0D) 532 d4 += 360.0D; 533 while (d4 >= 180.0D) { 534 d4 -= 360.0D; 535 } 536 v = (float)(v + d4 / bo); 537 w = (float)(w + (bt - w) / bo); 538 539 bo -= 1; 540 a(d1, d2, d3); 541 b(v, w); 542 } 543 544 if (aZ <= 0) { 545 bA = false; 546 bx = 0.0F; 547 by = 0.0F; 548 bz = 0.0F; 549 } 550 else if (!aW) { d(); 551 } 552 553 boolean bool1 = v(); 554 boolean bool2 = x(); 555 556 if (bA) { 557 if (bool1) 558 t += 0.03999999910593033D; 559 else if (bool2) 560 t += 0.03999999910593033D; 561 else if (A) { 562 S(); 563 } 564 565 } 566 567 bx *= 0.98F; 568 by *= 0.98F; 569 bz *= 0.9F; 570 c(bx, by); 571 572 List localList = l.b(this, z.b(0.2000000029802322D, 0.0D, 0.2000000029802322D)); 573 if ((localList != null) && (localList.size() > 0)) 574 for (int i = 0; i < localList.size(); i++) { 575 fe localfe = (fe)localList.get(i); 576 if (!localfe.z()) continue; localfe.c(this); 577 } 578 } 579 580 protected void S() 581 { 582 t = 0.4199999868869782D; 583 } 584 585 protected void d() 586 { 587 bw += 1; 588 589 hl localhl = l.a(this, -1.0D); 590 591 if (localhl != null) { 592 double d1 = localhl.p - p; 593 double d2 = localhl.q - q; 594 double d3 = localhl.r - r; 595 double d4 = d1 * d1 + d2 * d2 + d3 * d3; 596 597 if (d4 > 16384.0D) { 598 q(); 599 } 600 601 if ((bw > 600) && (W.nextInt(800) == 0)) { 602 if (d4 < 1024.0D) 603 bw = 0; 604 else { 605 q(); 606 } 607 } 608 } 609 610 bx = 0.0F; 611 by = 0.0F; 612 613 float f = 8.0F; 614 if (W.nextFloat() < 0.02F) { 615 localhl = l.a(this, f); 616 if (localhl != null) { 617 b = localhl; 618 c = (10 + W.nextInt(20)); 619 } else { 620 bz = ((W.nextFloat() - 0.5F) * 20.0F); 621 } 622 } 623 624 if (b != null) { 625 b(b, 10.0F); 626 if ((c-- <= 0) || (b.G) || (b.b(this) > f * f)) 627 b = null; 628 } 629 else { 630 if (W.nextFloat() < 0.05F) { 631 bz = ((W.nextFloat() - 0.5F) * 20.0F); 632 } 633 v += bz; 634 w = bB; 635 } 636 637 boolean bool1 = v(); 638 boolean bool2 = x(); 639 if ((bool1) || (bool2)) bA = (W.nextFloat() < 0.8F); 640 } 641 642 public void b(fe paramfe, float paramFloat) 643 { 644 double d1 = paramfe.p - p; 645 646 double d3 = paramfe.r - r; 647 double d2; 648 if ((paramfe instanceof mj)) { 649 mj localmj = (mj)paramfe; 650 d2 = localmj.q + localmj.w() - (q + w()); 651 } else { 652 d2 = (paramfe.z.b + paramfe.z.e) / 2.0D - (q + w()); 653 } 654 655 double d4 = iz.a(d1 * d1 + d3 * d3); 656 657 float f1 = (float)(Math.atan2(d3, d1) * 180.0D / 3.141592741012573D) - 90.0F; 658 float f2 = (float)(Math.atan2(d2, d4) * 180.0D / 3.141592741012573D); 659 w = (-b(w, f2, paramFloat)); 660 v = b(v, f1, paramFloat); 661 } 662 663 private float b(float paramFloat1, float paramFloat2, float paramFloat3) { 664 float f = paramFloat2 - paramFloat1; 665 while (f < -180.0F) 666 f += 360.0F; 667 while (f >= 180.0F) 668 f -= 360.0F; 669 if (f > paramFloat3) { 670 f = paramFloat3; 671 } 672 if (f < -paramFloat3) { 673 f = -paramFloat3; 674 } 675 return paramFloat1 + f; 676 } 677 678 public void T() { 679 } 680 681 public boolean b() { 682 return (l.a(z)) && (l.a(this, z).size() == 0) && (!l.b(z)); 683 } 684 685 protected void t() { 686 a((fe)null, 4); 687 } 688 689 public bu G() 690 { 691 return c(1.0F); 692 } 693 694 public bu c(float paramFloat) { 695 // hMod fix the static reference here with a null element. 696 bu bu = null; 697 698 if (paramFloat == 1.0F) { 699 float f1 = iz.b(-v * 0.01745329F - 3.141593F); 700 float f2 = iz.a(-v * 0.01745329F - 3.141593F); 701 float f3 = -iz.b(-w * 0.01745329F); 702 float f4 = iz.a(-w * 0.01745329F); 703 704 return bu.b(f2 * f3, f4, f1 * f3); 705 } 706 float f1 = y + (w - y) * paramFloat; 707 float f2 = x + (v - x) * paramFloat; 708 709 float f3 = iz.b(-f2 * 0.01745329F - 3.141593F); 710 float f4 = iz.a(-f2 * 0.01745329F - 3.141593F); 711 float f5 = -iz.b(-f1 * 0.01745329F); 712 float f6 = iz.a(-f1 * 0.01745329F); 713 714 return bu.b(f4 * f5, f6, f3 * f5); 715 } 716 717 public int j() 718 { 719 return 4; 720 } 721 }