aboutsummaryrefslogtreecommitdiff
path: root/azalea-client/src/events.rs
diff options
context:
space:
mode:
Diffstat (limited to 'azalea-client/src/events.rs')
-rw-r--r--azalea-client/src/events.rs22
1 files changed, 18 insertions, 4 deletions
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<Arc<ClientboundPlayerCombatKillPacket>>),
+ /// 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<Deat
}
}
}
+
+fn keepalive_listener(query: Query<&LocalPlayerEvents>, mut events: EventReader<KeepAliveEvent>) {
+ 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();
+ }
+}