import java.io.IOException; import java.net.InetAddress; import java.net.ServerSocket; import java.util.ArrayList; import java.util.logging.Level; import java.util.logging.Logger; import net.minecraft.server.MinecraftServer; public class ONetworkListenThread { public static Logger a = Logger.getLogger("Minecraft"); private ServerSocket d; private Thread e; public volatile boolean b = false; private int f = 0; private ArrayList<ONetLoginHandler> g = new ArrayList<ONetLoginHandler>(); private ArrayList<ONetServerHandler> h = new ArrayList<ONetServerHandler>(); public MinecraftServer c; // hMod: These static methods are here because dx.java is calling them // statically... >.> static ServerSocket a(ONetworkListenThread self) { return self.d; } static int b(ONetworkListenThread self) { return self.f; } static void a(ONetworkListenThread self, ONetLoginHandler newhc) { ++self.f; self.a(newhc); } public ONetworkListenThread(MinecraftServer paramMinecraftServer, InetAddress paramInetAddress, int paramInt) { c = paramMinecraftServer; try { d = new ServerSocket(paramInt, 0, paramInetAddress); } catch (IOException ex) { Logger.getLogger(ONetworkListenThread.class.getName()).log(Level.SEVERE, null, ex); } d.setPerformancePreferences(0, 2, 1); b = true; e = new ONetworkAcceptThread(this, "Listen thread", paramMinecraftServer); e.start(); } public void a(ONetServerHandler paramONetServerHandler) { h.add(paramONetServerHandler); } private void a(ONetLoginHandler paramONetLoginHandler) { if (paramONetLoginHandler == null) throw new IllegalArgumentException("Got null pendingconnection!"); g.add(paramONetLoginHandler); } public void a() { ONetLoginHandler loginHandler; for (int i = 0; i < g.size(); i++) { loginHandler = g.get(i); try { loginHandler.a(); } catch (Exception localException1) { loginHandler.a("Internal server error"); a.log(Level.WARNING, "Failed to handle packet: " + localException1, localException1); } if (loginHandler.c) g.remove(i--); } ONetServerHandler handler; for (int i = 0; i < h.size(); i++) { handler = h.get(i); try { handler.a(); } catch (Exception localException2) { a.log(Level.WARNING, "Failed to handle packet: " + localException2, localException2); handler.a("Internal server error"); } if (handler.c) h.remove(i--); } } }