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