diff options
Diffstat (limited to 'azalea-client/src/events.rs')
| -rw-r--r-- | azalea-client/src/events.rs | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/azalea-client/src/events.rs b/azalea-client/src/events.rs index c85f142e..0441ae98 100644 --- a/azalea-client/src/events.rs +++ b/azalea-client/src/events.rs @@ -24,7 +24,7 @@ use crate::{ AddPlayerEvent, DeathEvent, KeepAliveEvent, PacketEvent, RemovePlayerEvent, UpdatePlayerEvent, }, - PlayerInfo, + PlayerInfo, disconnect::DisconnectEvent, }; // (for contributors): @@ -93,6 +93,8 @@ pub enum Event { Death(Option<Arc<ClientboundPlayerCombatKillPacket>>), /// A `KeepAlive` packet was sent by the server. KeepAlive(u64), + /// The client disconnected from the server. + Disconnect(Option<String>), } /// A component that contains an event sender for events that are only @@ -117,6 +119,7 @@ impl Plugin for EventPlugin { remove_player_listener, keepalive_listener, death_listener, + disconnect_listener, ), ) .add_systems( @@ -229,3 +232,11 @@ fn keepalive_listener(query: Query<&LocalPlayerEvents>, mut events: EventReader< .unwrap(); } } + +fn disconnect_listener(query: Query<&LocalPlayerEvents>, mut events: EventReader<DisconnectEvent>) { + for event in events.read() { + if let Ok(local_player_events) = query.get(event.entity) { + let _ = local_player_events.send(Event::Disconnect(event.reason.clone())); + } + } +} |
