use azalea_client::LocalPlayer; use azalea_world::entity::MinecraftEntityId; use bevy_app::{App, Plugin}; use bevy_ecs::prelude::*; use derive_more::{Deref, DerefMut}; pub struct SwarmPlugin; impl Plugin for SwarmPlugin { fn build(&self, app: &mut App) { app.add_event::() .add_system(check_ready) .init_resource::(); } } /// All the bots from the swarm are now in the world. pub struct SwarmReadyEvent; #[derive(Default, Resource, Deref, DerefMut)] struct IsSwarmReady(bool); fn check_ready( query: Query, With>, mut is_swarm_ready: ResMut, mut ready_events: EventWriter, ) { // if we already know the swarm is ready, do nothing if **is_swarm_ready { return; } // if all the players are in the world, we're ready for entity_id in query.iter() { if entity_id.is_none() { return; } } // all the players are in the world, so we're ready **is_swarm_ready = true; ready_events.send(SwarmReadyEvent); }