import unittest from munch import Munch from minecraft.networking.modern import ClientTickEnd, UseItemOnBlockPacket from mosfet.game import Game from mosfet.protocol.modern import PlayerInputPacket class FakeConnection: def __init__(self): self.packets = [] def write_packet(self, packet, force=False): self.packets.append((packet, force)) class SneakPlacementTests(unittest.TestCase): def test_sneaking_wraps_block_placement_and_is_released(self): connection = FakeConnection() game = Game.__new__(Game) game.g = Munch(connection=connection) game.sequence = 0 game.place_block((3, 64, 7), 1, sneaking=True) packets = [packet for packet, _force in connection.packets] self.assertEqual(len(packets), 6) self.assertIsInstance(packets[0], PlayerInputPacket) self.assertEqual(packets[0].flags, 0x20) self.assertIsInstance(packets[1], ClientTickEnd) self.assertIsInstance(packets[2], UseItemOnBlockPacket) self.assertEqual(packets[2].location, (3, 64, 7)) self.assertIsInstance(packets[3], ClientTickEnd) self.assertIsInstance(packets[4], PlayerInputPacket) self.assertEqual(packets[4].flags, 0) self.assertIsInstance(packets[5], ClientTickEnd) if __name__ == '__main__': unittest.main()