Skip to content

Commit 061388f

Browse files
committed
omg i hate github merges.
1 parent f2a0687 commit 061388f

File tree

1 file changed

+37
-34
lines changed

1 file changed

+37
-34
lines changed

src/bin/src/systems/connection_killer.rs

Lines changed: 37 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -17,41 +17,44 @@ pub fn connection_killer(
1717
state: Res<GlobalStateResource>,
1818
) {
1919
while let Some((disconnecting_entity, reason)) = state.0.players.disconnection_queue.pop() {
20-
for (entity, conn, player_identity, mut disconnect_handle) in query.iter_mut() {
21-
if disconnecting_entity == entity {
22-
info!(
23-
"Player {} ({}) disconnected: {}",
24-
player_identity.username,
25-
player_identity.uuid,
26-
reason.as_deref().unwrap_or("No reason")
27-
);
28-
if conn.running.load(std::sync::atomic::Ordering::Relaxed) {
29-
trace!(
30-
"Sending disconnect packet to player {}",
31-
player_identity.username
32-
);
33-
if let Err(e) = conn.send_packet_ref(
34-
&ferrumc_net::packets::outgoing::disconnect::DisconnectPacket {
35-
reason: TextComponent::from(
36-
reason.as_deref().unwrap_or("Disconnected"),
37-
),
38-
},
39-
) {
40-
warn!(
41-
"Failed to send disconnect packet to player {}: {:?}",
42-
player_identity.username, e
20+
let entity_result = query.get(disconnecting_entity);
21+
match entity_result {
22+
Ok(disconnecting_player) => {
23+
for (entity, conn, player_identity, mut disconnect_handle) in query.iter_mut() {
24+
if disconnecting_entity == entity {
25+
info!(
26+
"Player {} ({}) disconnected: {}",
27+
player_identity.username,
28+
player_identity.uuid,
29+
reason.as_deref().unwrap_or("No reason")
4330
);
44-
}
45-
if let Some(sender) = disconnect_handle.sender.take() {
46-
if let Err(_) = sender.send(()) {
47-
trace!("Failed to send disconnect signal (receiver already dropped)");
48-
}
49-
}
50-
} else {
51-
trace!(
52-
"Connection for player {} is not running, skipping disconnect packet",
53-
player_identity.username
54-
);
31+
if conn.running.load(std::sync::atomic::Ordering::Relaxed) {
32+
trace!(
33+
"Sending disconnect packet to player {}",
34+
player_identity.username
35+
);
36+
if let Err(e) = conn.send_packet_ref(
37+
&ferrumc_net::packets::outgoing::disconnect::DisconnectPacket {
38+
reason: TextComponent::from(
39+
reason.as_deref().unwrap_or("Disconnected"),
40+
),
41+
},
42+
) {
43+
warn!(
44+
"Failed to send disconnect packet to player {}: {:?}",
45+
player_identity.username, e
46+
);
47+
}
48+
if let Some(sender) = disconnect_handle.sender.take() {
49+
if let Err(_) = sender.send(()) {
50+
trace!("Failed to send disconnect signal (receiver already dropped)");
51+
}
52+
}
53+
} else {
54+
trace!(
55+
"Connection for player {} is not running, skipping disconnect packet",
56+
player_identity.username
57+
);
5558
}
5659
} else {
5760
system_messages::player_leave::handle(disconnecting_player.2, entity);

0 commit comments

Comments
 (0)