From 80a1071077134d02d0f34bc702b5a0206daf2eb4 Mon Sep 17 00:00:00 2001 From: Kumpelinus Date: Tue, 15 Jul 2025 14:30:40 +0200 Subject: [PATCH] Rename TicksAlive to TicksConnected * Move component to plugins/tick_counter.rs and add doc comment --- azalea-client/src/client.rs | 2 -- azalea-client/src/local_player.rs | 3 --- azalea-client/src/plugins/disconnect.rs | 4 ++-- azalea-client/src/plugins/packet/game/mod.rs | 4 ++-- azalea-client/src/plugins/tick_counter.rs | 9 +++++++-- azalea-client/tests/ticks_alive.rs | 12 ++++++------ 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/azalea-client/src/client.rs b/azalea-client/src/client.rs index 2aac5305..9481ba2d 100644 --- a/azalea-client/src/client.rs +++ b/azalea-client/src/client.rs @@ -705,8 +705,6 @@ async fn run_schedule_loop(ecs: Arc>, outer_schedule_label: Interne "GameTick is more than 10 ticks behind, skipping ticks so we don't have to burst too much" ); *last_tick = now; - - // TODO: do we increment TickComponent here? } } else { last_tick = Some(now); diff --git a/azalea-client/src/local_player.rs b/azalea-client/src/local_player.rs index d2f58124..4a937ec7 100644 --- a/azalea-client/src/local_player.rs +++ b/azalea-client/src/local_player.rs @@ -128,9 +128,6 @@ impl Default for Hunger { } } -#[derive(Component, Clone, Debug, Default)] -pub struct TicksAlive(pub u64); - impl InstanceHolder { /// Create a new `InstanceHolder` for the given entity. /// diff --git a/azalea-client/src/plugins/disconnect.rs b/azalea-client/src/plugins/disconnect.rs index 01d4db06..ab39ba5e 100644 --- a/azalea-client/src/plugins/disconnect.rs +++ b/azalea-client/src/plugins/disconnect.rs @@ -11,7 +11,7 @@ use tracing::info; use super::login::IsAuthenticated; use crate::{ chat_signing, client::JoinedClientBundle, connection::RawConnection, loading::HasClientLoaded, - local_player::{InstanceHolder, TicksAlive}, + local_player::InstanceHolder, tick_counter::TicksConnected, }; pub struct DisconnectPlugin; @@ -73,7 +73,7 @@ pub struct RemoveOnDisconnectBundle { // send ServerboundPlayerLoaded next time we join. pub has_client_loaded: HasClientLoaded, // TickCounter is reset on reconnect - pub ticks_alive: TicksAlive, + pub ticks_alive: TicksConnected, } /// A system that removes the several components from our clients when they get diff --git a/azalea-client/src/plugins/packet/game/mod.rs b/azalea-client/src/plugins/packet/game/mod.rs index 642765b8..b7886208 100644 --- a/azalea-client/src/plugins/packet/game/mod.rs +++ b/azalea-client/src/plugins/packet/game/mod.rs @@ -24,7 +24,7 @@ use tracing::{debug, error, trace, warn}; use crate::{ block_update::QueuedServerBlockUpdates, chat::{ChatPacket, ChatReceivedEvent}, chunks, connection::RawConnection, declare_packet_handlers, disconnect::DisconnectEvent, interact::BlockStatePredictionHandler, inventory::{ ClientSideCloseContainerEvent, Inventory, MenuOpenedEvent, SetContainerContentEvent, - }, loading::HasClientLoaded, local_player::{Hunger, InstanceHolder, LocalGameMode, PlayerAbilities, TabList, TicksAlive}, movement::{KnockbackEvent, KnockbackType}, packet::as_system, player::{GameProfileComponent, PlayerInfo}, ClientInformation + }, loading::HasClientLoaded, local_player::{Hunger, InstanceHolder, LocalGameMode, PlayerAbilities, TabList}, movement::{KnockbackEvent, KnockbackType}, packet::as_system, player::{GameProfileComponent, PlayerInfo}, tick_counter::TicksConnected, ClientInformation }; pub fn process_packet(ecs: &mut World, player: Entity, packet: &ClientboundGamePacket) { @@ -286,7 +286,7 @@ impl GamePacketHandler<'_> { previous: p.common.previous_game_type.into(), }, entity_bundle, - TicksAlive(0), + TicksConnected(0), )); azalea_entity::indexing::add_entity_to_indexes( diff --git a/azalea-client/src/plugins/tick_counter.rs b/azalea-client/src/plugins/tick_counter.rs index 15143c98..21515959 100644 --- a/azalea-client/src/plugins/tick_counter.rs +++ b/azalea-client/src/plugins/tick_counter.rs @@ -5,7 +5,12 @@ use azalea_world::InstanceName; use bevy_app::{App, Plugin}; use bevy_ecs::prelude::*; -use crate::{local_player::TicksAlive, mining::MiningSet, movement::send_position, tick_broadcast::send_tick_broadcast}; +use crate::{mining::MiningSet, movement::send_position, tick_broadcast::send_tick_broadcast}; + +/// Counts the number of game ticks elapsed on the **local client** since the +/// `login` packet was received. +#[derive(Component, Clone, Debug, Default)] +pub struct TicksConnected(pub u64); /// Inserts the counter-increment system into the `GameTick` schedule **before** /// physics, mining and movement. @@ -25,7 +30,7 @@ impl Plugin for TickCounterPlugin { } /// Increment the [`GameTickCounter`] on every entity that lives in an instance. -fn increment_counter(mut query: Query<&mut TicksAlive, With>) { +fn increment_counter(mut query: Query<&mut TicksConnected, With>) { for mut counter in &mut query { counter.0 += 1; } diff --git a/azalea-client/tests/ticks_alive.rs b/azalea-client/tests/ticks_alive.rs index e95abb4f..3be9a09c 100644 --- a/azalea-client/tests/ticks_alive.rs +++ b/azalea-client/tests/ticks_alive.rs @@ -1,4 +1,4 @@ -use azalea_client::{local_player::TicksAlive, test_utils::prelude::*}; +use azalea_client::{test_utils::prelude::*, tick_counter::TicksConnected}; use azalea_core::resource_location::ResourceLocation; use azalea_protocol::packets::{config::{ClientboundFinishConfiguration, ClientboundRegistryData}, ConnectionProtocol}; use azalea_registry::{DataRegistry, DimensionType}; @@ -29,7 +29,7 @@ fn counter_increments_and_resets_on_disconnect() { // we need a second tick to handle the state switch properly simulation.tick(); - assert!(!simulation.has_component::()); + assert!(!simulation.has_component::()); simulation.receive_packet(make_basic_login_packet( DimensionType::new_raw(0), // overworld @@ -37,13 +37,13 @@ fn counter_increments_and_resets_on_disconnect() { )); simulation.tick(); - assert!(simulation.has_component::()); - assert_eq!(simulation.component::().0, 1); + assert!(simulation.has_component::()); + assert_eq!(simulation.component::().0, 1); // Tick three times; counter should read 2, 3, 4. for expected in 2..=4 { simulation.tick(); - let counter = simulation.component::(); + let counter = simulation.component::(); assert_eq!( counter.0, expected, "after {expected} tick(s) counter should be {expected}" @@ -53,5 +53,5 @@ fn counter_increments_and_resets_on_disconnect() { simulation.disconnect(); simulation.tick(); - assert!(!simulation.has_component::()); + assert!(!simulation.has_component::()); }