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    }