aboutsummaryrefslogtreecommitdiff
path: root/azalea-client/src/plugins/packet/mod.rs
diff options
context:
space:
mode:
authormat <27899617+mat-1@users.noreply.github.com>2025-04-17 16:16:51 -0500
committerGitHub <noreply@github.com>2025-04-17 16:16:51 -0500
commit3f60bdadac1a02e1109148bbbe5a8a3545f13849 (patch)
tree6c0460be61e715c1b789f81b16ce4c0fb986c3b4 /azalea-client/src/plugins/packet/mod.rs
parent1989f4ec979c138f8f466ccebadca335eb2917d6 (diff)
downloadazalea-drasl-3f60bdadac1a02e1109148bbbe5a8a3545f13849.tar.xz
Move login state to the ECS (#213)
* use packet handlers code for login custom_query * initial broken implementation for ecs-only login * fixes * run Update schedule 60 times per second and delete code related to run_schedule_sender * fix tests * fix online-mode * reply to query packets in a separate system and make it easier for plugins to disable individual replies * remove unused imports
Diffstat (limited to 'azalea-client/src/plugins/packet/mod.rs')
-rw-r--r--azalea-client/src/plugins/packet/mod.rs84
1 files changed, 33 insertions, 51 deletions
diff --git a/azalea-client/src/plugins/packet/mod.rs b/azalea-client/src/plugins/packet/mod.rs
index 362154cc..1c14fa30 100644
--- a/azalea-client/src/plugins/packet/mod.rs
+++ b/azalea-client/src/plugins/packet/mod.rs
@@ -1,17 +1,11 @@
use azalea_entity::metadata::Health;
-use bevy_app::{App, First, Plugin, PreUpdate, Update};
+use bevy_app::{App, Plugin, Update};
use bevy_ecs::{
prelude::*,
system::{SystemParam, SystemState},
};
-use self::{
- game::{
- AddPlayerEvent, DeathEvent, InstanceLoadedEvent, KeepAliveEvent, RemovePlayerEvent,
- ResourcePackEvent, UpdatePlayerEvent,
- },
- login::{LoginPacketEvent, SendLoginPacketEvent},
-};
+use self::game::DeathEvent;
use crate::{chat::ChatReceivedEvent, events::death_listener};
pub mod config;
@@ -36,50 +30,38 @@ pub fn death_event_on_0_health(
impl Plugin for PacketPlugin {
fn build(&self, app: &mut App) {
- app.add_systems(
- First,
- (
- game::emit_receive_packet_events,
- config::emit_receive_config_packet_events,
- ),
- )
- .add_systems(
- PreUpdate,
- (
- game::process_packet_events,
- config::process_packet_events,
- login::handle_send_packet_event,
- login::process_packet_events,
- ),
- )
- .add_observer(game::handle_outgoing_packets_observer)
- .add_observer(config::handle_outgoing_packets_observer)
- .add_systems(
- Update,
- (
+ app.add_observer(game::handle_outgoing_packets_observer)
+ .add_observer(config::handle_outgoing_packets_observer)
+ .add_observer(login::handle_outgoing_packets_observer)
+ .add_systems(
+ Update,
(
- config::handle_outgoing_packets,
- game::handle_outgoing_packets,
- )
- .chain(),
- death_event_on_0_health.before(death_listener),
- ),
- )
- // we do this instead of add_event so we can handle the events ourselves
- .init_resource::<Events<game::ReceivePacketEvent>>()
- .init_resource::<Events<config::ReceiveConfigPacketEvent>>()
- .add_event::<game::SendPacketEvent>()
- .add_event::<config::SendConfigPacketEvent>()
- .add_event::<AddPlayerEvent>()
- .add_event::<RemovePlayerEvent>()
- .add_event::<UpdatePlayerEvent>()
- .add_event::<ChatReceivedEvent>()
- .add_event::<DeathEvent>()
- .add_event::<KeepAliveEvent>()
- .add_event::<ResourcePackEvent>()
- .add_event::<InstanceLoadedEvent>()
- .add_event::<LoginPacketEvent>()
- .add_event::<SendLoginPacketEvent>();
+ (
+ config::handle_outgoing_packets,
+ game::handle_outgoing_packets,
+ login::handle_outgoing_packets,
+ )
+ .chain(),
+ death_event_on_0_health.before(death_listener),
+ ),
+ )
+ .add_event::<game::ReceiveGamePacketEvent>()
+ .add_event::<config::ReceiveConfigPacketEvent>()
+ .add_event::<login::ReceiveLoginPacketEvent>()
+ //
+ .add_event::<game::SendPacketEvent>()
+ .add_event::<config::SendConfigPacketEvent>()
+ .add_event::<login::SendLoginPacketEvent>()
+ //
+ .add_event::<game::AddPlayerEvent>()
+ .add_event::<game::RemovePlayerEvent>()
+ .add_event::<game::UpdatePlayerEvent>()
+ .add_event::<ChatReceivedEvent>()
+ .add_event::<game::DeathEvent>()
+ .add_event::<game::KeepAliveEvent>()
+ .add_event::<game::ResourcePackEvent>()
+ .add_event::<game::InstanceLoadedEvent>()
+ .add_event::<login::ReceiveCustomQueryEvent>();
}
}