fix(replay/plugin): still check if recorder exists

This partially backs out commit f77aea28d1afbc173a1becaf0ecc7a59568caa4c.
This commit is contained in:
Ryan 2025-03-11 19:31:41 -04:00
parent 9b6991ae80
commit 15cd2e673e
Signed by: ErrorNoInternet
GPG Key ID: 2486BFB7B1E6A4A3
2 changed files with 25 additions and 15 deletions

View File

@ -30,7 +30,11 @@ impl Plugin for RecordPlugin {
} }
} }
fn record_login_packets(mut recorder: ResMut<Recorder>, mut events: EventReader<LoginPacketEvent>) { fn record_login_packets(
recorder: Option<ResMut<Recorder>>,
mut events: EventReader<LoginPacketEvent>,
) {
if let Some(mut recorder) = recorder {
for event in events.read() { for event in events.read() {
if recorder.should_ignore_compression if recorder.should_ignore_compression
&& let ClientboundLoginPacket::LoginCompression(_) = *event.packet && let ClientboundLoginPacket::LoginCompression(_) = *event.packet
@ -42,21 +46,26 @@ fn record_login_packets(mut recorder: ResMut<Recorder>, mut events: EventReader<
error!("failed to record login packet: {error:?}"); error!("failed to record login packet: {error:?}");
} }
} }
}
} }
fn record_configuration_packets( fn record_configuration_packets(
mut recorder: ResMut<Recorder>, recorder: Option<ResMut<Recorder>>,
mut events: EventReader<ConfigurationEvent>, mut events: EventReader<ConfigurationEvent>,
) { ) {
if let Some(mut recorder) = recorder {
for event in events.read() { for event in events.read() {
if let Err(error) = recorder.save_packet(&event.packet) { if let Err(error) = recorder.save_packet(&event.packet) {
error!("failed to record configuration packet: {error:?}"); error!("failed to record configuration packet: {error:?}");
} }
} }
}
} }
fn record_game_packets(mut recorder: ResMut<Recorder>, query: Query<&RawConnection>) { fn record_game_packets(recorder: Option<ResMut<Recorder>>, query: Query<&RawConnection>) {
for raw_conn in query.iter() { if let Some(mut recorder) = recorder
&& let Ok(raw_conn) = query.get_single()
{
let queue = raw_conn.incoming_packet_queue(); let queue = raw_conn.incoming_packet_queue();
for raw_packet in queue.lock().iter() { for raw_packet in queue.lock().iter() {
if let Err(error) = recorder.save_raw_packet(raw_packet) { if let Err(error) = recorder.save_raw_packet(raw_packet) {

View File

@ -66,6 +66,7 @@ impl Recorder {
} }
pub fn save_raw_packet(&mut self, raw_packet: &[u8]) -> Result<()> { 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); let mut data = Vec::with_capacity(raw_packet.len() + 8);
data.extend(&TryInto::<u32>::try_into(self.start.elapsed().as_millis())?.to_be_bytes()); data.extend(&TryInto::<u32>::try_into(self.start.elapsed().as_millis())?.to_be_bytes());
data.extend(&TryInto::<u32>::try_into(raw_packet.len())?.to_be_bytes()); data.extend(&TryInto::<u32>::try_into(raw_packet.len())?.to_be_bytes());