001    
002    import java.util.Random;
003    
004    public class bp extends aa {
005    
006        private int c;
007        int[] b;
008    
009        protected bp(int paramInt1, int paramInt2) {
010            super(paramInt1, paramInt2, mh.h, false);
011            c = paramInt2;
012            a(true);
013        }
014    
015        public void b(fv paramfv, int paramInt1, int paramInt2, int paramInt3) {
016            int i = 1;
017            int j = i + 1;
018    
019            if (paramfv.a(paramInt1 - j, paramInt2 - j, paramInt3 - j, paramInt1 + j, paramInt2 + j, paramInt3 + j)) {
020                for (int k = -i; k <= i; k++) {
021                    for (int m = -i; m <= i; m++) {
022                        for (int n = -i; n <= i; n++) {
023                            int i1 = paramfv.a(paramInt1 + k, paramInt2 + m, paramInt3 + n);
024                            if (i1 == hr.K.bi) {
025                                int i2 = paramfv.b(paramInt1 + k, paramInt2 + m, paramInt3 + n);
026                                paramfv.d(paramInt1 + k, paramInt2 + m, paramInt3 + n, i2 | 0x4);
027                            }
028                        }
029                    }
030                }
031            }
032        }
033    
034        public void a(fv paramfv, int paramInt1, int paramInt2, int paramInt3, Random paramRandom) {
035            if (paramfv.z) {
036                return;
037            }
038    
039            int i = paramfv.b(paramInt1, paramInt2, paramInt3);
040            if ((i & 0x4) != 0) {
041                int j = 4;
042                int k = j + 1;
043    
044                int m = 32;
045                int n = m * m;
046                int i1 = m / 2;
047                if (b == null) {
048                    b = new int[m * m * m];
049                }
050    
051                if (paramfv.a(paramInt1 - k, paramInt2 - k, paramInt3 - k, paramInt1 + k, paramInt2 + k, paramInt3 + k)) {
052                    int i2;
053                    int i3;
054                    int i4;
055                    int i5;
056                    for (i2 = -j; i2 <= j; i2++) {
057                        for (i3 = -j; i3 <= j; i3++) {
058                            for (i4 = -j; i4 <= j; i4++) {
059                                i5 = paramfv.a(paramInt1 + i2, paramInt2 + i3, paramInt3 + i4);
060                                if (i5 == hr.J.bi) {
061                                    b[((i2 + i1) * n + (i3 + i1) * m + (i4 + i1))] = 0;
062                                } else if (i5 == hr.K.bi) {
063                                    b[((i2 + i1) * n + (i3 + i1) * m + (i4 + i1))] = -2;
064                                } else {
065                                    b[((i2 + i1) * n + (i3 + i1) * m + (i4 + i1))] = -1;
066                                }
067                            }
068                        }
069                    }
070                    for (i2 = 1; i2 <= 4; i2++) {
071                        for (i3 = -j; i3 <= j; i3++) {
072                            for (i4 = -j; i4 <= j; i4++) {
073                                for (i5 = -j; i5 <= j; i5++) {
074                                    if (b[((i3 + i1) * n + (i4 + i1) * m + (i5 + i1))] == i2 - 1) {
075                                        if (b[((i3 + i1 - 1) * n + (i4 + i1) * m + (i5 + i1))] == -2) {
076                                            b[((i3 + i1 - 1) * n + (i4 + i1) * m + (i5 + i1))] = i2;
077                                        }
078                                        if (b[((i3 + i1 + 1) * n + (i4 + i1) * m + (i5 + i1))] == -2) {
079                                            b[((i3 + i1 + 1) * n + (i4 + i1) * m + (i5 + i1))] = i2;
080                                        }
081                                        if (b[((i3 + i1) * n + (i4 + i1 - 1) * m + (i5 + i1))] == -2) {
082                                            b[((i3 + i1) * n + (i4 + i1 - 1) * m + (i5 + i1))] = i2;
083                                        }
084                                        if (b[((i3 + i1) * n + (i4 + i1 + 1) * m + (i5 + i1))] == -2) {
085                                            b[((i3 + i1) * n + (i4 + i1 + 1) * m + (i5 + i1))] = i2;
086                                        }
087                                        if (b[((i3 + i1) * n + (i4 + i1) * m + (i5 + i1 - 1))] == -2) {
088                                            b[((i3 + i1) * n + (i4 + i1) * m + (i5 + i1 - 1))] = i2;
089                                        }
090                                        if (b[((i3 + i1) * n + (i4 + i1) * m + (i5 + i1 + 1))] == -2) {
091                                            b[((i3 + i1) * n + (i4 + i1) * m + (i5 + i1 + 1))] = i2;
092                                        }
093                                    }
094                                }
095                            }
096                        }
097                    }
098                }
099                int i2 = b[(i1 * n + i1 * m + i1)];
100                if (i2 >= 0) {
101                    paramfv.c(paramInt1, paramInt2, paramInt3, i & 0xFFFFFFFB);
102                } else {
103                    g(paramfv, paramInt1, paramInt2, paramInt3);
104                }
105            }
106        }
107    
108        private void g(fv paramfv, int paramInt1, int paramInt2, int paramInt3) {
109            //hMod: stop leaves from decaying
110            Block block = new Block(paramfv.a(paramInt1, paramInt2, paramInt3), paramInt1, paramInt2, paramInt3);
111            if (!(Boolean) etc.getLoader().callHook(PluginLoader.Hook.LEAF_DECAY, block)) {
112                a_(paramfv, paramInt1, paramInt2, paramInt3, paramfv.b(paramInt1, paramInt2, paramInt3));
113                paramfv.e(paramInt1, paramInt2, paramInt3, 0);
114            }
115        }
116    
117        public int a(Random paramRandom) {
118            return paramRandom.nextInt(16) == 0 ? 1 : 0;
119        }
120    
121        public int a(int paramInt, Random paramRandom) {
122            return hr.y.bi;
123        }
124    
125        public boolean a() {
126            return !a;
127        }
128    
129        public void b(fv paramfv, int paramInt1, int paramInt2, int paramInt3, fe paramfe) {
130            super.b(paramfv, paramInt1, paramInt2, paramInt3, paramfe);
131        }
132    }