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
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)
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)