From c7eaa2e7779aaffc7954bc51c6acdbef2212d01a Mon Sep 17 00:00:00 2001 From: Liam Aharon Date: Sat, 28 Mar 2026 17:29:08 +1100 Subject: [PATCH 1/2] Update to bevy_replicon 0.39 --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- crates/aeronet_replicon/src/server.rs | 17 +++++++++++++---- examples/src/bin/move_box_server.rs | 2 +- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2684a894..7fa18808 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1605,9 +1605,9 @@ dependencies = [ [[package]] name = "bevy_replicon" -version = "0.38.0" +version = "0.39.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b82e2b46cf127e7dc2129331416875a284b8758a4c0b5c155d8f372be95cc61" +checksum = "4ea7372dfbefe9b1f10d9388f444c86eaefb29693ecc95be8934bbfda7c4eeac" dependencies = [ "bevy", "bitflags 2.10.0", diff --git a/Cargo.toml b/Cargo.toml index c1bc63da..fe400287 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,7 +27,7 @@ bevy_ecs = { version = "0.18.0", default-features = false } bevy_egui = { version = "0.39.0" } bevy_platform = { version = "0.18.0", default-features = false } bevy_reflect = { version = "0.18.0", default-features = false } -bevy_replicon = { version = "0.38.0", default-features = false } +bevy_replicon = { version = "0.39.1", default-features = false } bevy_state = { version = "0.18.0", default-features = false } bevy_time = { version = "0.18.0", default-features = false } bevy_winit = { version = "0.18.0", default-features = false } diff --git a/crates/aeronet_replicon/src/server.rs b/crates/aeronet_replicon/src/server.rs index 66229c4e..49f1c324 100644 --- a/crates/aeronet_replicon/src/server.rs +++ b/crates/aeronet_replicon/src/server.rs @@ -220,17 +220,26 @@ fn poll( } fn update_client_data( + mut commands: Commands, mut clients: Query<( + Entity, &Session, &SessionStats, - &mut ConnectedClient, - &mut ClientStats, + &ConnectedClient, + &mut ConnectedClientStats, )>, sampling: Res, ) { - for (session, session_stats, mut connected_client, mut client_stats) in &mut clients { + for (client, session, session_stats, connected_client, mut client_stats) in &mut clients { let stats = session_stats.last().copied().unwrap_or_default(); - connected_client.max_size = session.mtu(); + let mtu = session.mtu(); + // ConnectedClient is immutable, so it needs to be re-inserted when `max_size` + // changes. + if connected_client.max_size != mtu { + commands + .entity(client) + .insert(ConnectedClient { max_size: mtu }); + } client_stats.rtt = stats.msg_rtt.as_secs_f64(); client_stats.packet_loss = stats.loss; #[expect(clippy::cast_precision_loss, reason = "precision loss is acceptable")] diff --git a/examples/src/bin/move_box_server.rs b/examples/src/bin/move_box_server.rs index 7e930757..075f0620 100644 --- a/examples/src/bin/move_box_server.rs +++ b/examples/src/bin/move_box_server.rs @@ -63,7 +63,7 @@ fn main() -> AppExit { // replication RepliconPlugins.set(ServerPlugin { // 1 frame lasts `1.0 / TICK_RATE` anyway - tick_schedule: PostUpdate.intern(), + tick_schedule: Some(PostUpdate.intern()), ..Default::default() }), AeronetRepliconServerPlugin, From 371b3d0ce56542ff68d481f4aba908e72d92696b Mon Sep 17 00:00:00 2001 From: aecsocket Date: Thu, 2 Apr 2026 12:27:12 +0100 Subject: [PATCH 2/2] fix clippy and update replicon --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- crates/aeronet_websocket/src/server/backend.rs | 4 ++++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7fa18808..26614260 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1605,9 +1605,9 @@ dependencies = [ [[package]] name = "bevy_replicon" -version = "0.39.1" +version = "0.39.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea7372dfbefe9b1f10d9388f444c86eaefb29693ecc95be8934bbfda7c4eeac" +checksum = "f225170050ff5e716c3fd6f0fdf6a9f6ced3701320baaee8579218b0f00bed03" dependencies = [ "bevy", "bitflags 2.10.0", diff --git a/Cargo.toml b/Cargo.toml index fe400287..ceff3241 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,7 +27,7 @@ bevy_ecs = { version = "0.18.0", default-features = false } bevy_egui = { version = "0.39.0" } bevy_platform = { version = "0.18.0", default-features = false } bevy_reflect = { version = "0.18.0", default-features = false } -bevy_replicon = { version = "0.39.1", default-features = false } +bevy_replicon = { version = "0.39.2", default-features = false } bevy_state = { version = "0.18.0", default-features = false } bevy_time = { version = "0.18.0", default-features = false } bevy_winit = { version = "0.18.0", default-features = false } diff --git a/crates/aeronet_websocket/src/server/backend.rs b/crates/aeronet_websocket/src/server/backend.rs index 1e2fb761..0cd00534 100644 --- a/crates/aeronet_websocket/src/server/backend.rs +++ b/crates/aeronet_websocket/src/server/backend.rs @@ -142,6 +142,10 @@ async fn handle_session( }; let stream = tokio_tungstenite::accept_hdr_async_with_config( stream, + #[expect( + clippy::result_large_err, + reason = "this `Result` is what `tokio_tungstenite` asks for" + )] |req: &Request, resp: Response| match &handshake_handler { Some(h) => h.handle(req, resp), None => Ok(resp),