def test_face_player_packet(self): for protocol_version in TEST_VERSIONS: context = ConnectionContext(protocol_version=protocol_version) packet = clientbound.play.FacePlayerPacket(context) packet.target = 1.0, -2.0, 3.5 packet.entity_id = None if context.protocol_later_eq(353): packet.origin = OriginPoint.EYES self.assertEqual( str(packet), "0x%02X FacePlayerPacket(origin=EYES, x=1.0, y=-2.0, z=3.5, " "entity_id=None)" % packet.id if context.protocol_later_eq(353) else "0x%02X FacePlayerPacket(entity_id=None, x=1.0, y=-2.0, z=3.5)" % packet.id) self._test_read_write_packet(packet, context) packet.entity_id = 123 if context.protocol_later_eq(353): packet.entity_origin = OriginPoint.FEET else: del packet.target self.assertEqual( str(packet), "0x%02X FacePlayerPacket(origin=EYES, x=1.0, y=-2.0, z=3.5, " "entity_id=123, entity_origin=FEET)" % packet.id if context.protocol_later_eq(353) else "0x%02X FacePlayerPacket(entity_id=123)" % packet.id) self._test_read_write_packet(packet, context)
def test_multi_block_change_packet(self): Record = clientbound.play.MultiBlockChangePacket.Record for protocol_version in TEST_VERSIONS: context = ConnectionContext() context.protocol_version = protocol_version packet = clientbound.play.MultiBlockChangePacket(context) if context.protocol_later_eq(741): packet.chunk_section_pos = Vector(167, 17, 33) packet.invert_trust_edges = False else: packet.chunk_x, packet.chunk_z = 167, 17 self.assertEqual(packet.chunk_pos, (167, 17)) packet.records = [ Record(x=1, y=2, z=3, blockId=56, blockMeta=13), Record(position=Vector(1, 2, 3), block_state_id=909), Record(position=(1, 2, 3), blockStateId=909), ] for i in range(3): self.assertEqual(packet.records[i].blockId, 56) self.assertEqual(packet.records[i].blockMeta, 13) self.assertEqual(packet.records[i].blockStateId, 909) self.assertEqual(packet.records[i].position, Vector(1, 2, 3)) self._test_read_write_packet(packet, context)
def test_sound_effect_packet(self): for protocol_version in TEST_VERSIONS: context = ConnectionContext(protocol_version=protocol_version) packet = clientbound.play.SoundEffectPacket(sound_id=545, effect_position=Vector( 0.125, 300.0, 50.5), volume=0.75) if context.protocol_later_eq(201): packet.pitch = struct.unpack('f', struct.pack('f', 1.5))[0] else: packet.pitch = int(1.5 / 63.5) * 63.5 if context.protocol_later_eq(95): packet.sound_category = \ clientbound.play.SoundEffectPacket.SoundCategory.NEUTRAL self._test_read_write_packet(packet, context)
def test_spawn_object_packet(self): for protocol_version in TEST_VERSIONS: logging.debug('protocol_version = %r' % protocol_version) context = ConnectionContext(protocol_version=protocol_version) EntityType = clientbound.play.SpawnObjectPacket.field_enum( 'type_id', context) pos_look = PositionAndLook(position=(Vector( 68.0, 38.0, 76.0) if context.protocol_later_eq(100) else Vector(68, 38, 76)), yaw=263.494, pitch=180) velocity = Vector(21, 55, 41) entity_id, type_name, type_id = 49846, 'EGG', EntityType.EGG packet = clientbound.play.SpawnObjectPacket(context=context, x=pos_look.x, y=pos_look.y, z=pos_look.z, yaw=pos_look.yaw, pitch=pos_look.pitch, velocity_x=velocity.x, velocity_y=velocity.y, velocity_z=velocity.z, entity_id=entity_id, type_id=type_id, data=1) if context.protocol_later_eq(49): object_uuid = 'd9568851-85bc-4a10-8d6a-261d130626fa' packet.object_uuid = object_uuid self.assertEqual(packet.objectUUID, object_uuid) self.assertEqual(packet.position_and_look, pos_look) self.assertEqual(packet.position, pos_look.position) self.assertEqual(packet.velocity, velocity) self.assertEqual(packet.type, type_name) self.assertEqual( str(packet), "0x%02X SpawnObjectPacket(entity_id=49846, " "object_uuid='d9568851-85bc-4a10-8d6a-261d130626fa', " "type_id=EGG, x=68.0, y=38.0, z=76.0, pitch=180, yaw=263.494, " "data=1, velocity_x=21, velocity_y=55, velocity_z=41)" % packet.id if context.protocol_later_eq(100) else "0x%02X SpawnObjectPacket(entity_id=49846, " "object_uuid='d9568851-85bc-4a10-8d6a-261d130626fa', " "type_id=EGG, x=68, y=38, z=76, pitch=180, yaw=263.494, " "data=1, velocity_x=21, velocity_y=55, velocity_z=41)" % packet.id if context.protocol_later_eq(49) else "0x%02X SpawnObjectPacket(entity_id=49846, type_id=EGG, " "x=68, y=38, z=76, pitch=180, yaw=263.494, data=1, " "velocity_x=21, velocity_y=55, velocity_z=41)" % packet.id) packet2 = clientbound.play.SpawnObjectPacket( context=context, position_and_look=pos_look, velocity=velocity, type=type_name, entity_id=entity_id, data=1) if context.protocol_later_eq(49): packet2.object_uuid = object_uuid self.assertEqual(packet.__dict__, packet2.__dict__) packet2.position = pos_look.position self.assertEqual(packet.position, packet2.position) packet2.data = 0 if context.protocol_earlier(49): del packet2.velocity self._test_read_write_packet(packet, context, yaw=360 / 256, pitch=360 / 256) self._test_read_write_packet(packet2, context, yaw=360 / 256, pitch=360 / 256)