001    
002    import java.util.Random;
003    
004    public class lc extends hr {
005    
006        protected lc(int paramInt1, int paramInt2) {
007            super(paramInt1, paramInt2, mh.n);
008        }
009    
010        public fa d(fv paramfv, int paramInt1, int paramInt2, int paramInt3) {
011            return null;
012        }
013    
014        public boolean a() {
015            return false;
016        }
017    
018        public boolean a(fv paramfv, int paramInt1, int paramInt2, int paramInt3) {
019            if (paramfv.d(paramInt1 - 1, paramInt2, paramInt3)) {
020                return true;
021            }
022            if (paramfv.d(paramInt1 + 1, paramInt2, paramInt3)) {
023                return true;
024            }
025            if (paramfv.d(paramInt1, paramInt2, paramInt3 - 1)) {
026                return true;
027            }
028            if (paramfv.d(paramInt1, paramInt2, paramInt3 + 1)) {
029                return true;
030            }
031            return paramfv.d(paramInt1, paramInt2 - 1, paramInt3);
032        }
033    
034        public void c(fv paramfv, int paramInt1, int paramInt2, int paramInt3, int paramInt4) {
035            int i = paramfv.b(paramInt1, paramInt2, paramInt3);
036    
037            int j = i & 0x8;
038            i &= 7;
039    
040            if ((paramInt4 == 1) && (paramfv.d(paramInt1, paramInt2 - 1, paramInt3))) {
041                i = 5 + paramfv.l.nextInt(2);
042            }
043            if ((paramInt4 == 2) && (paramfv.d(paramInt1, paramInt2, paramInt3 + 1))) {
044                i = 4;
045            }
046            if ((paramInt4 == 3) && (paramfv.d(paramInt1, paramInt2, paramInt3 - 1))) {
047                i = 3;
048            }
049            if ((paramInt4 == 4) && (paramfv.d(paramInt1 + 1, paramInt2, paramInt3))) {
050                i = 2;
051            }
052            if ((paramInt4 == 5) && (paramfv.d(paramInt1 - 1, paramInt2, paramInt3))) {
053                i = 1;
054            }
055    
056            paramfv.c(paramInt1, paramInt2, paramInt3, i + j);
057        }
058    
059        public void e(fv paramfv, int paramInt1, int paramInt2, int paramInt3) {
060            if (paramfv.d(paramInt1 - 1, paramInt2, paramInt3)) {
061                paramfv.c(paramInt1, paramInt2, paramInt3, 1);
062            } else if (paramfv.d(paramInt1 + 1, paramInt2, paramInt3)) {
063                paramfv.c(paramInt1, paramInt2, paramInt3, 2);
064            } else if (paramfv.d(paramInt1, paramInt2, paramInt3 - 1)) {
065                paramfv.c(paramInt1, paramInt2, paramInt3, 3);
066            } else if (paramfv.d(paramInt1, paramInt2, paramInt3 + 1)) {
067                paramfv.c(paramInt1, paramInt2, paramInt3, 4);
068            } else if (paramfv.d(paramInt1, paramInt2 - 1, paramInt3)) {
069                paramfv.c(paramInt1, paramInt2, paramInt3, 5 + paramfv.l.nextInt(2));
070            }
071            g(paramfv, paramInt1, paramInt2, paramInt3);
072        }
073    
074        public void b(fv paramfv, int paramInt1, int paramInt2, int paramInt3, int paramInt4) {
075            if (g(paramfv, paramInt1, paramInt2, paramInt3)) {
076                int i = paramfv.b(paramInt1, paramInt2, paramInt3) & 0x7;
077                int j = 0;
078    
079                if ((!paramfv.d(paramInt1 - 1, paramInt2, paramInt3)) && (i == 1)) {
080                    j = 1;
081                }
082                if ((!paramfv.d(paramInt1 + 1, paramInt2, paramInt3)) && (i == 2)) {
083                    j = 1;
084                }
085                if ((!paramfv.d(paramInt1, paramInt2, paramInt3 - 1)) && (i == 3)) {
086                    j = 1;
087                }
088                if ((!paramfv.d(paramInt1, paramInt2, paramInt3 + 1)) && (i == 4)) {
089                    j = 1;
090                }
091                if ((!paramfv.d(paramInt1, paramInt2 - 1, paramInt3)) && (i == 5)) {
092                    j = 1;
093                }
094    
095                if (j != 0) {
096                    a_(paramfv, paramInt1, paramInt2, paramInt3, paramfv.b(paramInt1, paramInt2, paramInt3));
097                    paramfv.e(paramInt1, paramInt2, paramInt3, 0);
098                }
099            }
100        }
101    
102        private boolean g(fv paramfv, int paramInt1, int paramInt2, int paramInt3) {
103            if (!a(paramfv, paramInt1, paramInt2, paramInt3)) {
104                a_(paramfv, paramInt1, paramInt2, paramInt3, paramfv.b(paramInt1, paramInt2, paramInt3));
105                paramfv.e(paramInt1, paramInt2, paramInt3, 0);
106                return false;
107            }
108            return true;
109        }
110    
111        public void a(la paramla, int paramInt1, int paramInt2, int paramInt3) {
112            int i = paramla.b(paramInt1, paramInt2, paramInt3) & 0x7;
113            float f = 0.1875F;
114            if (i == 1) {
115                a(0.0F, 0.2F, 0.5F - f, f * 2.0F, 0.8F, 0.5F + f);
116            } else if (i == 2) {
117                a(1.0F - f * 2.0F, 0.2F, 0.5F - f, 1.0F, 0.8F, 0.5F + f);
118            } else if (i == 3) {
119                a(0.5F - f, 0.2F, 0.0F, 0.5F + f, 0.8F, f * 2.0F);
120            } else if (i == 4) {
121                a(0.5F - f, 0.2F, 1.0F - f * 2.0F, 0.5F + f, 0.8F, 1.0F);
122            } else {
123                f = 0.25F;
124                a(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, 0.6F, 0.5F + f);
125            }
126        }
127    
128        public void b(fv paramfv, int paramInt1, int paramInt2, int paramInt3, hl paramhl) {
129            a(paramfv, paramInt1, paramInt2, paramInt3, paramhl);
130        }
131    
132        public boolean a(fv paramfv, int paramInt1, int paramInt2, int paramInt3, hl paramhl) {
133            if (paramfv.z) {
134                return true;
135            }
136            int i = paramfv.b(paramInt1, paramInt2, paramInt3);
137            int j = i & 0x7;
138            int k = 8 - (i & 0x8);
139    
140            // hMod: Allow the lever to change the current
141            int old = (k != 8) ? 1 : 0;
142            int current = (k == 8) ? 1 : 0;
143            current = (Integer) etc.getLoader().callHook(PluginLoader.Hook.REDSTONE_CHANGE, new Block(this.bh, paramInt1, paramInt2, paramInt3), old, current);
144    
145            if ((current > 0) == (k == 8)) {
146                paramfv.c(paramInt1, paramInt2, paramInt3, j + k);
147                paramfv.b(paramInt1, paramInt2, paramInt3, paramInt1, paramInt2, paramInt3);
148    
149                paramfv.a(paramInt1 + 0.5D, paramInt2 + 0.5D, paramInt3 + 0.5D, "random.click", 0.3F, k > 0 ? 0.6F : 0.5F);
150    
151                paramfv.h(paramInt1, paramInt2, paramInt3, bi);
152                if (j == 1) {
153                    paramfv.h(paramInt1 - 1, paramInt2, paramInt3, bi);
154                } else if (j == 2) {
155                    paramfv.h(paramInt1 + 1, paramInt2, paramInt3, bi);
156                } else if (j == 3) {
157                    paramfv.h(paramInt1, paramInt2, paramInt3 - 1, bi);
158                } else if (j == 4) {
159                    paramfv.h(paramInt1, paramInt2, paramInt3 + 1, bi);
160                } else {
161                    paramfv.h(paramInt1, paramInt2 - 1, paramInt3, bi);
162                }
163            }
164            return true;
165        }
166    
167        public void b(fv paramfv, int paramInt1, int paramInt2, int paramInt3) {
168            int i = paramfv.b(paramInt1, paramInt2, paramInt3);
169            if ((i & 0x8) > 0) {
170                paramfv.h(paramInt1, paramInt2, paramInt3, bi);
171                int j = i & 0x7;
172                if (j == 1) {
173                    paramfv.h(paramInt1 - 1, paramInt2, paramInt3, bi);
174                } else if (j == 2) {
175                    paramfv.h(paramInt1 + 1, paramInt2, paramInt3, bi);
176                } else if (j == 3) {
177                    paramfv.h(paramInt1, paramInt2, paramInt3 - 1, bi);
178                } else if (j == 4) {
179                    paramfv.h(paramInt1, paramInt2, paramInt3 + 1, bi);
180                } else {
181                    paramfv.h(paramInt1, paramInt2 - 1, paramInt3, bi);
182                }
183            }
184            super.b(paramfv, paramInt1, paramInt2, paramInt3);
185        }
186    
187        public boolean b(la paramla, int paramInt1, int paramInt2, int paramInt3, int paramInt4) {
188            return (paramla.b(paramInt1, paramInt2, paramInt3) & 0x8) > 0;
189        }
190    
191        public boolean d(fv paramfv, int paramInt1, int paramInt2, int paramInt3, int paramInt4) {
192            int i = paramfv.b(paramInt1, paramInt2, paramInt3);
193            if ((i & 0x8) == 0) {
194                return false;
195            }
196            int j = i & 0x7;
197    
198            if ((j == 5) && (paramInt4 == 1)) {
199                return true;
200            }
201            if ((j == 4) && (paramInt4 == 2)) {
202                return true;
203            }
204            if ((j == 3) && (paramInt4 == 3)) {
205                return true;
206            }
207            if ((j == 2) && (paramInt4 == 4)) {
208                return true;
209            }
210            return (j == 1) && (paramInt4 == 5);
211        }
212    
213        public boolean c() {
214            return true;
215        }
216    }