def decode(self, bbuff, proto_comp_state): self.data = {} if proto_comp_state == mcdata.PROTO_COMP_ON: packet_length = datautils.unpack(MC_VARINT, bbuff) start = bbuff.tell() data_length = datautils.unpack(MC_VARINT, bbuff) packet_data = bbuff.recv(packet_length-(bbuff.tell()-start)) if data_length: packet_data = zlib.decompress(packet_data, zlib.MAX_WBITS) elif proto_comp_state == mcdata.PROTO_COMP_OFF: packet_data = bbuff.recv(datautils.unpack(MC_VARINT, bbuff)) else: return None pbuff = utils.BoundBuffer(packet_data) try: #Ident self.__ident[2] = datautils.unpack(MC_VARINT, pbuff) self.ident = tuple(self.__ident) self.str_ident = mcdata.packet_ident2str[self.ident] #Payload for dtype, name in mcdata.hashed_structs[self.ident]: self.data[name] = datautils.unpack(dtype, pbuff) #Extension if self.ident in hashed_extensions: hashed_extensions[self.ident].decode_extra(self, pbuff) if pbuff.buff: raise PacketDecodeFailure(self, pbuff) except utils.BufferUnderflowException: raise PacketDecodeFailure(self, pbuff, True) return self
def decode(self, bbuff): self.data = {} self.length = datautils.unpack(MC_VARINT, bbuff) encoded = bbuff.recv(self.length) try: pbuff = utils.BoundBuffer(encoded) #Ident self.id = datautils.unpack(MC_VARINT, pbuff) self.__hash_ident() #Payload for dtype, name in mcdata.hashed_structs[self.__hashed_ident]: try: self.data[name] = datautils.unpack(dtype, pbuff) except BufferUnderflowException: raise Exception("Failed to parse field {0}:{1} from packet {2}".format(name, dtype, repr(self))) #Extension if self.__hashed_ident in hashed_extensions: hashed_extensions[self.__hashed_ident].decode_extra(self, pbuff) return self except BufferUnderflowException: raise Exception("Failed to parse packet: ", repr(self))
def decode(self, bbuff, proto_comp_state): self.data = {} packet_length = datautils.unpack(MC_VARINT, bbuff) packet_data = bbuff.recv(packet_length) pbuff = utils.BoundBuffer(packet_data) if proto_comp_state == mcdata.PROTO_COMP_ON: body_length = datautils.unpack(MC_VARINT, pbuff) if body_length > 0: body_data = zlib.decompress(pbuff.flush(), zlib.MAX_WBITS) pbuff.write(body_data) pbuff.save() try: # Ident self.__ident[2] = datautils.unpack(MC_VARINT, pbuff) self.ident = tuple(self.__ident) self.str_ident = mcdata.packet_ident2str[self.ident] # Payload for dtype, name in mcdata.hashed_structs[self.ident]: self.data[name] = datautils.unpack(dtype, pbuff) # Extension if self.ident in hashed_extensions: hashed_extensions[self.ident].decode_extra(self, pbuff) if len(pbuff) > 0: raise PacketDecodeFailure(self, pbuff) except utils.BufferUnderflowException: raise PacketDecodeFailure(self, pbuff, True) return self
def decode(self, bbuff, proto_comp_state): self.data = {} if proto_comp_state == mcdata.PROTO_COMP_ON: packet_length = datautils.unpack(MC_VARINT, bbuff) start = bbuff.tell() data_length = datautils.unpack(MC_VARINT, bbuff) packet_data = bbuff.recv(packet_length - (bbuff.tell() - start)) if data_length: packet_data = zlib.decompress(packet_data, zlib.MAX_WBITS) elif proto_comp_state == mcdata.PROTO_COMP_OFF: packet_data = bbuff.recv(datautils.unpack(MC_VARINT, bbuff)) else: return None pbuff = utils.BoundBuffer(packet_data) # Ident self.__ident[2] = datautils.unpack(MC_VARINT, pbuff) self.__hashed_ident = tuple(self.__ident) # Payload for dtype, name in mcdata.hashed_structs[self.__hashed_ident]: self.data[name] = datautils.unpack(dtype, pbuff) # Extension if self.__hashed_ident in hashed_extensions: hashed_extensions[self.__hashed_ident].decode_extra(self, pbuff) return self
def decode_extra(packet, bbuff): packet.data['entries'] = [ [ datautils.unpack(MC_STRING, bbuff), datautils.unpack(MC_VARINT, bbuff) ] for _ in range(datautils.unpack(MC_VARINT, bbuff))] return packet
def decode(self, bbuff, proto_comp_state): self.data = {} if proto_comp_state == mcdata.PROTO_COMP_ON: packet_length = datautils.unpack(MC_VARINT, bbuff) start = bbuff.tell() data_length = datautils.unpack(MC_VARINT, bbuff) packet_data = bbuff.recv(packet_length-(bbuff.tell()-start)) if data_length: packet_data = zlib.decompress(packet_data, zlib.MAX_WBITS) elif proto_comp_state == mcdata.PROTO_COMP_OFF: packet_data = bbuff.recv(datautils.unpack(MC_VARINT, bbuff)) else: return None pbuff = utils.BoundBuffer(packet_data) try: #Ident self.__ident[2] = datautils.unpack(MC_VARINT, pbuff) self.ident = tuple(self.__ident) self.str_ident = mcdata.packet_ident2str[self.ident] #Payload for dtype, name in mcdata.hashed_structs[self.ident]: self.data[name] = datautils.unpack(dtype, pbuff) #Extension if self.ident in hashed_extensions: hashed_extensions[self.ident].decode_extra(self, pbuff) #Not technically an underflow, but we want to do the same thing if pbuff.flush(): raise utils.BufferUnderflowException except utils.BufferUnderflowException: print('Packet decode failed') print('Failed packet ident is probably:', self.str_ident) return None return self
def decode(self, bbuff, proto_comp_state): self.data = {} if proto_comp_state == mcdata.PROTO_COMP_ON: packet_length = datautils.unpack(MC_VARINT, bbuff) start = bbuff.tell() data_length = datautils.unpack(MC_VARINT, bbuff) packet_data = bbuff.recv(packet_length - (bbuff.tell() - start)) if data_length: packet_data = zlib.decompress(packet_data, zlib.MAX_WBITS) elif proto_comp_state == mcdata.PROTO_COMP_OFF: packet_data = bbuff.recv(datautils.unpack(MC_VARINT, bbuff)) else: return None pbuff = utils.BoundBuffer(packet_data) try: #Ident self.__ident[2] = datautils.unpack(MC_VARINT, pbuff) self.ident = tuple(self.__ident) self.str_ident = mcdata.packet_ident2str[self.ident] #Payload for dtype, name in mcdata.hashed_structs[self.ident]: self.data[name] = datautils.unpack(dtype, pbuff) #Extension if self.ident in hashed_extensions: hashed_extensions[self.ident].decode_extra(self, pbuff) #Not technically an underflow, but we want to do the same thing if pbuff.flush(): raise utils.BufferUnderflowException except utils.BufferUnderflowException: print('Packet decode failed') print('Failed packet ident is probably:', self.str_ident) return None return self
def decode_extra(packet, bbuff): packet.data['blocks'] = [ [datautils.unpack('byte', bbuff) for j in range(3)] for i in range(datautils.unpack('int', bbuff))] packet.data['player_x'] = datautils.unpack('float', bbuff) packet.data['player_y'] = datautils.unpack('float', bbuff) packet.data['player_z'] = datautils.unpack('float', bbuff) return packet
def decode_extra(packet, bbuff): packet.data['blocks'] = [[ datautils.unpack(MC_BYTE, bbuff) for j in range(3) ] for i in range(datautils.unpack(MC_INT, bbuff))] packet.data['player_x'] = datautils.unpack(MC_FLOAT, bbuff) packet.data['player_y'] = datautils.unpack(MC_FLOAT, bbuff) packet.data['player_z'] = datautils.unpack(MC_FLOAT, bbuff) return packet
def decode_extra(packet, bbuff): packet.data['blocks'] = [ [datautils.unpack(MC_BYTE, bbuff) for j in range(3)] for i in range(datautils.unpack(MC_INT, bbuff))] packet.data['player_x'] = datautils.unpack(MC_FLOAT, bbuff) packet.data['player_y'] = datautils.unpack(MC_FLOAT, bbuff) packet.data['player_z'] = datautils.unpack(MC_FLOAT, bbuff) return packet
def decode_extra(packet, bbuff): if packet.data['event'] == mcdata.CE_END_COMBAT: packet.data['duration'] = datautils.unpack(MC_VARINT, bbuff) packet.data['eid'] = datautils.unpack(MC_INT, bbuff) if packet.data['event'] == mcdata.CE_ENTITY_DEAD: packet.data['player_id'] = datautils.unpack(MC_VARINT, bbuff) packet.data['eid'] = datautils.unpack(MC_INT, bbuff) packet.data['message'] = datautils.unpack(MC_STRING, bbuff) return packet
def decode_extra(packet, bbuff): act = packet.data['action'] if act == mcdata.TL_TITLE or act == mcdata.TL_SUBTITLE: packet.data['text'] = datautils.unpack(MC_CHAT, bbuff) if act == mcdata.TL_TIMES: packet.data['fade_in'] = datautils.unpack(MC_INT, bbuff) packet.data['stay'] = datautils.unpack(MC_INT, bbuff) packet.data['fade_out'] = datautils.unpack(MC_INT, bbuff) return packet
def decode_extra(packet, bbuff): data = bbuff.recv(datautils.unpack('short', bbuff)) data = utils.BoundBuffer(zlib.decompress(data, 16+zlib.MAX_WBITS)) assert(datautils.unpack('byte', data) == nbt.TAG_COMPOUND) name = nbt.TAG_String(buffer = data) nbt_data = nbt.TAG_Compound(buffer = data) nbt_data.name = name packet.data['nbt'] = nbt_data return packet
def decode_extra(packet, bbuff): data = bbuff.recv(datautils.unpack(MC_SHORT, bbuff)) data = utils.BoundBuffer(zlib.decompress(data, 16+zlib.MAX_WBITS)) assert(datautils.unpack(MC_BYTE, data) == nbt.TAG_COMPOUND) name = nbt.TAG_String(buffer = data) nbt_data = nbt.TAG_Compound(buffer = data) nbt_data.name = name packet.data['nbt'] = nbt_data return packet
def decode_extra(self, packet, bbuff): if packet.data['mode'] == 0 or packet.data['mode'] == 2: packet.data['display_name'] = unpack(bbuff, 'string') packet.data['team_prefix'] = unpack(bbuff, 'string') packet.data['team_suffix'] = unpack(bbuff, 'string') if packet.data['mode'] == 0 or packet.data['mode'] == 3 or packet.data['mode'] == 4: packet.data['player_count'] = count = unpack(bbuff, 'short') packet.data['players'] = [] for i in xrange(count): packet.data['players'].append(unpack(bbuff, 'string'))
def decode_extra(packet, bbuff): sky_light = datautils.unpack(MC_BOOL, bbuff) count = datautils.unpack(MC_VARINT, bbuff) packet.data['sky_light'] = sky_light packet.data['metadata'] = [{ 'chunk_x': datautils.unpack(MC_INT, bbuff), 'chunk_z': datautils.unpack(MC_INT, bbuff), 'primary_bitmap': datautils.unpack(MC_USHORT, bbuff), } for i in range(count)] packet.data['data'] = bbuff.flush() return packet
def decode_extra(packet, bbuff): packet.data['blocks'] = [] for i in range(datautils.unpack(MC_VARINT, bbuff)): data = datautils.unpack(MC_USHORT, bbuff) packet.data['blocks'].append({ 'y': data&0xFF, 'z': (data>>8)&0xF, 'x': (data>>12)&0xF, 'block_data': datautils.unpack(MC_VARINT, bbuff), }) return packet
def decode_extra(self, packet, bbuff): packet.data["data"] = bbuff.recv(packet.data['data_size']) packet.data["bitmaps"] = [] for i in range(packet.data['chunk_column_count']): d = {} d['x'] = unpack(bbuff, 'int') d['z'] = unpack(bbuff, 'int') d['primary_bitmap'] = unpack(bbuff, 'short') d['secondary_bitmap'] = unpack(bbuff, 'short') packet.data["bitmaps"].append(d) del packet.data["data_size"]
def decode(self, bbuff): self.data = {} pbuff = utils.BoundBuffer(bbuff.recv(datautils.unpack('varint', bbuff))) #Ident self.__ident[2] = datautils.unpack('ubyte', pbuff) self.__hashed_ident = tuple(self.__ident) #Payload for dtype, name in mcdata.hashed_structs[self.__hashed_ident]: self.data[name] = datautils.unpack(dtype, pbuff) #Extension if self.__hashed_ident in hashed_extensions: hashed_extensions[self.__hashed_ident].decode_extra(self, pbuff) return self
def decode(self, bbuff): #Ident self.ident = datautils.unpack(bbuff, 'ubyte') #print hex(self.ident) #Payload for dtype, name in mcdata.structs[self.ident][self.direction]: self.data[name] = datautils.unpack(bbuff, dtype) #Extension if self.ident in mcpacket_extensions.extensions: mcpacket_extensions.extensions[self.ident].decode_extra(self, bbuff)
def decode_extra(packet, bbuff): packet.data['blocks'] = [] for i in range(datautils.unpack(MC_VARINT, bbuff)): data = datautils.unpack(MC_USHORT, bbuff) packet.data['blocks'].append({ 'y': data & 0xFF, 'z': (data >> 8) & 0xF, 'x': (data >> 12) & 0xF, 'block_data': datautils.unpack(MC_VARINT, bbuff), }) return packet
def decode_extra(packet, bbuff): count = datautils.unpack(MC_SHORT, bbuff) assert(datautils.unpack(MC_INT, bbuff) == 4*count) packet.data['blocks'] = [] for i in range(count): data = datautils.unpack(MC_UINT, bbuff) packet.data['blocks'].append({ 'metadata': (data )&0xF, 'block_id': (data>> 4)&0xFFF, 'y': (data>>16)&0xFF, 'z': (data>>24)&0xF, 'x': (data>>28)&0xF, }) return packet
def decode_extra(packet, bbuff): count = datautils.unpack('short', bbuff) assert(datautils.unpack('int', bbuff) == 4*count) packet.data['blocks'] = [] for i in range(count): data = datautils.unpack('uint', bbuff) packet.data['blocks'].append({ 'metadata': (data )&0xF, 'block_id': (data>> 4)&0xFFF, 'y': (data>>16)&0xFF, 'z': (data>>24)&0xF, 'x': (data>>28)&0xF, }) return packet
def decode_extra(packet, bbuff): assert(datautils.unpack(MC_BYTE, bbuff) == nbt.TAG_COMPOUND) name = nbt.TAG_String(buffer = bbuff) nbt_data = nbt.TAG_Compound(buffer = bbuff) nbt_data.name = name packet.data['nbt'] = nbt_data return packet
def decode_extra(packet, bbuff): assert (datautils.unpack(MC_BYTE, bbuff) == nbt.TAG_COMPOUND) name = nbt.TAG_String(buffer=bbuff) nbt_data = nbt.TAG_Compound(buffer=bbuff) nbt_data.name = name packet.data['nbt'] = nbt_data return packet
def decode_extra(packet, bbuff): tag_type = datautils.unpack(MC_BYTE, bbuff) if tag_type == nbt.TAG_COMPOUND: name = nbt.TAG_String(buffer=bbuff).value nbt_data = nbt.TAG_Compound(buffer=bbuff) nbt_data.name = name packet.data['nbt'] = nbt_data else: assert (tag_type == nbt.TAG_END) packet.data['nbt'] = None return packet
def decode_extra(packet, bbuff): tag_type = datautils.unpack(MC_BYTE, bbuff) if tag_type == nbt.TAG_COMPOUND: name = nbt.TAG_String(buffer = bbuff).value nbt_data = nbt.TAG_Compound(buffer = bbuff) nbt_data.name = name packet.data['nbt'] = nbt_data else: assert(tag_type == nbt.TAG_END) packet.data['nbt'] = None return packet
def decode_extra(packet, bbuff): packet.data['icons'] = [] for i in range(datautils.unpack(MC_VARINT, bbuff)): byte = datautils.unpack(MC_UBYTE, bbuff) packet.data['icons'].append({ 'direction': byte>>8, 'type': byte&0x0F, 'x': datautils.unpack(MC_BYTE, bbuff), 'y': datautils.unpack(MC_BYTE, bbuff), }) packet.data['columns'] = datautils.unpack(MC_BYTE, bbuff) if packet.data['columns']: packet.data['rows'] = datautils.unpack(MC_BYTE, bbuff) packet.data['x'] = datautils.unpack(MC_BYTE, bbuff) packet.data['y'] = datautils.unpack(MC_BYTE, bbuff) packet.data['data'] = bbuff.recv(datautils.unpack(MC_VARINT, bbuff)) return packet
def decode_extra(self, packet, bbuff): packet.data["blocks"] = [] for i in range(packet.data['record_count']): data = unpack(bbuff, 'uint') block = { 'metadata': (data ) & 0xF, 'type': (data >> 4) & 0xFFF, 'y': (data >> 16) & 0xFF, 'z': (data >> 24) & 0xF, 'x': (data >> 28) & 0xF} packet.data["blocks"].append(block) del packet.data["data_size"]
def decode_extra(self, packet, bbuff): records = unpack_array(bbuff, 'byte', packet.data['record_count']*3) i = 0 packet.data["blocks"] = [] while i < packet.data['record_count']*3: packet.data["blocks"].append(dict(zip(('x','y','z'), records[i:i+3]))) i+=3 del packet.data["record_count"] for i in range(3): packet.data["offset_%d" % i] = unpack(bbuff, 'float')
def decode_extra(packet, bbuff): act = packet.data['action'] if act == mcdata.WB_SET_SIZE: packet.data['radius'] = datautils.unpack(MC_VARINT, bbuff) if act == mcdata.WB_SET_CENTER or act == mcdata.WB_INITIALIZE: packet.data['x'] = datautils.unpack(MC_DOUBLE, bbuff) packet.data['z'] = datautils.unpack(MC_DOUBLE, bbuff) if act == mcdata.WB_LERP_SIZE or act == mcdata.WB_INITIALIZE: packet.data['old_radius'] = datautils.unpack(MC_DOUBLE, bbuff) packet.data['new_radius'] = datautils.unpack(MC_DOUBLE, bbuff) packet.data['speed'] = datautils.unpack(MC_VARLONG, bbuff) if act == mcdata.WB_INITIALIZE: packet.data['port_tele_bound'] = datautils.unpack(MC_VARINT, bbuff) if act == mcdata.WB_SET_WARN_TIME or act == mcdata.WB_INITIALIZE: packet.data['warn_time'] = datautils.unpack(MC_VARINT, bbuff) if act == mcdata.WB_SET_WARN_BLOCKS or act == mcdata.WB_INITIALIZE: packet.data['warn_blocks'] = datautils.unpack(MC_VARINT, bbuff) return packet
def decode_extra(packet, bbuff): packet.data['icons'] = [] for i in range(datautils.unpack(MC_VARINT, bbuff)): byte = datautils.unpack(MC_UBYTE, bbuff) packet.data['icons'].append({ 'direction': byte >> 8, 'type': byte & 0x0F, 'x': datautils.unpack(MC_BYTE, bbuff), 'y': datautils.unpack(MC_BYTE, bbuff), }) packet.data['columns'] = datautils.unpack(MC_BYTE, bbuff) if packet.data['columns']: packet.data['rows'] = datautils.unpack(MC_BYTE, bbuff) packet.data['x'] = datautils.unpack(MC_BYTE, bbuff) packet.data['y'] = datautils.unpack(MC_BYTE, bbuff) packet.data['data'] = bbuff.recv(datautils.unpack( MC_VARINT, bbuff)) return packet
def decode_extra(packet, bbuff): act = packet.data['action'] if act in [mcdata.TE_CREATE_TEAM, mcdata.TE_UPDATE_TEAM]: packet.data['display_name'] = datautils.unpack(MC_STRING, bbuff) packet.data['team_prefix'] = datautils.unpack(MC_STRING, bbuff) packet.data['team_suffix'] = datautils.unpack(MC_STRING, bbuff) packet.data['friendly_fire'] = datautils.unpack(MC_BYTE, bbuff) packet.data['name_visibility'] = datautils.unpack(MC_STRING, bbuff) packet.data['color'] = datautils.unpack(MC_BYTE, bbuff) if act in [mcdata.TE_CREATE_TEAM, mcdata.TE_ADDPLY_TEAM, mcdata.TE_REMPLY_TEAM]: packet.data['players'] = [ datautils.unpack(MC_STRING, bbuff) for _ in range(datautils.unpack(MC_VARINT, bbuff))] return packet
def decode_extra(packet, bbuff): count = datautils.unpack(MC_SHORT, bbuff) size = datautils.unpack(MC_INT, bbuff) packet.data['sky_light'] = datautils.unpack(MC_BOOL, bbuff) packet.data['data'] = zlib.decompress(bbuff.recv(size)) packet.data['metadata'] = [{ 'chunk_x': datautils.unpack(MC_INT, bbuff), 'chunk_z': datautils.unpack(MC_INT, bbuff), 'primary_bitmap': datautils.unpack(MC_USHORT, bbuff), 'add_bitmap': datautils.unpack(MC_USHORT, bbuff), } for i in range(count)] return packet
def decode_extra(packet, bbuff): count = datautils.unpack('short', bbuff) size = datautils.unpack('int', bbuff) packet.data['sky_light'] = datautils.unpack('bool', bbuff) packet.data['data'] = zlib.decompress(bbuff.recv(size)) packet.data['metadata'] = [{ 'chunk_x': datautils.unpack('int', bbuff), 'chunk_z': datautils.unpack('int', bbuff), 'primary_bitmap': datautils.unpack('ushort', bbuff), 'add_bitmap': datautils.unpack('ushort', bbuff), } for i in range(count)] return packet
def decode_extra(packet, bbuff): act = packet.data['action'] if act == mcdata.TE_CREATE_TEAM or act == mcdata.TE_UPDATE_TEAM: packet.data['display_name'] = datautils.unpack(MC_STRING, bbuff) packet.data['team_prefix'] = datautils.unpack(MC_STRING, bbuff) packet.data['team_suffix'] = datautils.unpack(MC_STRING, bbuff) packet.data['friendly_fire'] = datautils.unpack(MC_BYTE, bbuff) packet.data['name_visibility'] = datautils.unpack(MC_STRING, bbuff) packet.data['color'] = datautils.unpack(MC_BYTE, bbuff) if (act == mcdata.TE_CREATE_TEAM or act == mcdata.TE_ADDPLY_TEAM or act == mcdata.TE_REMPLY_TEAM): packet.data['players'] = [ datautils.unpack(MC_STRING, bbuff) for i in range(datautils.unpack(MC_VARINT, bbuff)) ] return packet
def decode_extra(packet, bbuff): action = packet.data['action'] if action == 0 or action == 2: packet.data['display_name'] = datautils.unpack(MC_STRING, bbuff) packet.data['team_prefix'] = datautils.unpack(MC_STRING, bbuff) packet.data['team_suffix'] = datautils.unpack(MC_STRING, bbuff) packet.data['friendly_fire'] = datautils.unpack(MC_BYTE, bbuff) packet.data['name_visibility'] = datautils.unpack(MC_STRING, bbuff) if action == 0 or action == 3 or action == 4: packet.data['players'] = [ datautils.unpack(MC_STRING, bbuff) for i in range(datautils.unpack(MC_VARINT, bbuff))] return packet
def decode_extra(packet, bbuff): action = packet.data['action'] if action == 0 or action == 2: packet.data['display_name'] = datautils.unpack(MC_STRING, bbuff) packet.data['team_prefix'] = datautils.unpack(MC_STRING, bbuff) packet.data['team_suffix'] = datautils.unpack(MC_STRING, bbuff) packet.data['friendly_fire'] = datautils.unpack(MC_BYTE, bbuff) packet.data['name_visibility'] = datautils.unpack(MC_STRING, bbuff) if action == 0 or action == 3 or action == 4: packet.data['players'] = [ datautils.unpack(MC_STRING, bbuff) for i in range(datautils.unpack(MC_VARINT, bbuff)) ] return packet
def decode_extra(packet, bbuff): mode = packet.data['mode'] if mode == 0 or mode == 2: packet.data['display_name'] = datautils.unpack(MC_STRING, bbuff) packet.data['team_prefix'] = datautils.unpack(MC_STRING, bbuff) packet.data['team_suffix'] = datautils.unpack(MC_STRING, bbuff) packet.data['friendly_fire'] = datautils.unpack(MC_BYTE, bbuff) if mode == 0 or mode == 3 or mode == 4: packet.data['players'] = [ datautils.unpack(MC_STRING, bbuff) for i in range(datautils.unpack(MC_SHORT, bbuff))] return packet
def decode_extra(packet, bbuff): mode = packet.data['mode'] if mode == 0 or mode == 2: packet.data['display_name'] = datautils.unpack('string', bbuff) packet.data['team_prefix'] = datautils.unpack('string', bbuff) packet.data['team_suffix'] = datautils.unpack('string', bbuff) packet.data['friendly_fire'] = datautils.unpack('byte', bbuff) if mode == 0 or mode == 3 or mode == 4: packet.data['players'] = [ datautils.unpack('string', bbuff) for i in range(datautils.unpack('short', bbuff))] return packet
def decode_extra(packet, bbuff): packet.data['properties'] = [] for i in range(datautils.unpack(MC_INT, bbuff)): prop = { 'key': datautils.unpack(MC_STRING, bbuff), 'value': datautils.unpack(MC_DOUBLE, bbuff), 'modifiers': [], } for j in range(datautils.unpack(MC_VARINT, bbuff)): prop['modifiers'].append({ 'uuid': datautils.unpack(MC_UUID, bbuff), 'amount': datautils.unpack(MC_DOUBLE, bbuff), 'operation': datautils.unpack(MC_BYTE, bbuff), }) packet.data['properties'].append(prop) return packet
def decode_extra(packet, bbuff): packet.data['properties'] = [] for i in range(datautils.unpack(MC_INT, bbuff)): prop = { 'key': datautils.unpack(MC_STRING, bbuff), 'value': datautils.unpack(MC_DOUBLE, bbuff), 'modifiers': [], } for j in range(datautils.unpack(MC_SHORT, bbuff)): a, b = struct.unpack('>QQ', bbuff.recv(16)) prop['modifiers'].append({ 'uuid': (a<<64)|b, 'amount': datautils.unpack(MC_DOUBLE, bbuff), 'operation': datautils.unpack(MC_BYTE, bbuff), }) packet.data['properties'].append(prop) return packet
def decode_extra(packet, bbuff): length = datautils.unpack(MC_VARINT, bbuff) packet.data['shared_secret'] = bbuff.recv(length) length = datautils.unpack(MC_VARINT, bbuff) packet.data['verify_token'] = bbuff.recv(length) return packet
def decode_extra(packet, bbuff): if packet.data['action'] == mcdata.US_UPDATE_SCORE: packet.data['value'] = datautils.unpack(MC_VARINT, bbuff) return packet
def decode_extra(packet, bbuff): packet.data['matches'] = [ datautils.unpack(MC_STRING, bbuff) for i in range(datautils.unpack(MC_VARINT, bbuff)) ] return packet
def decode_extra(packet, bbuff): act = packet.data['action'] packet.data['player_list'] = [] for i in range(datautils.unpack(MC_VARINT, bbuff)): item = {'uuid': datautils.unpack(MC_UUID, bbuff)} if act == mcdata.PL_ADD_PLAYER: item['name'] = datautils.unpack(MC_STRING, bbuff) item['properties'] = [] for i in range(datautils.unpack(MC_VARINT, bbuff)): prop = { 'name': datautils.unpack(MC_STRING, bbuff), 'value': datautils.unpack(MC_STRING, bbuff), 'signed': datautils.unpack(MC_BOOL, bbuff), } if prop['signed']: prop['signature'] = datautils.unpack(MC_STRING, bbuff) item['properties'].append(prop) if act == mcdata.PL_ADD_PLAYER or act == mcdata.PL_UPDATE_GAMEMODE: item['gamemode'] = datautils.unpack(MC_VARINT, bbuff) if act == mcdata.PL_ADD_PLAYER or act == mcdata.PL_UPDATE_LATENCY: item['ping'] = datautils.unpack(MC_VARINT, bbuff) if act == mcdata.PL_ADD_PLAYER or act == mcdata.PL_UPDATE_DISPLAY: item['has_display'] = datautils.unpack(MC_BOOL, bbuff) if item['has_display']: item['display_name'] = datautils.unpack(MC_CHAT, bbuff) packet.data['player_list'].append(item)
def decode_extra(packet, bbuff): if packet.data['obj_data']: packet.data['speed_x'] = datautils.unpack(MC_SHORT, bbuff) packet.data['speed_y'] = datautils.unpack(MC_SHORT, bbuff) packet.data['speed_z'] = datautils.unpack(MC_SHORT, bbuff) return packet
def decode_extra(packet, bbuff): length = datautils.unpack(MC_VARINT, bbuff) packet.data['public_key'] = bbuff.recv(length) length = datautils.unpack(MC_VARINT, bbuff) packet.data['verify_token'] = bbuff.recv(length) return packet
def decode_extra(packet, bbuff): if packet.data['action'] == mcdata.UE_INTERACT_AT: packet.data['target_x'] = datautils.unpack(MC_FLOAT, bbuff) packet.data['target_y'] = datautils.unpack(MC_FLOAT, bbuff) packet.data['target_z'] = datautils.unpack(MC_FLOAT, bbuff) return packet
def decode_extra(packet, bbuff): if packet.data['has_position'] == True: packet.data['block_loc'] = datautils.unpack(MC_POSITION, bbuff) return packet
def decode_extra(packet, bbuff): act = packet.data['action'] if act == mcdata.SO_CREATE_BOARD or act == mcdata.SO_UPDATE_BOARD: packet.data['obj_val'] = datautils.unpack(MC_STRING, bbuff) packet.data['type'] = datautils.unpack(MC_STRING, bbuff) return packet
def decode_extra(packet, bbuff): count = datautils.unpack(MC_VARINT, bbuff) packet.data['eids'] = [ datautils.unpack(MC_VARINT, bbuff) for i in range(count) ] return packet
def decode_extra(packet, bbuff): packet.data['entries'] = [[ datautils.unpack(MC_STRING, bbuff), datautils.unpack(MC_VARINT, bbuff) ] for i in range(datautils.unpack(MC_VARINT, bbuff))] return packet