use azalea_core::tick::GameTick; use azalea_physics::PhysicsSystems; use azalea_world::WorldName; use bevy_app::{App, Plugin}; use bevy_ecs::prelude::*; use crate::{mining::MiningSystems, movement::send_position}; /// Counts the number of game ticks elapsed on the **local client** since the /// `login` packet was received. #[derive(Clone, Component, Debug, Default, Eq, PartialEq)] pub struct TicksConnected(pub u64); /// Inserts the counter-increment system into the `GameTick` schedule **before** /// physics, mining and movement. pub struct TickCounterPlugin; impl Plugin for TickCounterPlugin { fn build(&self, app: &mut App) { app.add_systems( GameTick, increment_counter .before(PhysicsSystems) .before(MiningSystems) .before(send_position), ); } } /// Increment the [`TicksConnected`] component for every entity that's in any /// world. pub fn increment_counter(mut query: Query<&mut TicksConnected, With>) { for mut counter in &mut query { counter.0 += 1; } }