def run(self): self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: self.socket.connect((self.server, self.port)) self.FileObject = self.socket.makefile() PacketListenerManager.sendHandshake(self.socket, self.username, self.server, self.port) if self.socket.recv(1) == "\x02": response = PacketListenerManager.handle02(self.FileObject) else: print "Server responded with a malformed packet" return False serverid = response if serverid != "-": try: url = ( "http://session.minecraft.net/game/joinserver.jsp?user="******"&sessionId=" + self.sessionID + "&serverId=" + serverid ) response = urllib2.urlopen(url).read() if response != "OK": if self.NoGUI == False: self.window.ConnectPanel.Status.SetFont( wx.Font(15, wx.MODERN, wx.NORMAL, wx.NORMAL, 0, "Minecraft") ) self.window.ConnectPanel.Status.SetLabel("Response from sessions.minecraft.net wasn't OK") else: print "Response from sessions.minecraft.net wasn't OK, it was " + response return False PacketListenerManager.sendLoginRequest(self.socket, self.username) if self.NoGUI == False: self.window.ConnectPanel.callbackAfterConnect() while not hasattr(self.window, "text"): continue PacketListener(self, self.window, self.socket, self.FileObject).start() except Exception, e: if self.NoGUI == False and hasattr(self.window, "ConnectPanel"): self.window.ConnectPanel.Status.SetForegroundColour(wx.RED) self.window.ConnectPanel.Status.SetLabel("Conection to sessions.mc.net failed") self.window.ConnectPanel.RotationThread.Kill = True else:
return False PacketListenerManager.sendLoginRequest(self.socket, self.username) if self.NoGUI == False: self.window.ConnectPanel.callbackAfterConnect() while not hasattr(self.window, "text"): continue PacketListener(self, self.window, self.socket, self.FileObject).start() except Exception, e: if self.NoGUI == False and hasattr(self.window, "ConnectPanel"): self.window.ConnectPanel.Status.SetForegroundColour(wx.RED) self.window.ConnectPanel.Status.SetLabel("Conection to sessions.mc.net failed") self.window.ConnectPanel.RotationThread.Kill = True else: if self.NoGUI: print "Server is in offline mode" PacketListenerManager.sendLoginRequest(self.socket, self.username) except Exception, e: if self.NoGUI == False and self.window: self.window.ConnectPanel.Status.SetForegroundColour(wx.RED) self.window.ConnectPanel.Status.SetLabel("Connection to server failed") self.window.ConnectPanel.RotationThread.Kill = True else: print "Connection to server failed" traceback.print_exc() return False # self.window.Status.SetLabel("Connected to " + self.server + "!") class PacketListener(threading.Thread): def __init__(self, connection, window, socket, FileObject): threading.Thread.__init__(self)