diff options
Diffstat (limited to 'azalea-client/src/plugins/packet/game')
| -rw-r--r-- | azalea-client/src/plugins/packet/game/events.rs | 18 | ||||
| -rw-r--r-- | azalea-client/src/plugins/packet/game/mod.rs | 5 |
2 files changed, 19 insertions, 4 deletions
diff --git a/azalea-client/src/plugins/packet/game/events.rs b/azalea-client/src/plugins/packet/game/events.rs index 8a5aca3c..ad81f9bd 100644 --- a/azalea-client/src/plugins/packet/game/events.rs +++ b/azalea-client/src/plugins/packet/game/events.rs @@ -212,3 +212,21 @@ pub struct InstanceLoadedEvent { pub name: ResourceLocation, pub instance: Weak<RwLock<Instance>>, } + +/// A Bevy trigger that's sent when our client receives a [`ClientboundPing`] +/// packet in the game state. +/// +/// Also see [`ConfigPingEvent`] which is used for the config state. +/// +/// This is not an event and can't be listened to from a normal system, +///so `EventReader<PingEvent>` will not work. +/// +/// To use it, add your "system" with `add_observer` instead of `add_systems` +/// and use `Trigger<PingEvent>` instead of `EventReader`. +/// +/// The client Entity that received the packet will be attached to the trigger. +/// +/// [`ClientboundPing`]: azalea_protocol::packets::game::ClientboundPing +/// [`ConfigPingEvent`]: crate::packet::config::ConfigPingEvent +#[derive(Event, Debug, Clone)] +pub struct PingEvent(pub azalea_protocol::packets::game::ClientboundPing); diff --git a/azalea-client/src/plugins/packet/game/mod.rs b/azalea-client/src/plugins/packet/game/mod.rs index 1e9232bf..cc67bcd7 100644 --- a/azalea-client/src/plugins/packet/game/mod.rs +++ b/azalea-client/src/plugins/packet/game/mod.rs @@ -1363,10 +1363,7 @@ impl GamePacketHandler<'_> { debug!("Got ping packet {p:?}"); as_system::<Commands>(self.ecs, |mut commands| { - commands.trigger(SendPacketEvent::new( - self.player, - ServerboundPong { id: p.id }, - )); + commands.trigger_targets(PingEvent(p.clone()), self.player); }); } |
