aboutsummaryrefslogtreecommitdiff
path: root/azalea-client/src/plugins/packet/game/events.rs
diff options
context:
space:
mode:
authormat <git@matdoes.dev>2025-03-19 21:35:47 +0000
committermat <git@matdoes.dev>2025-03-19 21:35:47 +0000
commit75efbc83fdc4a47f880e95259a339d41839af01a (patch)
treeee5ddeb328fc126ef04adb8006f13513acb48d60 /azalea-client/src/plugins/packet/game/events.rs
parentca2e0b3922da74799be812e5a534a20d611fce1a (diff)
downloadazalea-drasl-75efbc83fdc4a47f880e95259a339d41839af01a.tar.xz
make SendPacketEvent a bevy trigger
Diffstat (limited to 'azalea-client/src/plugins/packet/game/events.rs')
-rw-r--r--azalea-client/src/plugins/packet/game/events.rs40
1 files changed, 24 insertions, 16 deletions
diff --git a/azalea-client/src/plugins/packet/game/events.rs b/azalea-client/src/plugins/packet/game/events.rs
index 5ba9972d..8a5aca3c 100644
--- a/azalea-client/src/plugins/packet/game/events.rs
+++ b/azalea-client/src/plugins/packet/game/events.rs
@@ -49,7 +49,7 @@ pub struct ReceivePacketEvent {
}
/// An event for sending a packet to the server while we're in the `game` state.
-#[derive(Event)]
+#[derive(Event, Clone, Debug)]
pub struct SendPacketEvent {
pub sent_by: Entity,
pub packet: ServerboundGamePacket,
@@ -61,28 +61,36 @@ impl SendPacketEvent {
}
}
-pub fn handle_outgoing_packets(
- mut send_packet_events: EventReader<SendPacketEvent>,
+pub fn handle_outgoing_packets_observer(
+ trigger: Trigger<SendPacketEvent>,
mut query: Query<(&mut RawConnection, Option<&InGameState>)>,
) {
- for event in send_packet_events.read() {
- if let Ok((raw_connection, in_game_state)) = query.get_mut(event.sent_by) {
- if in_game_state.is_none() {
- error!(
- "Tried to send a game packet {:?} while not in game state",
- event.packet
- );
- continue;
- }
+ let event = trigger.event();
+
+ if let Ok((raw_connection, in_game_state)) = query.get_mut(event.sent_by) {
+ if in_game_state.is_none() {
+ error!(
+ "Tried to send a game packet {:?} while not in game state",
+ event.packet
+ );
+ return;
+ }
- // debug!("Sending packet: {:?}", event.packet);
- if let Err(e) = raw_connection.write_packet(event.packet.clone()) {
- error!("Failed to send packet: {e}");
- }
+ // debug!("Sending packet: {:?}", event.packet);
+ if let Err(e) = raw_connection.write_packet(event.packet.clone()) {
+ error!("Failed to send packet: {e}");
}
}
}
+/// A system that converts [`SendPacketEvent`] events into triggers so they get
+/// received by [`handle_outgoing_packets_observer`].
+pub fn handle_outgoing_packets(mut commands: Commands, mut events: EventReader<SendPacketEvent>) {
+ for event in events.read() {
+ commands.trigger(event.clone());
+ }
+}
+
pub fn emit_receive_packet_events(
query: Query<(Entity, &RawConnection), With<InGameState>>,
mut packet_events: ResMut<Events<ReceivePacketEvent>>,