001    
002    import java.util.Random;
003    
004    public class ic extends fe {
005    
006        public jl a;
007        private int e;
008        public int b = 0;
009        public int c;
010        private int f = 5;
011        public float d = (float) (Math.random() * 3.141592653589793D * 2.0D);
012    
013        public ic(fv paramfv, double paramDouble1, double paramDouble2, double paramDouble3, jl paramjl) {
014            super(paramfv);
015            a(0.25F, 0.25F);
016            H = (J / 2.0F);
017            a(paramDouble1, paramDouble2, paramDouble3);
018            a = paramjl;
019    
020            v = (float) (Math.random() * 360.0D);
021    
022            s = (float) (Math.random() * 0.2000000029802322D - 0.1000000014901161D);
023            t = 0.2000000029802322D;
024            u = (float) (Math.random() * 0.2000000029802322D - 0.1000000014901161D);
025            M = false;
026        }
027    
028        public ic(fv paramfv) {
029            super(paramfv);
030            a(0.25F, 0.25F);
031            H = (J / 2.0F);
032        }
033    
034        protected void a() {
035        }
036    
037        public void b_() {
038            super.b_();
039            if (c > 0) {
040                c -= 1;
041            }
042            m = p;
043            n = q;
044            o = r;
045    
046            t -= 0.03999999910593033D;
047            if (l.c(iz.b(p), iz.b(q), iz.b(r)) == mh.g) {
048                t = 0.2000000029802322D;
049                s = ((W.nextFloat() - W.nextFloat()) * 0.2F);
050                u = ((W.nextFloat() - W.nextFloat()) * 0.2F);
051                l.a(this, "random.fizz", 0.4F, 2.0F + W.nextFloat() * 0.4F);
052            }
053            g(p, q, r);
054            c(s, t, u);
055    
056            float f1 = 0.98F;
057            if (A) {
058                f1 = 0.5880001F;
059                int i = l.a(iz.b(p), iz.b(z.b) - 1, iz.b(r));
060                if (i > 0) {
061                    f1 = hr.m[i].bu * 0.98F;
062                }
063            }
064    
065            s *= f1;
066            t *= 0.9800000190734863D;
067            u *= f1;
068    
069            if (A) {
070                t *= -0.5D;
071            }
072    
073            e += 1;
074            b += 1;
075            if (b >= 6000) {
076                q();
077            }
078        }
079    
080        public boolean v() {
081            return l.a(z, mh.f, this);
082        }
083    
084        private boolean g(double paramDouble1, double paramDouble2, double paramDouble3) {
085            int i = iz.b(paramDouble1);
086            int j = iz.b(paramDouble2);
087            int k = iz.b(paramDouble3);
088    
089            double d1 = paramDouble1 - i;
090            double d2 = paramDouble2 - j;
091            double d3 = paramDouble3 - k;
092    
093            if (hr.o[l.a(i, j, k)]) {
094                int m = hr.o[l.a(i - 1, j, k)] == false ? 1 : 0;
095                int n = hr.o[l.a(i + 1, j, k)] == false ? 1 : 0;
096                int i1 = hr.o[l.a(i, j - 1, k)] == false ? 1 : 0;
097                int i2 = hr.o[l.a(i, j + 1, k)] == false ? 1 : 0;
098                int i3 = hr.o[l.a(i, j, k - 1)] == false ? 1 : 0;
099                int i4 = hr.o[l.a(i, j, k + 1)] == false ? 1 : 0;
100    
101                int i5 = -1;
102                double d4 = 9999.0D;
103                if ((m != 0) && (d1 < d4)) {
104                    d4 = d1;
105                    i5 = 0;
106                }
107                if ((n != 0) && (1.0D - d1 < d4)) {
108                    d4 = 1.0D - d1;
109                    i5 = 1;
110                }
111                if ((i1 != 0) && (d2 < d4)) {
112                    d4 = d2;
113                    i5 = 2;
114                }
115                if ((i2 != 0) && (1.0D - d2 < d4)) {
116                    d4 = 1.0D - d2;
117                    i5 = 3;
118                }
119                if ((i3 != 0) && (d3 < d4)) {
120                    d4 = d3;
121                    i5 = 4;
122                }
123                if ((i4 != 0) && (1.0D - d3 < d4)) {
124                    d4 = 1.0D - d3;
125                    i5 = 5;
126                }
127    
128                float f1 = W.nextFloat() * 0.2F + 0.1F;
129                if (i5 == 0) {
130                    s = (-f1);
131                }
132                if (i5 == 1) {
133                    s = f1;
134                }
135                if (i5 == 2) {
136                    t = (-f1);
137                }
138                if (i5 == 3) {
139                    t = f1;
140                }
141                if (i5 == 4) {
142                    u = (-f1);
143                }
144                if (i5 == 5) {
145                    u = f1;
146                }
147            }
148    
149            return false;
150        }
151    
152        protected void b(int paramInt) {
153            a((fe) null, paramInt);
154        }
155    
156        public boolean a(fe paramfe, int paramInt) {
157            y();
158            f -= paramInt;
159            if (f <= 0) {
160                q();
161            }
162            return false;
163        }
164    
165        public void a(ah paramah) {
166            paramah.a("Health", (short) (byte) f);
167            paramah.a("Age", (short) b);
168            paramah.a("Item", a.a(new ah()));
169        }
170    
171        public void b(ah paramah) {
172            f = (paramah.c("Health") & 0xFF);
173            b = paramah.c("Age");
174            ah localah = paramah.j("Item");
175            a = new jl(localah);
176        }
177    
178        public void b(hl paramhl) {
179            if (l.z) {
180                return;
181            }
182    
183            int i = a.a;
184            if ((c == 0) && (paramhl.an.a(a))) {
185                // hMod: allow item pickups
186                Item item = new Item(a.c, i);
187                if (!(Boolean) etc.getLoader().callHook(PluginLoader.Hook.ITEM_PICK_UP, ((fy) paramhl).getPlayer(), item)) {
188                    l.a(this, "random.pop", 0.2F, ((W.nextFloat() - W.nextFloat()) * 0.7F + 1.0F) * 2.0F);
189                    paramhl.c(this, i);
190                    q();
191                }
192            }
193        }
194    }