Beispiel #1
0
    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)
Beispiel #2
0
    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)
Beispiel #3
0
    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)
Beispiel #4
0
    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)