1use azalea_client::{
2 packet::{death_event_on_0_health, game::DeathEvent},
3 respawn::{PerformRespawnEvent, perform_respawn},
4};
5use bevy_app::Update;
6use bevy_ecs::prelude::*;
7
8use crate::app::{App, Plugin};
9
10#[derive(Clone, Default)]
12pub struct AutoRespawnPlugin;
13impl Plugin for AutoRespawnPlugin {
14 fn build(&self, app: &mut App) {
15 app.add_systems(
16 Update,
17 auto_respawn
18 .before(perform_respawn)
19 .after(death_event_on_0_health),
20 );
21 }
22}
23
24fn auto_respawn(
25 mut events: EventReader<DeathEvent>,
26 mut perform_respawn_events: EventWriter<PerformRespawnEvent>,
27) {
28 for event in events.read() {
29 perform_respawn_events.send(PerformRespawnEvent {
30 entity: event.entity,
31 });
32 }
33}