def encode_extra(packet): o = b'' if packet.data['action'] == mcdata.UE_INTERACT_AT: o += datautils.pack(MC_FLOAT, packet.data['target_x']) o += datautils.pack(MC_FLOAT, packet.data['target_y']) o += datautils.pack(MC_FLOAT, packet.data['target_z']) return o
def encode_extra(packet): o = b'' act = packet.data['action'] if act == mcdata.SO_CREATE_BOARD or act == mcdata.SO_UPDATE_BOARD: o += datautils.pack(MC_STRING, packet.data['obj_val']) o += datautils.pack(MC_STRING, packet.data['type']) return o
def encode_extra(packet): o = datautils.pack(MC_VARINT, len(packet.data['blocks'])) for block in packet.data['blocks']: o += datautils.pack(MC_USHORT, (block['y'] & 0xFF) + ((block['z'] & 0xF) << 8) + ((block['x'] & 0xF) << 12)) o += datautils.pack(MC_VARINT, block['block_data']) return o
def encode_extra(packet): o = datautils.pack(MC_BOOL, packet.data['sky_light']) o += datautils.pack(MC_VARINT, packet.data['metadata']) for metadata in packet.data['metadata']: o += datautils.pack(MC_INT, metadata['chunk_x']) o += datautils.pack(MC_INT, metadata['chunk_z']) o += datautils.pack(MC_USHORT, metadata['primary_bitmap']) o += packet.data['data'] return o
def encode_extra(packet): o = datautils.pack('int', len(packet.data['blocks'])) for block in packet.data['blocks']: for coord in block: o += datautils.pack('byte', coord) o += datautils.pack('float', packet.data['player_x']) o += datautils.pack('float', packet.data['player_y']) o += datautils.pack('float', packet.data['player_z']) return o
def encode_extra(packet): o = datautils.pack(MC_INT, len(packet.data['blocks'])) for block in packet.data['blocks']: for coord in block: o += datautils.pack(MC_BYTE, coord) o += datautils.pack(MC_FLOAT, packet.data['player_x']) o += datautils.pack(MC_FLOAT, packet.data['player_y']) o += datautils.pack(MC_FLOAT, packet.data['player_z']) return o
def encode_extra(packet): o = b'' act = packet.data['action'] if act == mcdata.TL_TITLE or act == mcdata.TL_SUBTITLE: o += datautils.pack(MC_CHAT, packet.data['text']) if act == mcdata.TL_TIMES: o += datautils.pack(MC_INT, packet.data['fade_in']) o += datautils.pack(MC_INT, packet.data['stay']) o += datautils.pack(MC_INT, packet.data['fade_out']) return o
def encode(self): #Ident o = datautils.pack('ubyte', self.__ident[2]) #Payload for dtype, name in mcdata.hashed_structs[self.__hashed_ident]: o += datautils.pack(dtype, self.data[name]) #Extension if self.__hashed_ident in hashed_extensions: o += hashed_extensions[self.__hashed_ident].encode_extra(self) return datautils.pack('varint', len(o)) + o
def encode_extra(packet): o = b'' if packet.data['event'] == mcdata.CE_END_COMBAT: o += datautils.pack(MC_VARINT, packet.data['duration']) o += datautils.pack(MC_INT, packet.data['eid']) if packet.data['event'] == mcdata.CE_ENTITY_DEAD: o += datautils.pack(MC_VARINT, packet.data['player_id']) o += datautils.pack(MC_INT, packet.data['eid']) o += datautils.pack(MC_STRING, packet.data['message']) return o
def encode_extra(packet): o = datautils.pack(MC_VARINT, len(packet.data['blocks'])) for block in packet.data['blocks']: o += datautils.pack(MC_USHORT, (block['y']&0xFF) + ((block['z']&0xF)<<8) + ((block['x']&0xF)<<12) ) o += datautils.pack(MC_VARINT, block['block_data']) return o
def encode_extra(self, packet): packet.data['data_size'] = len(packet.data['data']) append = packet.data['data'] for d in packet.data["bitmaps"]: append += pack('int', d['x']) append += pack('int', d['z']) append += pack('short', d['primary_bitmap']) append += pack('short', d['secondary_bitmap']) return append
def encode_extra(packet): o = datautils.pack(MC_SHORT, len(packet.data['blocks'])) o += datautils.pack(MC_INT, 4*len(packet.data['blocks'])) for block in packet.data['blocks']: o += datautils.pack(MC_UINT, block['metadata'] + (block['type']<<4) + (block['y'] << 16) + (block['z'] << 24) + (block['x'] << 28) ) return o
def encode_extra(packet): o = datautils.pack('short', len(packet.data['blocks'])) o += datautils.pack('int', 4*len(packet.data['blocks'])) for block in packet.data['blocks']: o += datautils.pack('uint', block['metadata'] + (block['type']<<4) + (block['y'] << 16) + (block['z'] << 24) + (block['x'] << 28) ) return o
def encode(self): #Ident o = datautils.pack(MC_VARINT, self.id) #Payload for dtype, name in mcdata.hashed_structs[self.__hashed_ident]: o += datautils.pack(dtype, self.data[name]) #Extension if self.__hashed_ident in hashed_extensions: o += hashed_extensions[self.__hashed_ident].encode_extra(self) self.length = len(o) return datautils.pack(MC_VARINT, self.length) + o
def encode(self): #Ident output = datautils.pack('ubyte', self.ident) #Extension if self.ident in mcpacket_extensions.extensions: append = mcpacket_extensions.extensions[self.ident].encode_extra(self) else: append = b'' #Payload for dtype, name in mcdata.structs[self.ident][self.direction]: output += datautils.pack(dtype, self.data[name]) return output + append
def encode(self, proto_comp_state, proto_comp_threshold, comp_level = 6): #Ident o = datautils.pack(MC_VARINT, self.ident[2]) #Payload for dtype, name in mcdata.hashed_structs[self.ident]: o += datautils.pack(dtype, self.data[name]) #Extension if self.ident in hashed_extensions: o += hashed_extensions[self.ident].encode_extra(self) if proto_comp_state == mcdata.PROTO_COMP_ON: uncompressed_len = len(o) if uncompressed_len < proto_comp_threshold: header = datautils.pack(MC_VARINT, uncompressed_len + 1) header += datautils.pack(MC_VARINT, 0) elif uncompressed_len >= proto_comp_threshold: o = zlib.compress(o, comp_level) ulen_varint = datautils.pack(MC_VARINT, uncompressed_len) header = datautils.pack(MC_VARINT, uncompressed_len + len(ulen_varint)) header += ulen_varint return header + o elif proto_comp_state == mcdata.PROTO_COMP_OFF: return datautils.pack(MC_VARINT, len(o)) + o else: return None
def encode(self, proto_comp_state, proto_comp_threshold, comp_level=6): #Ident o = datautils.pack(MC_VARINT, self.ident[2]) #Payload for dtype, name in mcdata.hashed_structs[self.ident]: o += datautils.pack(dtype, self.data[name]) #Extension if self.ident in hashed_extensions: o += hashed_extensions[self.ident].encode_extra(self) if proto_comp_state == mcdata.PROTO_COMP_ON: uncompressed_len = len(o) if uncompressed_len < proto_comp_threshold: header = datautils.pack(MC_VARINT, uncompressed_len + 1) header += datautils.pack(MC_VARINT, 0) elif uncompressed_len >= proto_comp_threshold: o = zlib.compress(o, comp_level) ulen_varint = datautils.pack(MC_VARINT, uncompressed_len) header = datautils.pack(MC_VARINT, uncompressed_len + len(ulen_varint)) header += ulen_varint return header + o elif proto_comp_state == mcdata.PROTO_COMP_OFF: return datautils.pack(MC_VARINT, len(o)) + o else: return None
def encode_extra(packet): o = datautils.pack(MC_VARINT, len(packet.data['icons'])) for icon in packet.data['icons']: byte = (packet.data['direction']<<8)|(packet.data['type']&0x0F) o += datautils.pack(MC_UBYTE, byte) o += datautils.pack(MC_BYTE, packet.data['x']) o += datautils.pack(MC_BYTE, packet.data['y']) o += datautils.pack(MC_BYTE, packet.data['columns']) if packet.data['columns']: o += datautils.pack(MC_BYTE, packet.data['rows']) o += datautils.pack(MC_BYTE, packet.data['x']) o += datautils.pack(MC_BYTE, packet.data['y']) o += datautils.pack(MC_VARINT, len(packet.data['data'])) o += packet.data['data'] return o
def encode_extra(packet): o = datautils.pack(MC_VARINT, len(packet.data['icons'])) for icon in packet.data['icons']: byte = (packet.data['direction'] << 8) | (packet.data['type'] & 0x0F) o += datautils.pack(MC_UBYTE, byte) o += datautils.pack(MC_BYTE, packet.data['x']) o += datautils.pack(MC_BYTE, packet.data['y']) o += datautils.pack(MC_BYTE, packet.data['columns']) if packet.data['columns']: o += datautils.pack(MC_BYTE, packet.data['rows']) o += datautils.pack(MC_BYTE, packet.data['x']) o += datautils.pack(MC_BYTE, packet.data['y']) o += datautils.pack(MC_VARINT, len(packet.data['data'])) o += packet.data['data'] return o
def encode_extra(packet): bbuff = utils.BoundBuffer() TAG_Byte(packet.data['nbt'].id)._render_buffer(bbuff) TAG_String(packet.data['nbt'].name)._render_buffer(bbuff) packet.data['nbt']._render_buffer(bbuff) compress = zlib.compressobj(wbits = 16+zlib.MAX_WBITS) data = compress.compress(bbuff.flush()) data += compress.flush() o = datautils.pack(MC_SHORT, len(data)) o += data return o
def encode_extra(packet): bbuff = utils.BoundBuffer() TAG_Byte(packet.data['nbt'].id)._render_buffer(bbuff) TAG_String(packet.data['nbt'].name)._render_buffer(bbuff) packet.data['nbt']._render_buffer(bbuff) compress = zlib.compressobj(wbits = 16+zlib.MAX_WBITS) data = compress.compress(bbuff.flush()) data += compress.flush() o = datautils.pack('short', len(data)) o += data return o
def encode_extra(self, packet): packet.data['record_count'] = len(packet.data['blocks']) array = [] for i in packet.data['blocks']: array += [i['x'], i['y'], i['z']] append = pack_array('byte', array) for i in range(3): append += pack('byte', d['offset_%d' % i]) return append
def encode_extra(self, packet): packet.data['record_count'] = len(packet.data['blocks']) packet.data['data_size'] = 4 * len(packet.data['blocks']) append = '' for block in packet.data['blocks']: append += pack('uint', (block['metadata'] ) + (block['type'] << 4) + (block['y'] << 16) + (block['z'] << 24) + (block['x'] << 28)) return append
def encode_extra(packet): data = zlib.compress(packet.data['data']) o = datautils.pack(MC_SHORT, len(packet.data['metadata'])) o += datautils.pack(MC_INT, len(data)) o += datautils.pack(MC_BOOL, packet.data['sky_light']) for metadata in packet.data['metadata']: o += datautils.pack(MC_INT, metadata['chunk_x']) o += datautils.pack(MC_INT, metadata['chunk_z']) o += datautils.pack(MC_USHORT, metadata['primary_bitmap']) o += datautils.pack(MC_USHORT, metadata['add_bitmap']) return o
def encode_extra(packet): data = zlib.compress(packet.data['data']) o = datautils.pack('short', len(packet.data['metadata'])) o += datautils.pack('int', len(data)) o += datautils.pack('bool', packet.data['sky_light']) for metadata in packet.data['metadata']: o += datautils.pack('int', metadata['chunk_x']) o += datautils.pack('int', metadata['chunk_z']) o += datautils.pack('ushort', metadata['primary_bitmap']) o += datautils.pack('ushort', metadata['add_bitmap']) return o
def encode_extra(packet): o = datautils.pack(MC_INT, len(packet.data['properties'])) for prop in packet.data['properties']: o += datautils.pack(MC_STRING, prop['key']) o += datautils.pack(MC_DOUBLE, prop['value']) o += datautils.pack(MC_SHORT, len(prop['modifiers'])) for modifier in prop['modifiers']: o += datautils.pack(MC_UUID, modifier['uuid']) o += datautils.pack(MC_DOUBLE, modifier['amount']) o += datautils.pack(MC_BYTE, modifier['operation']) return o
def encode_extra(packet): o = b'' act = packet.data['action'] if act == mcdata.WB_SET_SIZE: o += datautils.pack(MC_DOUBLE, packet.data['radius']) if act == mcdata.WB_SET_CENTER or act == mcdata.WB_INITIALIZE: o += datautils.pack(MC_DOUBLE, packet.data['x']) o += datautils.pack(MC_DOUBLE, packet.data['y']) if act == mcdata.WB_LERP_SIZE or act == mcdata.WB_INITIALIZE: o += datautils.pack(MC_DOUBLE, packet.data['old_radius']) o += datautils.pack(MC_DOUBLE, packet.data['new_radius']) o += datautils.pack(MC_VARLONG, packet.data['speed']) if act == mcdata.WB_INITIALIZE: o += datautils.pack(MC_VARINT, packet.data['port_tele_bound']) if act == mcdata.WB_SET_WARN_TIME or act == mcdata.WB_INITIALIZE: o += datautils.pack(MC_VARINT, packet.data['warn_time']) if act == mcdata.WB_SET_WARN_BLOCKS or act == mcdata.WB_INITIALIZE: o += datautils.pack(MC_VARINT, packet.data['warn_blocks']) return o
def encode_extra(packet): act = packet.data['action'] o = b'' if act == mcdata.TE_CREATE_TEAM or act == TE_UPDATE_TEAM: o += datautils.pack(MC_STRING, packet.data['display_name']) o += datautils.pack(MC_STRING, packet.data['team_prefix']) o += datautils.pack(MC_STRING, packet.data['team_suffix']) o += datautils.pack(MC_BYTE, packet.data['friendly_fire']) o += datautils.pack(MC_STRING, packet.data['name_visibility']) o += datautils.pack(MC_BYTE, packet.data['color']) if (act == mcdata.TE_CREATE_TEAM or act == mcdata.TE_ADDPLY_TEAM or act == mcdata.TE_REMPLY_TEAM): o += datautils.pack(MC_VARINT, len(packet.data['players'])) for player in packet.data['players']: o += datautils.pack(MC_STRING, player) return o
def encode_extra(packet): act = packet.data['action'] o = b'' if act in [mcdata.TE_CREATE_TEAM, mcdata.TE_UPDATE_TEAM]: o += datautils.pack(MC_STRING, packet.data['display_name']) o += datautils.pack(MC_STRING, packet.data['team_prefix']) o += datautils.pack(MC_STRING, packet.data['team_suffix']) o += datautils.pack(MC_BYTE, packet.data['friendly_fire']) o += datautils.pack(MC_STRING, packet.data['name_visibility']) o += datautils.pack(MC_BYTE, packet.data['color']) if act in [mcdata.TE_CREATE_TEAM, mcdata.TE_ADDPLY_TEAM, mcdata.TE_REMPLY_TEAM]: o += datautils.pack(MC_VARINT, len(packet.data['players'])) for player in packet.data['players']: o += datautils.pack(MC_STRING, player) return o
def encode_extra(packet): action = packet.data['action'] o = b'' if action == 0 or action == 2: o += datautils.pack(MC_STRING, packet.data['display_name']) o += datautils.pack(MC_STRING, packet.data['team_prefix']) o += datautils.pack(MC_STRING, packet.data['team_suffix']) o += datautils.pack(MC_BYTE, packet.data['friendly_fire']) o += datautils.pack(MC_STRING, packet.data['name_visibility']) if action == 0 or action == 3 or action == 4: o += datautils.pack(MC_VARINT, len(packet.data['players'])) for player in packet.data['players']: o += datautils.pack(MC_STRING, player) return o
def encode_extra(packet): mode = packet.data['mode'] o = b'' if mode == 0 or mode == 2: o += datautils.pack('string', packet.data['display_name']) o += datautils.pack('string', packet.data['team_prefix']) o += datautils.pack('string', packet.data['team_suffix']) o += datautils.pack('byte', packet.data['friendly_fire']) if mode == 0 or mode == 3 or mode == 4: o += datautils.pack('short', len(packet.data['players'])) for player in packet.data['players']: o += datautils.pack('string', player) return o
def encode_extra(packet): mode = packet.data['mode'] o = b'' if mode == 0 or mode == 2: o += datautils.pack(MC_STRING, packet.data['display_name']) o += datautils.pack(MC_STRING, packet.data['team_prefix']) o += datautils.pack(MC_STRING, packet.data['team_suffix']) o += datautils.pack(MC_BYTE, packet.data['friendly_fire']) if mode == 0 or mode == 3 or mode == 4: o += datautils.pack(MC_SHORT, len(packet.data['players'])) for player in packet.data['players']: o += datautils.pack(MC_STRING, player) return o
def encode_extra(packet): o = datautils.pack('int', len(packet.data['properties'])) for prop in packet.data['properties']: o += datautils.pack('string', prop['key']) o += datautils.pack('double', prop['value']) o += datautils.pack('short', len(prop['modifiers'])) for modifier in prop['modifiers']: o += struct.pack('>QQ', (modifier['uuid']>>64)&((1<<64)-1), modifier['uuid']&((1<<64)-1) ) o += datautils.pack('double', modifier['amount']) o += datautils.pack('byte', modifier['operation']) return o
def encode_extra(packet): o = datautils.pack(MC_INT, len(packet.data['properties'])) for prop in packet.data['properties']: o += datautils.pack(MC_STRING, prop['key']) o += datautils.pack(MC_DOUBLE, prop['value']) o += datautils.pack(MC_SHORT, len(prop['modifiers'])) for modifier in prop['modifiers']: o += struct.pack('>QQ', (modifier['uuid']>>64)&((1<<64)-1), modifier['uuid']&((1<<64)-1) ) o += datautils.pack(MC_DOUBLE, modifier['amount']) o += datautils.pack(MC_BYTE, modifier['operation']) return o
def encode_extra(packet): o = datautils.pack(MC_VARINT, len(packet.data['eids'])) for eid in packet.data['eids']: o += datautils.pack(MC_VARINT, eid) return o
def encode_extra(packet): if packet.data['obj_data']: o = datautils.pack(MC_SHORT, packet.data['speed_x']) o += datautils.pack(MC_SHORT, packet.data['speed_y']) o += datautils.pack(MC_SHORT, packet.data['speed_z']) return o
def encode_extra(packet): o = b'' if packet.data['has_position'] == True: datautils.pack(MC_POSITION, packet.data['block_loc']) return o
def encode_extra(packet): if packet.data['inv_type'] == 'EntityHorse': return datautils.pack(MC_INT, packet.data['eid'])
def encode_extra(packet): o = datautils.pack(MC_VARINT, len(packet.data['shared_secret'])) o += packet.data['shared_secret'] o += datautils.pack(MC_VARINT, len(packet.data['verify_token'])) o += packet.data['verify_token'] return o
def encode_extra(packet): o = b'' if packet.data['action'] == mcdata.US_UPDATE_SCORE: o += datautils.pack(MC_VARINT, packet.data['value']) return o
def encode_extra(packet): o = datautils.pack(MC_VARINT, len(packet.data['matches'])) for match in packet.data['matches']: o += datautils.pack(MC_STRING, match) return o
def encode_extra(packet): act = packet.data['action'] o = datautils.pack(MC_VARINT, len(packet.data['player_list'])) for item in packet.data['player_list']: o += datautils.pack(MC_UUID, item['uuid']) if act == mcdata.PL_ADD_PLAYER: o += datautils.pack(MC_STRING, item['name']) o += datautils.pack(MC_VARINT, len(item['properties'])) for prop in item['properties']: o += datautils.pack(MC_STRING, prop['name']) o += datautils.pack(MC_STRING, prop['value']) o += datautils.pack(MC_BOOL, prop['signed']) if prop['signed']: o += datautils.pack(MC_STRING, prop['signature']) if act == mcdata.PL_ADD_PLAYER or act == mcdata.PL_UPDATE_GAMEMODE: o += datautils.pack(MC_VARINT, item['gamemode']) if act == mcdata.PL_ADD_PLAYER or act == mcdata.PL_UPDATE_LATENCY: o += datautils.pack(MC_VARINT, item['ping']) if act == mcdata.PL_ADD_PLAYER or act == mcdata.PL_UPDATE_DISPLAY: o += datautils.pack(MC_BOOL, item['has_display']) if item['has_display']: o += datautils.pack(MC_CHAT, item['display_name']) return o
def encode_extra(packet): o = datautils.pack(MC_VARINT, len(packet.data['entries'])) for entry in packet.data['entries']: o += datautils.pack(MC_STRING, entry[0]) o += datautils.pack(MC_VARINT, entry[1]) return o
def encode_extra(packet): o = datautils.pack(MC_VARINT, len(packet.data['public_key'])) o += packet.data['public_key'] o += datautils.pack(MC_VARINT, len(packet.data['verify_token'])) o += packet.data['verify_token'] return o
def encode_extra(packet): o = datautils.pack(MC_SHORT, len(packet.data['slots'])) for slot in packet.data['slots']: o += datautils.pack(MC_SLOT, slot) return o