001 002 import java.util.List; 003 import java.util.Random; 004 005 public class gu extends fe { 006 007 public int a = 0; 008 public int b = 0; 009 public int c = 1; 010 private int d; 011 private double e; 012 private double f; 013 private double ak; 014 private double al; 015 private double am; 016 017 public gu(fv paramfv) { 018 super(paramfv); 019 i = true; 020 a(1.5F, 0.6F); 021 H = (J / 2.0F); 022 M = false; 023 } 024 025 protected void a() { 026 } 027 028 public fa d(fe paramfe) { 029 return paramfe.z; 030 } 031 032 public fa u() { 033 return z; 034 } 035 036 public boolean z() { 037 return true; 038 } 039 040 public gu(fv paramfv, double paramDouble1, double paramDouble2, double paramDouble3) { 041 this(paramfv); 042 a(paramDouble1, paramDouble2 + H, paramDouble3); 043 044 s = 0.0D; 045 t = 0.0D; 046 u = 0.0D; 047 048 m = paramDouble1; 049 n = paramDouble2; 050 o = paramDouble3; 051 // hMod: Creation of the boat 052 Boat boat = new Boat(this); 053 etc.getLoader().callHook(PluginLoader.Hook.VEHICLE_CREATE, new Object[]{boat}); 054 } 055 056 public double k() { 057 return J * 0.0D - 0.300000011920929D; 058 } 059 060 public boolean a(fe paramfe, int paramInt) { 061 // hMod: Attack of the boat 062 BaseEntity attacker = new BaseEntity(paramfe); 063 Boat boat = new Boat(this); 064 if ((Boolean) etc.getLoader().callHook(PluginLoader.Hook.VEHICLE_DAMAGE, boat, attacker, paramInt)) { 065 return true; 066 } 067 068 if ((l.z) || (G)) { 069 return true; 070 } 071 c = (-c); 072 b = 10; 073 a += paramInt * 10; 074 y(); 075 if (a > 40) { 076 for (int i = 0; i < 3; i++) { 077 a(hr.x.bi, 1, 0.0F); 078 } 079 for (int i = 0; i < 2; i++) { 080 a(hg.B.ba, 1, 0.0F); 081 } 082 q(); 083 } 084 return true; 085 } 086 087 public boolean c_() { 088 return !G; 089 } 090 091 public void b_() { 092 // hMod: Update of the boat 093 Boat boat = new Boat(this); 094 etc.getLoader().callHook(PluginLoader.Hook.VEHICLE_UPDATE, boat); 095 096 super.b_(); 097 if (b > 0) { 098 b -= 1; 099 } 100 if (a > 0) { 101 a -= 1; 102 } 103 this.m = p; 104 this.n = q; 105 o = r; 106 107 int i = 5; 108 double d1 = 0.0D; 109 for (int j = 0; j < i; j++) { 110 double d3 = z.b + (z.e - z.b) * (j + 0) / i - 0.125D; 111 double d5 = z.b + (z.e - z.b) * (j + 1) / i - 0.125D; 112 fa localfa = fa.b(z.a, d3, z.c, z.d, d5, z.f); 113 if (l.b(localfa, mh.f)) { 114 d1 += 1.0D / i; 115 } 116 } 117 double d2, d4, d6, d7; 118 if (l.z) { 119 if (d > 0) { 120 d2 = p + (e - p) / d; 121 d4 = q + (f - q) / d; 122 d6 = r + (ak - r) / d; 123 124 d7 = al - v; 125 while (d7 < -180.0D) { 126 d7 += 360.0D; 127 } 128 while (d7 >= 180.0D) { 129 d7 -= 360.0D; 130 } 131 v = (float) (v + d7 / d); 132 w = (float) (w + (am - w) / d); 133 134 d -= 1; 135 a(d2, d4, d6); 136 b(v, w); 137 } else { 138 d2 = p + s; 139 d4 = q + t; 140 d6 = r + u; 141 a(d2, d4, d6); 142 if (A) { 143 s *= 0.5D; 144 t *= 0.5D; 145 u *= 0.5D; 146 } 147 s *= 0.9900000095367432D; 148 t *= 0.949999988079071D; 149 u *= 0.9900000095367432D; 150 } 151 return; 152 } 153 154 d2 = d1 * 2.0D - 1.0D; 155 t += 0.03999999910593033D * d2; 156 157 if (this.j != null) { 158 s += this.j.s * 0.2D; 159 u += this.j.u * 0.2D; 160 } 161 162 d4 = 0.4D; 163 164 if (s < -d4) { 165 s = (-d4); 166 } 167 if (s > d4) { 168 s = d4; 169 } 170 if (u < -d4) { 171 u = (-d4); 172 } 173 if (u > d4) { 174 u = d4; 175 } 176 if (A) { 177 s *= 0.5D; 178 t *= 0.5D; 179 u *= 0.5D; 180 } 181 c(s, t, u); 182 d6 = Math.sqrt(s * s + u * u); 183 if (d6 > 0.15D) { 184 d7 = Math.cos(v * 3.141592653589793D / 180.0D); 185 double d9 = Math.sin(v * 3.141592653589793D / 180.0D); 186 187 for (int m = 0; m < 1.0D + d6 * 60.0D; m++) { 188 double d11 = W.nextFloat() * 2.0F - 1.0F; 189 190 double d13 = (W.nextInt(2) * 2 - 1) * 0.7D; 191 double d14; 192 double d15; 193 if (W.nextBoolean()) { 194 d14 = p - d7 * d11 * 0.8D + d9 * d13; 195 d15 = r - d9 * d11 * 0.8D - d7 * d13; 196 l.a("splash", d14, q - 0.125D, d15, s, t, u); 197 } else { 198 d14 = p + d7 + d9 * d11 * 0.7D; 199 d15 = r + d9 - d7 * d11 * 0.7D; 200 l.a("splash", d14, q - 0.125D, d15, s, t, u); 201 } 202 } 203 } 204 205 if ((B) && (d6 > 0.15D)) { 206 if (!l.z) { 207 q(); 208 for (int k = 0; k < 3; k++) { 209 a(hr.x.bi, 1, 0.0F); 210 } 211 for (int k = 0; k < 2; k++) { 212 a(hg.B.ba, 1, 0.0F); 213 } 214 } 215 } else { 216 s *= 0.9900000095367432D; 217 t *= 0.949999988079071D; 218 u *= 0.9900000095367432D; 219 } 220 221 w = 0.0F; 222 double d8 = v; 223 double d9 = this.m - p; 224 double d10 = o - r; 225 if (d9 * d9 + d10 * d10 > 0.001D) { 226 d8 = (float) (Math.atan2(d10, d9) * 180.0D / 3.141592653589793D); 227 } 228 229 double d12 = d8 - v; 230 while (d12 >= 180.0D) { 231 d12 -= 360.0D; 232 } 233 while (d12 < -180.0D) { 234 d12 += 360.0D; 235 } 236 if (d12 > 20.0D) { 237 d12 = 20.0D; 238 } 239 if (d12 < -20.0D) { 240 d12 = -20.0D; 241 } 242 243 v = (float) (v + d12); 244 b(v, w); 245 246 List localList = l.b(this, z.b(0.2000000029802322D, 0.0D, 0.2000000029802322D)); 247 if ((localList != null) && (localList.size() > 0)) { 248 for (int n = 0; n < localList.size(); n++) { 249 fe localfe = (fe) localList.get(n); 250 if ((localfe != this.j) && (localfe.z()) && ((localfe instanceof gu))) { 251 localfe.c(this); 252 } 253 } 254 } 255 256 if ((this.j != null) 257 && (this.j.G)) { 258 this.j = null; 259 } 260 } 261 262 public void E() { 263 if (j == null) { 264 return; 265 } 266 267 double d1 = Math.cos(v * 3.141592653589793D / 180.0D) * 0.4D; 268 double d2 = Math.sin(v * 3.141592653589793D / 180.0D) * 0.4D; 269 j.a(p + d1, q + k() + j.F(), r + d2); 270 } 271 272 protected void a(ah paramah) { 273 } 274 275 protected void b(ah paramah) { 276 } 277 278 public boolean a(hl paramhl) { 279 // hMod: Entering the boat 280 Boat boat = new Boat(this); 281 HumanEntity player = new HumanEntity(paramhl); 282 etc.getLoader().callHook(PluginLoader.Hook.VEHICLE_ENTERED, boat, player); 283 284 if ((j != null) && ((j instanceof hl)) && (j != paramhl)) { 285 return true; 286 } 287 if (!l.z) { 288 paramhl.e(this); 289 } 290 return true; 291 } 292 }