diff options
| author | mat <27899617+mat-1@users.noreply.github.com> | 2023-09-21 11:16:29 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-21 11:16:29 -0500 |
| commit | 7b3e2e4bf793466a351510c7fbbd08234e93bb0e (patch) | |
| tree | 7177a919de9982d9e3c7f36a76d2025696f465b6 /azalea-client/src/packet_handling/mod.rs | |
| parent | 83cce236145cdab1872a472a70943b669a880965 (diff) | |
| download | azalea-drasl-7b3e2e4bf793466a351510c7fbbd08234e93bb0e.tar.xz | |
1.20.2 (#99)
* add configuration state
* start updating to 23w31a
* implement a bit more of 23w31a
* chunk batching
* start adding configuration state
* ioasfhjgsd
* almost works
* configuration state mostly implemented
* handle other packets in configuration state and fix keepalive
* cleanup, fix warnings
* 23w32a
* fix some doctests
* 23w33a
* 23w35a
* 1.20.2-pre2
* fix system conflicts
* 1.20.2-pre4
* make tests compile
* tests pass
* 1.20.2-rc2
* 1.20.2
* Revert "1.20.2"
This reverts commit dd152fd265332ead333c919e585ded6d609d7468.
* didn't mean to commit that code
---------
Co-authored-by: mat <git@matdoes.dev>
Diffstat (limited to 'azalea-client/src/packet_handling/mod.rs')
| -rw-r--r-- | azalea-client/src/packet_handling/mod.rs | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/azalea-client/src/packet_handling/mod.rs b/azalea-client/src/packet_handling/mod.rs new file mode 100644 index 00000000..35bdfc04 --- /dev/null +++ b/azalea-client/src/packet_handling/mod.rs @@ -0,0 +1,59 @@ +use azalea_entity::{metadata::Health, EntityUpdateSet}; +use bevy_app::{App, First, Plugin, PreUpdate, Update}; +use bevy_ecs::prelude::*; + +use crate::{chat::ChatReceivedEvent, events::death_listener}; + +use self::game::{ + AddPlayerEvent, DeathEvent, InstanceLoadedEvent, KeepAliveEvent, RemovePlayerEvent, + ResourcePackEvent, UpdatePlayerEvent, +}; + +pub mod configuration; +pub mod game; + +pub struct PacketHandlerPlugin; + +pub fn death_event_on_0_health( + query: Query<(Entity, &Health), Changed<Health>>, + mut death_events: EventWriter<DeathEvent>, +) { + for (entity, health) in query.iter() { + if **health == 0. { + death_events.send(DeathEvent { + entity, + packet: None, + }); + } + } +} + +impl Plugin for PacketHandlerPlugin { + fn build(&self, app: &mut App) { + app.add_systems( + First, + (game::send_packet_events, configuration::send_packet_events), + ) + .add_systems( + PreUpdate, + ( + game::process_packet_events, + configuration::process_packet_events, + ) + // we want to index and deindex right after + .before(EntityUpdateSet::Deindex), + ) + .add_systems(Update, 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::PacketEvent>>() + .init_resource::<Events<configuration::PacketEvent>>() + .add_event::<AddPlayerEvent>() + .add_event::<RemovePlayerEvent>() + .add_event::<UpdatePlayerEvent>() + .add_event::<ChatReceivedEvent>() + .add_event::<DeathEvent>() + .add_event::<KeepAliveEvent>() + .add_event::<ResourcePackEvent>() + .add_event::<InstanceLoadedEvent>(); + } +} |
