From c23fae6e5dc2832f3649838f514eafb9dfa3e598 Mon Sep 17 00:00:00 2001 From: EightFactorial Date: Wed, 8 Feb 2023 10:05:14 -0800 Subject: Add KeepAliveEvent and Fix Error Messages (#65) * Add KeepAliveEvent * Fix error messages * Panic instead of log error * Do not panic on closed connections * change some wording and fixes * fmt --------- Co-authored-by: Ubuntu --- azalea-client/src/events.rs | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'azalea-client/src/events.rs') diff --git a/azalea-client/src/events.rs b/azalea-client/src/events.rs index f8b9f434..3594911f 100644 --- a/azalea-client/src/events.rs +++ b/azalea-client/src/events.rs @@ -20,8 +20,8 @@ use tokio::sync::mpsc; use crate::{ packet_handling::{ - AddPlayerEvent, ChatReceivedEvent, DeathEvent, PacketReceiver, RemovePlayerEvent, - UpdatePlayerEvent, + AddPlayerEvent, ChatReceivedEvent, DeathEvent, KeepAliveEvent, PacketReceiver, + RemovePlayerEvent, UpdatePlayerEvent, }, ChatPacket, PlayerInfo, }; @@ -73,6 +73,8 @@ pub enum Event { UpdatePlayer(PlayerInfo), /// The client player died in-game. Death(Option>), + /// A `KeepAlive` packet was sent by the server. + KeepAlive(u64), } /// A component that contains an event sender for events that are only @@ -94,6 +96,7 @@ impl Plugin for EventPlugin { .add_system(update_player_listener) .add_system(remove_player_listener) .add_system(death_listener) + .add_system(keepalive_listener) .add_tick_system(tick_listener); } } @@ -157,7 +160,7 @@ fn update_player_listener( for event in events.iter() { let local_player_events = query .get(event.entity) - .expect("Non-localplayer entities shouldn't be able to receive add player events"); + .expect("Non-localplayer entities shouldn't be able to receive update player events"); local_player_events .send(Event::UpdatePlayer(event.info.clone())) .unwrap(); @@ -171,7 +174,7 @@ fn remove_player_listener( for event in events.iter() { let local_player_events = query .get(event.entity) - .expect("Non-localplayer entities shouldn't be able to receive add player events"); + .expect("Non-localplayer entities shouldn't be able to receive remove player events"); local_player_events .send(Event::RemovePlayer(event.info.clone())) .unwrap(); @@ -187,3 +190,14 @@ fn death_listener(query: Query<&LocalPlayerEvents>, mut events: EventReader, mut events: EventReader) { + for event in events.iter() { + let local_player_events = query + .get(event.entity) + .expect("Non-localplayer entities shouldn't be able to receive keepalive events"); + local_player_events + .send(Event::KeepAlive(event.id)) + .unwrap(); + } +} -- cgit v1.2.3