001 002 import java.util.List; 003 import java.util.Random; 004 005 public class lw extends fe 006 implements mn, Container<jl> { 007 008 public jl[] al = new jl[36]; 009 public int a = 0; 010 public int b = 0; 011 public int c = 1; 012 private boolean am = false; 013 public int d; 014 public int e; 015 public double f; 016 public double ak; 017 private static final int[][][] an = {{{0, 0, -1}, {0, 0, 1}}, {{-1, 0, 0}, {1, 0, 0}}, {{-1, -1, 0}, {1, 0, 0}}, {{-1, 0, 0}, {1, -1, 0}}, {{0, 0, -1}, {0, -1, 1}}, {{0, -1, -1}, {0, 0, 1}}, {{0, 0, 1}, {1, 0, 0}}, {{0, 0, 1}, {-1, 0, 0}}, {{0, 0, -1}, {-1, 0, 0}}, {{0, 0, -1}, {1, 0, 0}}}; 018 private int ao; 019 private double ap; 020 private double aq; 021 private double ar; 022 private double as; 023 private double at; 024 private String name = "Minecart"; 025 026 @Override 027 public jl[] getContents() { 028 return al; 029 } 030 031 @Override 032 public void setContents(jl[] values) { 033 al = values; 034 } 035 036 public jl getContentsAt(int index) { 037 return a(index); 038 } 039 040 public void setContentsAt(int index, jl value) { 041 a(index, value); 042 } 043 044 public int getContentsSize() { 045 return h_(); 046 } 047 048 public String getName() { 049 return name; 050 } 051 052 public void setName(String value) { 053 name = value; 054 } 055 056 public lw(fv paramfv) { 057 super(paramfv); 058 i = true; 059 a(0.98F, 0.7F); 060 H = (J / 2.0F); 061 M = false; 062 } 063 064 protected void a() { 065 } 066 067 public fa d(fe paramfe) { 068 return paramfe.z; 069 } 070 071 public fa u() { 072 return null; 073 } 074 075 public boolean z() { 076 return true; 077 } 078 079 public lw(fv paramfv, double paramDouble1, double paramDouble2, double paramDouble3, int paramInt) { 080 this(paramfv); 081 a(paramDouble1, paramDouble2 + H, paramDouble3); 082 083 s = 0.0D; 084 t = 0.0D; 085 u = 0.0D; 086 087 m = paramDouble1; 088 n = paramDouble2; 089 o = paramDouble3; 090 d = paramInt; 091 092 // hMod: Creation of the cart 093 Minecart cart = new Minecart(this); 094 etc.getLoader().callHook(PluginLoader.Hook.VEHICLE_CREATE, cart); 095 } 096 097 public double k() { 098 return J * 0.0D - 0.300000011920929D; 099 } 100 101 public boolean a(fe paramfe, int paramInt) { 102 103 // hMod: Attack of the cart 104 BaseEntity attacker = new BaseEntity(paramfe); 105 Minecart cart = new Minecart(this); 106 107 if ((Boolean) etc.getLoader().callHook(PluginLoader.Hook.VEHICLE_DAMAGE, cart, attacker, paramInt)) { 108 return true; 109 } 110 111 if ((l.z) || (G)) { 112 return true; 113 } 114 c = (-c); 115 b = 10; 116 y(); 117 a += paramInt * 10; 118 if (a > 40) { 119 a(hg.ax.ba, 1, 0.0F); 120 if (d == 1) { 121 a(hr.au.bi, 1, 0.0F); 122 } else if (d == 2) { 123 a(hr.aB.bi, 1, 0.0F); 124 } 125 q(); 126 } 127 return true; 128 } 129 130 public boolean c_() { 131 return !G; 132 } 133 134 public void q() { 135 // hMod: Destruction of the cart 136 Minecart cart = new Minecart(this); 137 etc.getLoader().callHook(PluginLoader.Hook.VEHICLE_DESTROYED, cart); 138 139 for (int i = 0; i < h_(); i++) { 140 jl localjl = a(i); 141 if (localjl != null) { 142 float f1 = W.nextFloat() * 0.8F + 0.1F; 143 float f2 = W.nextFloat() * 0.8F + 0.1F; 144 float f3 = W.nextFloat() * 0.8F + 0.1F; 145 146 while (localjl.a > 0) { 147 int j = W.nextInt(21) + 10; 148 if (j > localjl.a) { 149 j = localjl.a; 150 } 151 localjl.a -= j; 152 153 ic localic = new ic(l, p + f1, q + f2, r + f3, new jl(localjl.c, j, localjl.h())); 154 float f4 = 0.05F; 155 localic.s = ((float) W.nextGaussian() * f4); 156 localic.t = ((float) W.nextGaussian() * f4 + 0.2F); 157 localic.u = ((float) W.nextGaussian() * f4); 158 l.a(localic); 159 } 160 } 161 } 162 super.q(); 163 } 164 165 public void b_() { 166 // hMod: Update of the cart 167 Minecart cart = new Minecart(this); 168 etc.getLoader().callHook(PluginLoader.Hook.VEHICLE_UPDATE, cart); 169 170 if (b > 0) { 171 b -= 1; 172 } 173 if (a > 0) { 174 a -= 1; 175 } 176 177 if ((l.z) && (ao > 0)) { 178 if (ao > 0) { 179 double d1 = p + (ap - p) / ao; 180 double d2 = q + (aq - q) / ao; 181 double d4 = r + (ar - r) / ao; 182 183 double d5 = as - v; 184 while (d5 < -180.0D) { 185 d5 += 360.0D; 186 } 187 while (d5 >= 180.0D) { 188 d5 -= 360.0D; 189 } 190 v = (float) (v + d5 / ao); 191 w = (float) (w + (at - w) / ao); 192 193 ao -= 1; 194 a(d1, d2, d4); 195 b(v, w); 196 } else { 197 a(p, q, r); 198 b(v, w); 199 } 200 201 return; 202 } 203 this.m = p; 204 this.n = q; 205 o = r; 206 207 t -= 0.03999999910593033D; 208 209 int i = iz.b(p); 210 int j = iz.b(q); 211 int k = iz.b(r); 212 if (l.a(i, j - 1, k) == hr.aG.bi) { 213 j--; 214 } 215 216 double d3 = 0.4D; 217 int m = 0; 218 219 double d5 = 0.0078125D; 220 if (l.a(i, j, k) == hr.aG.bi) { 221 bu localbu1 = g(p, q, r); 222 int n = l.b(i, j, k); 223 q = j; 224 if ((n >= 2) && (n <= 5)) { 225 q = (j + 1); 226 } 227 228 if (n == 2) { 229 s -= d5; 230 } 231 if (n == 3) { 232 s += d5; 233 } 234 if (n == 4) { 235 u += d5; 236 } 237 if (n == 5) { 238 u -= d5; 239 } 240 241 int[][] arrayOfInt = an[n]; 242 243 double d8 = arrayOfInt[1][0] - arrayOfInt[0][0]; 244 double d10 = arrayOfInt[1][2] - arrayOfInt[0][2]; 245 double d11 = Math.sqrt(d8 * d8 + d10 * d10); 246 247 double d12 = s * d8 + u * d10; 248 if (d12 < 0.0D) { 249 d8 = -d8; 250 d10 = -d10; 251 } 252 253 double d13 = Math.sqrt(s * s + u * u); 254 255 s = (d13 * d8 / d11); 256 u = (d13 * d10 / d11); 257 258 double d14 = 0.0D; 259 double d15 = i + 0.5D + arrayOfInt[0][0] * 0.5D; 260 double d16 = k + 0.5D + arrayOfInt[0][2] * 0.5D; 261 double d17 = i + 0.5D + arrayOfInt[1][0] * 0.5D; 262 double d18 = k + 0.5D + arrayOfInt[1][2] * 0.5D; 263 264 d8 = d17 - d15; 265 d10 = d18 - d16; 266 double d21; 267 if (d8 == 0.0D) { 268 p = (i + 0.5D); 269 d14 = r - k; 270 } else if (d10 == 0.0D) { 271 r = (k + 0.5D); 272 d14 = p - i; 273 } else { 274 double d19 = p - d15; 275 double d20 = r - d16; 276 277 d21 = (d19 * d8 + d20 * d10) * 2.0D; 278 d14 = d21; 279 } 280 281 p = (d15 + d8 * d14); 282 r = (d16 + d10 * d14); 283 284 a(p, q + H, r); 285 286 double d19 = s; 287 double d20 = u; 288 if (this.j != null) { 289 d19 *= 0.75D; 290 d20 *= 0.75D; 291 } 292 if (d19 < -d3) { 293 d19 = -d3; 294 } 295 if (d19 > d3) { 296 d19 = d3; 297 } 298 if (d20 < -d3) { 299 d20 = -d3; 300 } 301 if (d20 > d3) { 302 d20 = d3; 303 } 304 c(d19, 0.0D, d20); 305 306 if ((arrayOfInt[0][1] != 0) && (iz.b(p) - i == arrayOfInt[0][0]) && (iz.b(r) - k == arrayOfInt[0][2])) { 307 a(p, q + arrayOfInt[0][1], r); 308 } else if ((arrayOfInt[1][1] != 0) && (iz.b(p) - i == arrayOfInt[1][0]) && (iz.b(r) - k == arrayOfInt[1][2])) { 309 a(p, q + arrayOfInt[1][1], r); 310 } 311 312 if (this.j != null) { 313 s *= 0.996999979019165D; 314 t *= 0.0D; 315 u *= 0.996999979019165D; 316 } else { 317 if (d == 2) { 318 d21 = iz.a(f * f + ak * ak); 319 if (d21 > 0.01D) { 320 m = 1; 321 f /= d21; 322 ak /= d21; 323 double d23 = 0.04D; 324 s *= 0.800000011920929D; 325 t *= 0.0D; 326 u *= 0.800000011920929D; 327 s += f * d23; 328 u += ak * d23; 329 } else { 330 s *= 0.8999999761581421D; 331 t *= 0.0D; 332 u *= 0.8999999761581421D; 333 } 334 } 335 s *= 0.9599999785423279D; 336 t *= 0.0D; 337 u *= 0.9599999785423279D; 338 } 339 340 bu localbu2 = g(p, q, r); 341 if ((localbu2 != null) && (localbu1 != null)) { 342 double d22 = (localbu1.b - localbu2.b) * 0.05D; 343 344 d13 = Math.sqrt(s * s + u * u); 345 if (d13 > 0.0D) { 346 s = (s / d13 * (d13 + d22)); 347 u = (u / d13 * (d13 + d22)); 348 } 349 a(p, localbu2.b, r); 350 } 351 352 int i2 = iz.b(p); 353 int i3 = iz.b(r); 354 if ((i2 != i) || (i3 != k)) { 355 d13 = Math.sqrt(s * s + u * u); 356 357 s = (d13 * (i2 - i)); 358 u = (d13 * (i3 - k)); 359 } 360 361 if (d == 2) { 362 double d24 = iz.a(f * f + ak * ak); 363 if ((d24 > 0.01D) && (s * s + u * u > 0.001D)) { 364 f /= d24; 365 ak /= d24; 366 367 if (f * s + ak * u < 0.0D) { 368 f = 0.0D; 369 ak = 0.0D; 370 } else { 371 f = s; 372 ak = u; 373 } 374 } 375 } 376 } else { 377 if (s < -d3) { 378 s = (-d3); 379 } 380 if (s > d3) { 381 s = d3; 382 } 383 if (u < -d3) { 384 u = (-d3); 385 } 386 if (u > d3) { 387 u = d3; 388 } 389 if (A) { 390 s *= 0.5D; 391 t *= 0.5D; 392 u *= 0.5D; 393 } 394 c(s, t, u); 395 396 if (!A) { 397 s *= 0.949999988079071D; 398 t *= 0.949999988079071D; 399 u *= 0.949999988079071D; 400 } 401 } 402 403 w = 0.0F; 404 double d6 = this.m - p; 405 double d7 = o - r; 406 if (d6 * d6 + d7 * d7 > 0.001D) { 407 v = (float) (Math.atan2(d7, d6) * 180.0D / 3.141592653589793D); 408 if (am) { 409 v += 180.0F; 410 } 411 } 412 413 double d9 = v - x; 414 while (d9 >= 180.0D) { 415 d9 -= 360.0D; 416 } 417 while (d9 < -180.0D) { 418 d9 += 360.0D; 419 } 420 if ((d9 < -170.0D) || (d9 >= 170.0D)) { 421 v += 180.0F; 422 am = (!am); 423 } 424 b(v, w); 425 426 List localList = l.b(this, z.b(0.2000000029802322D, 0.0D, 0.2000000029802322D)); 427 if ((localList != null) && (localList.size() > 0)) { 428 for (int i1 = 0; i1 < localList.size(); i1++) { 429 fe localfe = (fe) localList.get(i1); 430 if ((localfe != this.j) && (localfe.z()) && ((localfe instanceof lw))) { 431 localfe.c(this); 432 } 433 } 434 435 } 436 437 if ((this.j != null) 438 && (this.j.G)) { 439 this.j = null; 440 } 441 442 if ((m != 0) && (W.nextInt(4) == 0)) { 443 e -= 1; 444 if (e < 0) { 445 f = (this.ak = 0.0D); 446 } 447 l.a("largesmoke", p, q + 0.8D, r, 0.0D, 0.0D, 0.0D); 448 } 449 } 450 451 public bu g(double paramDouble1, double paramDouble2, double paramDouble3) { 452 int i = iz.b(paramDouble1); 453 int j = iz.b(paramDouble2); 454 int k = iz.b(paramDouble3); 455 456 // hMod: Change of the cart 457 Minecart minecart = new Minecart(this); 458 etc.getLoader().callHook(PluginLoader.Hook.VEHICLE_POSITIONCHANGE, minecart, i, j, k); 459 460 if (l.a(i, j - 1, k) == hr.aG.bi) { 461 j--; 462 } 463 464 if (l.a(i, j, k) == hr.aG.bi) { 465 int m = l.b(i, j, k); 466 paramDouble2 = j; 467 if ((m >= 2) && (m <= 5)) { 468 paramDouble2 = j + 1; 469 } 470 471 int[][] arrayOfInt = an[m]; 472 473 double d1 = 0.0D; 474 double d2 = i + 0.5D + arrayOfInt[0][0] * 0.5D; 475 double d3 = j + 0.5D + arrayOfInt[0][1] * 0.5D; 476 double d4 = k + 0.5D + arrayOfInt[0][2] * 0.5D; 477 double d5 = i + 0.5D + arrayOfInt[1][0] * 0.5D; 478 double d6 = j + 0.5D + arrayOfInt[1][1] * 0.5D; 479 double d7 = k + 0.5D + arrayOfInt[1][2] * 0.5D; 480 481 double d8 = d5 - d2; 482 double d9 = (d6 - d3) * 2.0D; 483 double d10 = d7 - d4; 484 485 if (d8 == 0.0D) { 486 paramDouble1 = i + 0.5D; 487 d1 = paramDouble3 - k; 488 } else if (d10 == 0.0D) { 489 paramDouble3 = k + 0.5D; 490 d1 = paramDouble1 - i; 491 } else { 492 double d11 = paramDouble1 - d2; 493 double d12 = paramDouble3 - d4; 494 495 double d13 = (d11 * d8 + d12 * d10) * 2.0D; 496 d1 = d13; 497 } 498 499 paramDouble1 = d2 + d8 * d1; 500 paramDouble2 = d3 + d9 * d1; 501 paramDouble3 = d4 + d10 * d1; 502 if (d9 < 0.0D) { 503 paramDouble2 += 1.0D; 504 } 505 if (d9 > 0.0D) { 506 paramDouble2 += 0.5D; 507 } 508 return bu.b(paramDouble1, paramDouble2, paramDouble3); 509 } 510 return null; 511 } 512 513 protected void a(ah paramah) { 514 paramah.a("Type", d); 515 516 if (d == 2) { 517 paramah.a("PushX", f); 518 paramah.a("PushZ", ak); 519 paramah.a("Fuel", (short) e); 520 } else if (d == 1) { 521 fh localfh = new fh(); 522 523 for (int i = 0; i < al.length; i++) { 524 if (al[i] != null) { 525 ah localah = new ah(); 526 localah.a("Slot", (byte) i); 527 al[i].a(localah); 528 localfh.a(localah); 529 } 530 } 531 paramah.a("Items", localfh); 532 } 533 } 534 535 protected void b(ah paramah) { 536 d = paramah.d("Type"); 537 if (d == 2) { 538 f = paramah.g("PushX"); 539 ak = paramah.g("PushZ"); 540 e = paramah.c("Fuel"); 541 } else if (d == 1) { 542 fh localfh = paramah.k("Items"); 543 al = new jl[h_()]; 544 for (int i = 0; i < localfh.b(); i++) { 545 ah localah = (ah) localfh.a(i); 546 int j = localah.b("Slot") & 0xFF; 547 if ((j < 0) || (j >= al.length)) { 548 continue; 549 } 550 al[j] = new jl(localah); 551 } 552 } 553 } 554 555 public void c(fe paramfe) { 556 if (l.z) { 557 return; 558 } 559 560 if (paramfe == j) { 561 return; 562 } 563 // hMod: Collision of a cart 564 Minecart cart = new Minecart(this); 565 BaseEntity baseEntity = new BaseEntity(paramfe); 566 if ((Boolean) etc.getLoader().callHook(PluginLoader.Hook.VEHICLE_COLLISION, cart, baseEntity)) { 567 return; 568 } 569 570 if (((paramfe instanceof mj)) && (!(paramfe instanceof hl)) && (d == 0) && (s * s + u * u > 0.01D) 571 && (j == null) && (paramfe.k == null)) { 572 paramfe.e(this); 573 } 574 575 double d1 = paramfe.p - p; 576 double d2 = paramfe.r - r; 577 578 double d3 = d1 * d1 + d2 * d2; 579 if (d3 >= 9.999999747378752E-005D) { 580 d3 = iz.a(d3); 581 d1 /= d3; 582 d2 /= d3; 583 double d4 = 1.0D / d3; 584 if (d4 > 1.0D) { 585 d4 = 1.0D; 586 } 587 d1 *= d4; 588 d2 *= d4; 589 d1 *= 0.1000000014901161D; 590 d2 *= 0.1000000014901161D; 591 592 d1 *= (1.0F - U); 593 d2 *= (1.0F - U); 594 d1 *= 0.5D; 595 d2 *= 0.5D; 596 597 if ((paramfe instanceof lw)) { 598 double d5 = paramfe.s + s; 599 double d6 = paramfe.u + u; 600 601 if ((((lw) paramfe).d == 2) && (d != 2)) { 602 s *= 0.2000000029802322D; 603 u *= 0.2000000029802322D; 604 f(paramfe.s - d1, 0.0D, paramfe.u - d2); 605 paramfe.s *= 0.699999988079071D; 606 paramfe.u *= 0.699999988079071D; 607 } else if ((((lw) paramfe).d != 2) && (d == 2)) { 608 paramfe.s *= 0.2000000029802322D; 609 paramfe.u *= 0.2000000029802322D; 610 paramfe.f(s + d1, 0.0D, u + d2); 611 s *= 0.699999988079071D; 612 u *= 0.699999988079071D; 613 } else { 614 d5 /= 2.0D; 615 d6 /= 2.0D; 616 s *= 0.2000000029802322D; 617 u *= 0.2000000029802322D; 618 f(d5 - d1, 0.0D, d6 - d2); 619 paramfe.s *= 0.2000000029802322D; 620 paramfe.u *= 0.2000000029802322D; 621 paramfe.f(d5 + d1, 0.0D, d6 + d2); 622 } 623 } else { 624 f(-d1, 0.0D, -d2); 625 paramfe.f(d1 / 4.0D, 0.0D, d2 / 4.0D); 626 } 627 } 628 } 629 630 public int h_() { 631 return 27; 632 } 633 634 public jl a(int paramInt) { 635 return al[paramInt]; 636 } 637 638 public jl b(int paramInt1, int paramInt2) { 639 if (al[paramInt1] != null) { 640 if (al[paramInt1].a <= paramInt2) { 641 jl localjl = al[paramInt1]; 642 al[paramInt1] = null; 643 return localjl; 644 } 645 jl localjl = al[paramInt1].a(paramInt2); 646 if (al[paramInt1].a == 0) { 647 al[paramInt1] = null; 648 } 649 return localjl; 650 } 651 652 return null; 653 } 654 655 public void a(int paramInt, jl paramjl) { 656 al[paramInt] = paramjl; 657 if ((paramjl != null) && (paramjl.a > c())) { 658 paramjl.a = c(); 659 } 660 } 661 662 public String b() { 663 return getName(); //hMod: override with getName() 664 } 665 666 public int c() { 667 return 64; 668 } 669 670 public void d() { 671 } 672 673 public boolean a(hl paramhl) { 674 // hMod: Entering the cart 675 Minecart cart = new Minecart(this); 676 HumanEntity player = new HumanEntity(paramhl); 677 etc.getLoader().callHook(PluginLoader.Hook.VEHICLE_ENTERED, cart, player); 678 679 if (d == 0) { 680 if ((j != null) && ((j instanceof hl)) && (j != paramhl)) { 681 return true; 682 } 683 if (!l.z) { 684 paramhl.e(this); 685 } 686 } else if (d == 1) { 687 if (!l.z) { 688 // hMod cast this down to fix decompiler error. 689 paramhl.a((mn) this); 690 } 691 } else if (d == 2) { 692 jl localjl = paramhl.an.e(); 693 if ((localjl != null) && (localjl.c == hg.k.ba)) { 694 if (--localjl.a == 0) { 695 paramhl.an.a(paramhl.an.c, null); 696 } 697 e += 1200; 698 } 699 700 f = (p - paramhl.p); 701 ak = (r - paramhl.r); 702 } 703 return true; 704 } 705 706 public boolean a_(hl paramhl) { 707 if (G) { 708 return false; 709 } 710 return paramhl.b(this) <= 64.0D; 711 } 712 }