def test_join_game_packet(self):
        GameMode = types.GameMode
        context = ConnectionContext()
        for pure_game_mode in (
                GameMode.SURVIVAL,
                GameMode.CREATIVE,
                GameMode.ADVENTURE,
                GameMode.SPECTATOR,
        ):
            for is_hardcore in (False, True):
                context.protocol_version = 70
                game_mode = (pure_game_mode | GameMode.HARDCORE
                             if is_hardcore else pure_game_mode)

                packet = clientbound.play.JoinGamePacket()
                packet.game_mode = game_mode
                packet.context = context
                self.assertEqual(packet.pure_game_mode, pure_game_mode)
                self.assertEqual(packet.is_hardcore, is_hardcore)

                del packet.context
                del packet.is_hardcore
                packet.context = context
                self.assertEqual(packet.game_mode, packet.pure_game_mode)

                del packet.context
                del packet.game_mode
                packet.context = context
                self.assertFalse(hasattr(packet, "is_hardcore"))

                packet = clientbound.play.JoinGamePacket()
                packet.pure_game_mode = game_mode
                packet.is_hardcore = is_hardcore
                packet.context = context
                self.assertEqual(packet.game_mode, game_mode)

                context.protocol_version = 738
                game_mode = pure_game_mode | GameMode.HARDCORE

                packet = clientbound.play.JoinGamePacket()
                packet.game_mode = game_mode
                packet.is_hardcore = is_hardcore
                packet.context = context
                self.assertEqual(packet.game_mode, game_mode)
                self.assertEqual(packet.pure_game_mode, game_mode)
                self.assertEqual(packet.is_hardcore, is_hardcore)

                del packet.context
                packet.is_hardcore = is_hardcore
                packet.context = context
                self.assertEqual(packet.game_mode, game_mode)
                self.assertEqual(packet.pure_game_mode, game_mode)

                with self.assertRaises(AttributeError):
                    del packet.pure_game_mode
示例#2
0
 def test_block_change_packet(self):
     context = ConnectionContext()
     context.protocol_version = SUPPORTED_PROTOCOL_VERSIONS[-1]
     bi, bm = 358, 9
     packet = clientbound.play.BlockChangePacket(blockId=bi, blockMeta=bm)
     self.assertEqual((packet.blockId, packet.blockMeta), (bi, bm))
     self.assertEqual(packet.blockStateId, packet.block_state_id)
示例#3
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 protocol_version >= 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)