001    
002    import java.util.ArrayList;
003    import java.util.List;
004    import net.minecraft.server.MinecraftServer;
005    
006    public class kj {
007        // hMod: generificy
008    
009        private List<fy> a = new ArrayList<fy>();
010        private gm b = new gm();
011        private List<at> c = new ArrayList<at>();
012        private MinecraftServer d;
013    
014        public kj(MinecraftServer paramMinecraftServer) {
015            d = paramMinecraftServer;
016        }
017    
018        public void a() {
019            for (int i = 0; i < c.size(); i++) {
020                // hMod: remove unnecessary cast
021                c.get(i).a();
022            }
023            c.clear();
024        }
025    
026        private at a(int paramInt1, int paramInt2, boolean paramBoolean) {
027            long l = paramInt1 + 2147483647L | paramInt2 + 2147483647L << 32;
028            at localat = (at) b.a(l);
029            if ((localat == null) && (paramBoolean)) {
030                localat = new at(this, paramInt1, paramInt2);
031                b.a(l, localat);
032            }
033            return localat;
034        }
035    
036        public void a(int paramInt1, int paramInt2, int paramInt3) {
037            int i = paramInt1 >> 4;
038            int j = paramInt3 >> 4;
039            at localat = a(i, j, false);
040            if (localat != null) {
041                localat.a(paramInt1 & 0xF, paramInt2, paramInt3 & 0xF);
042            }
043        }
044    
045        public void a(fy paramfy) {
046            int i = (int) paramfy.p >> 4;
047            int j = (int) paramfy.r >> 4;
048    
049            paramfy.d = paramfy.p;
050            paramfy.e = paramfy.r;
051    
052            for (int k = i - 10; k <= i + 10; k++) {
053                for (int m = j - 10; m <= j + 10; m++) {
054                    a(k, m, true).a(paramfy);
055                }
056            }
057            a.add(paramfy);
058        }
059    
060        public void b(fy paramfy) {
061            int i = (int) paramfy.d >> 4;
062            int j = (int) paramfy.e >> 4;
063    
064            for (int k = i - 10; k <= i + 10; k++) {
065                for (int m = j - 10; m <= j + 10; m++) {
066                    at localat = a(k, m, false);
067                    if (localat == null) {
068                        continue;
069                    }
070                    localat.b(paramfy);
071                }
072            }
073            a.remove(paramfy);
074        }
075    
076        private boolean a(int paramInt1, int paramInt2, int paramInt3, int paramInt4) {
077            int i = paramInt1 - paramInt3;
078            int j = paramInt2 - paramInt4;
079            if ((i < -10) || (i > 10)) {
080                return false;
081            }
082            return (j >= -10) && (j <= 10);
083        }
084    
085        public void c(fy paramfy) {
086            int i = (int) paramfy.p >> 4;
087            int j = (int) paramfy.r >> 4;
088    
089            double d1 = paramfy.d - paramfy.p;
090            double d2 = paramfy.e - paramfy.r;
091            double d3 = d1 * d1 + d2 * d2;
092            if (d3 < 64.0D) {
093                return;
094            }
095    
096            int k = (int) paramfy.d >> 4;
097            int m = (int) paramfy.e >> 4;
098    
099            int n = i - k;
100            int i1 = j - m;
101            if ((n == 0) && (i1 == 0)) {
102                return;
103            }
104    
105            for (int i2 = i - 10; i2 <= i + 10; i2++) {
106                for (int i3 = j - 10; i3 <= j + 10; i3++) {
107                    if (!a(i2, i3, k, m)) {
108                        a(i2, i3, true).a(paramfy);
109                    }
110                    if (!a(i2 - n, i3 - i1, i, j)) {
111                        at localat = a(i2 - n, i3 - i1, false);
112                        if (localat == null) {
113                            continue;
114                        }
115                        localat.b(paramfy);
116                    }
117                }
118            }
119            paramfy.d = paramfy.p;
120            paramfy.e = paramfy.r;
121        }
122    
123        public int b() {
124            return 144;
125        }
126    
127        static MinecraftServer a(kj jh1) {
128            return jh1.d;
129        }
130    
131        static gm b(kj jh1) {
132            return jh1.b;
133        }
134    
135        static List c(kj jh1) {
136            return jh1.c;
137        }
138        // hMod: bring back old "send packet to chunk" method from alpha
139    
140        public void sendPacketToChunk(jv packetToSend, int globalx, int globaly, int globalz) {
141            // Get chunk coordinates
142            int chunkx = globalx >> 4;
143            int chunkz = globalz >> 4;
144            // Get the chunk
145            at localat = a(chunkx, chunkz, false);
146            // if chunk != null, send packet
147            if (localat != null) {
148                localat.a(packetToSend);
149            }
150        }
151        // end hMod
152    }