def __init__(self, server, port): self.server = server self.port = port self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.compression_threshold = -1 self.raw_packet_emitter = Emitter(RawPacketEvent)
def __init__(self, packet_factory, connection): self.packet_factory = packet_factory self.connection = connection self._state = State.HANDSHAKING self.keep_alive_packet = packet_factory.get_by_name( State.PLAY, Direction.TO_SERVER, 'keep_alive') self.play_state_emitter = Emitter(PacketEvent, area=State.PLAY) self.login_state_emitter = Emitter(PacketEvent, area=State.LOGIN) self.handshake_state_emitter = Emitter(PacketEvent, area=State.HANDSHAKING) self.state_change_emitter = Emitter(StateChangeEvent) self.play_state_emitter.bind(self) self.login_state_emitter.bind(self) self.handshake_state_emitter.bind(self)
def test_key(self): emitter = Emitter() obs = SpyObserver() emitter.bind(obs) emitter(key='key_1', index=1) self.assertEqual(len(obs.events), 1) self.assertEqual(obs.events[0][0], 'on_key')
def test_basic(self): emitter = Emitter() obs = SpyObserver() emitter.bind(obs) emitter(index=1) self.assertEqual(len(obs.events), 1) self.assertEqual(obs.events[0][0], 'on_basic')
def test_subscribe_basic(self): emitter = Emitter() obs = SpyObserver() emitter.subscribe(obs.on_no_listener) emitter(index=1) self.assertEqual(len(obs.events), 1) self.assertEqual(obs.events[0][0], 'on_no_listener')
def test_custom_event(self): emitter = Emitter(event=MyEvent) obs = SpyObserver() emitter.bind(obs) emitter(index=1) self.assertEqual(len(obs.events), 1) self.assertEqual(obs.events[0][0], 'on_my_event')
def test_both(self): emitter = Emitter(area='area_2') obs = SpyObserver() emitter.bind(obs) emitter(key='key_2', index=1) self.assertEqual(len(obs.events), 1) self.assertEqual(obs.events[0][0], 'on_both')
def test_area(self): emitter = Emitter(area='area_1') obs = SpyObserver() emitter.bind(obs) emitter(index=1) self.assertEqual(len(obs.events), 1) self.assertEqual(obs.events[0][0], 'on_area')
def __init__(self, packet_factory, connection): self.factory = packet_factory self.connection = connection self.tick_emitter = Emitter(TickEvent) self.stop_emitter = Emitter(StopEvent) RESPONSE_PACKETS = ('client_command', 'teleport_confirm', 'flying', 'position_look', 'block_dig', 'entity_action', 'block_place', 'chat', 'use_entity') for name in RESPONSE_PACKETS: prop_name = name + '_packet' packet = packet_factory.get_by_name(State.PLAY, Direction.TO_SERVER, name) setattr(self, prop_name, packet) self.dead = True self.respawn_timer = None self.facing = Facing() self.position = Position() self.velocity = Velocity() self.last_time = None self.tick_counter = 0 self.game_info = GameInfo() self.dig_ticks_remaining = None self.respond = True self.responder_thread = threading.Thread(target=self.responder) # map of (x,z) --> chunk data self.chunks = {}
def test_subscribe_key(self): '''Test subscription with a key - events with keys other than what we subscribed to must be filtered out.''' emitter = Emitter(area='area_1') obs = SpyObserver() emitter.subscribe(obs.on_basic, key='a') emitter(key='a', index=1) emitter(key='b', index=2) self.assertEqual(len(obs.events), 1) self.assertEqual(obs.events[0][0], 'on_basic') self.assertEqual(obs.events[0][1].data['index'], 1)