From 15cd2e673ef185b5a4e50c95b74688caa4cc81da Mon Sep 17 00:00:00 2001 From: ErrorNoInternet Date: Tue, 11 Mar 2025 19:31:41 -0400 Subject: [PATCH] fix(replay/plugin): still check if recorder exists This partially backs out commit f77aea28d1afbc173a1becaf0ecc7a59568caa4c. --- src/replay/plugin.rs | 39 ++++++++++++++++++++++++--------------- src/replay/recorder.rs | 1 + 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/replay/plugin.rs b/src/replay/plugin.rs index 736e926..11eb31b 100644 --- a/src/replay/plugin.rs +++ b/src/replay/plugin.rs @@ -30,33 +30,42 @@ impl Plugin for RecordPlugin { } } -fn record_login_packets(mut recorder: ResMut, mut events: EventReader) { - for event in events.read() { - if recorder.should_ignore_compression - && let ClientboundLoginPacket::LoginCompression(_) = *event.packet - { - continue; - } +fn record_login_packets( + recorder: Option>, + mut events: EventReader, +) { + if let Some(mut recorder) = recorder { + for event in events.read() { + if recorder.should_ignore_compression + && let ClientboundLoginPacket::LoginCompression(_) = *event.packet + { + continue; + } - if let Err(error) = recorder.save_packet(event.packet.as_ref()) { - error!("failed to record login packet: {error:?}"); + if let Err(error) = recorder.save_packet(event.packet.as_ref()) { + error!("failed to record login packet: {error:?}"); + } } } } fn record_configuration_packets( - mut recorder: ResMut, + recorder: Option>, mut events: EventReader, ) { - for event in events.read() { - if let Err(error) = recorder.save_packet(&event.packet) { - error!("failed to record configuration packet: {error:?}"); + if let Some(mut recorder) = recorder { + for event in events.read() { + if let Err(error) = recorder.save_packet(&event.packet) { + error!("failed to record configuration packet: {error:?}"); + } } } } -fn record_game_packets(mut recorder: ResMut, query: Query<&RawConnection>) { - for raw_conn in query.iter() { +fn record_game_packets(recorder: Option>, query: Query<&RawConnection>) { + if let Some(mut recorder) = recorder + && let Ok(raw_conn) = query.get_single() + { let queue = raw_conn.incoming_packet_queue(); for raw_packet in queue.lock().iter() { if let Err(error) = recorder.save_raw_packet(raw_packet) { diff --git a/src/replay/recorder.rs b/src/replay/recorder.rs index e013bf4..d8a73f3 100644 --- a/src/replay/recorder.rs +++ b/src/replay/recorder.rs @@ -66,6 +66,7 @@ impl Recorder { } pub fn save_raw_packet(&mut self, raw_packet: &[u8]) -> Result<()> { + println!("{}", raw_packet.len()); let mut data = Vec::with_capacity(raw_packet.len() + 8); data.extend(&TryInto::::try_into(self.start.elapsed().as_millis())?.to_be_bytes()); data.extend(&TryInto::::try_into(raw_packet.len())?.to_be_bytes());