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:
def run(self): self.socket.setblocking(1) while True: try: response = self.socket.recv(1) except Exception, e: if self.window: self.window.Status.SetLabel("Ping timeout") else: print "Ping timeout" break # stdout.write((hex(ord(response[0]))) + ": ") if response[0] == "\x00": PacketListenerManager.handle00(self.FileObject, self.socket) if response[0] == "\x01": PacketListenerManager.handle01(self.FileObject) if response[0] == "\x03": message = PacketListenerManager.handle03(self.FileObject) if self.connection.NoGUI: print message.replace(u"\xa7", "&") elif self.window: self.window.handleChat(message) if response[0] == "\x04": PacketListenerManager.handle04(self.FileObject) if response[0] == "\x05": PacketListenerManager.handle05(self.FileObject) if response[0] == "\x06": PacketListenerManager.handle06(self.FileObject) if response[0] == "\x07": PacketListenerManager.handle07(self.FileObject) if response[0] == "\x08": PacketListenerManager.handle08(self.FileObject) if response[0] == "\x09": PacketListenerManager.handle09(self.FileObject) if response[0] == "\x0D": PacketListenerManager.handle0D(self.FileObject) if response[0] == "\x11": PacketListenerManager.handle11(self.FileObject) if response[0] == "\x12": PacketListenerManager.handle12(self.FileObject) if response[0] == "\x14": PacketListenerManager.handle14(self.FileObject) if response[0] == "\x15": PacketListenerManager.handle15(self.FileObject) if response[0] == "\x16": PacketListenerManager.handle16(self.FileObject) if response[0] == "\x17": PacketListenerManager.handle17(self.FileObject) if response[0] == "\x18": PacketListenerManager.handle18(self.FileObject) if response[0] == "\x19": PacketListenerManager.handle19(self.FileObject) if response[0] == "\x1A": PacketListenerManager.handle1A(self.FileObject) if response[0] == "\x1C": PacketListenerManager.handle1C(self.FileObject) if response[0] == "\x1D": PacketListenerManager.handle1D(self.FileObject) if response[0] == "\x1E": PacketListenerManager.handle1E(self.FileObject) if response[0] == "\x1F": PacketListenerManager.handle1F(self.FileObject) if response[0] == "\x20": PacketListenerManager.handle20(self.FileObject) if response[0] == "\x21": PacketListenerManager.handle21(self.FileObject) if response[0] == "\x22": PacketListenerManager.handle22(self.FileObject) if response[0] == "\x23": PacketListenerManager.handle23(self.FileObject) if response[0] == "\x26": PacketListenerManager.handle26(self.FileObject) if response[0] == "\x27": PacketListenerManager.handle27(self.FileObject) if response[0] == "\x28": PacketListenerManager.handle28(self.FileObject) if response[0] == "\x29": PacketListenerManager.handle29(self.FileObject) if response[0] == "\x2A": PacketListenerManager.handle2A(self.FileObject) if response[0] == "\x2B": PacketListenerManager.handle2B(self.FileObject) if response[0] == "\x32": PacketListenerManager.handle32(self.FileObject) if response[0] == "\x33": PacketListenerManager.handle33(self.FileObject) if response[0] == "\x34": PacketListenerManager.handle34(self.FileObject) if response[0] == "\x35": PacketListenerManager.handle35(self.FileObject) if response[0] == "\x36": PacketListenerManager.handle36(self.FileObject) if response[0] == "\x3C": PacketListenerManager.handle3C(self.FileObject) if response[0] == "\x3D": PacketListenerManager.handle3D(self.FileObject) if response[0] == "\x46": PacketListenerManager.handle46(self.FileObject) if response[0] == "\x47": PacketListenerManager.handle47(self.FileObject) if response[0] == "\x64": PacketListenerManager.handle64(self.FileObject) if response[0] == "\x65": PacketListenerManager.handle65(self.FileObject) if response[0] == "\x67": PacketListenerManager.handle67(self.FileObject) if response[0] == "\x68": PacketListenerManager.handle68(self.FileObject) if response[0] == "\x69": PacketListenerManager.handle69(self.FileObject) if response[0] == "\x6A": PacketListenerManager.handle6A(self.FileObject) if response[0] == "\x6B": PacketListenerManager.handle6B(self.FileObject) if response[0] == "\x82": PacketListenerManager.handle82(self.FileObject) if response[0] == "\x83": PacketListenerManager.handle83(self.FileObject) if response[0] == "\x84": PacketListenerManager.handle84(self.FileObject) if response[0] == "\xC8": PacketListenerManager.handleC8(self.FileObject) if response[0] == "\xC9": PacketListenerManager.handleC9(self.FileObject) if response[0] == "\xCA": PacketListenerManager.handleCA(self.FileObject) if response[0] == "\xFA": PacketListenerManager.handleFA(self.FileObject) if response[0] == "\xFF": DisconMessage = PacketListenerManager.handleFF(self.FileObject) if self.window == None: print "Disconnected: " + DisconMessage elif self.window: if hasattr(self.window, "ChatPanel"): self.window.ChatPanel.Status.SetLabel("Disconnected: " + DisconMessage) elif hasattr(self.window, "Status"): self.window.Status.SetLabel("Disconnected: " + DisconMessage) self.socket.close() break
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)