diff options
Diffstat (limited to 'azalea-client/src/plugins')
| -rw-r--r-- | azalea-client/src/plugins/disconnect.rs | 6 | ||||
| -rw-r--r-- | azalea-client/src/plugins/loading.rs | 8 | ||||
| -rw-r--r-- | azalea-client/src/plugins/movement.rs | 12 | ||||
| -rw-r--r-- | azalea-client/src/plugins/packet/game/mod.rs | 21 |
4 files changed, 18 insertions, 29 deletions
diff --git a/azalea-client/src/plugins/disconnect.rs b/azalea-client/src/plugins/disconnect.rs index ab39ba5e..3cb9e82a 100644 --- a/azalea-client/src/plugins/disconnect.rs +++ b/azalea-client/src/plugins/disconnect.rs @@ -1,7 +1,9 @@ //! Disconnect a client from the server. use azalea_chat::FormattedText; -use azalea_entity::{EntityBundle, InLoadedChunk, LocalEntity, metadata::PlayerMetadataBundle}; +use azalea_entity::{ + EntityBundle, HasClientLoaded, InLoadedChunk, LocalEntity, metadata::PlayerMetadataBundle, +}; use azalea_world::MinecraftEntityId; use bevy_app::{App, Plugin, PostUpdate}; use bevy_ecs::prelude::*; @@ -10,7 +12,7 @@ use tracing::info; use super::login::IsAuthenticated; use crate::{ - chat_signing, client::JoinedClientBundle, connection::RawConnection, loading::HasClientLoaded, + chat_signing, client::JoinedClientBundle, connection::RawConnection, local_player::InstanceHolder, tick_counter::TicksConnected, }; diff --git a/azalea-client/src/plugins/loading.rs b/azalea-client/src/plugins/loading.rs index 4e993a4b..86c2b2de 100644 --- a/azalea-client/src/plugins/loading.rs +++ b/azalea-client/src/plugins/loading.rs @@ -1,5 +1,5 @@ use azalea_core::tick::GameTick; -use azalea_entity::{InLoadedChunk, LocalEntity}; +use azalea_entity::{HasClientLoaded, InLoadedChunk, LocalEntity, update_in_loaded_chunk}; use azalea_physics::PhysicsSet; use azalea_protocol::packets::game::ServerboundPlayerLoaded; use bevy_app::{App, Plugin}; @@ -12,8 +12,10 @@ impl Plugin for PlayerLoadedPlugin { fn build(&self, app: &mut App) { app.add_systems( GameTick, + // vanilla runs this on gameMode.tick() player_loaded_packet - .after(PhysicsSet) + .after(update_in_loaded_chunk) + .before(PhysicsSet) .before(MiningSet) .before(crate::movement::send_position), ); @@ -27,8 +29,6 @@ impl Plugin for PlayerLoadedPlugin { // i prefer the client one because it makes it clear that the component is only // present on our own clients -#[derive(Component)] -pub struct HasClientLoaded; #[allow(clippy::type_complexity)] pub fn player_loaded_packet( mut commands: Commands, diff --git a/azalea-client/src/plugins/movement.rs b/azalea-client/src/plugins/movement.rs index 675796f6..c9b3b070 100644 --- a/azalea-client/src/plugins/movement.rs +++ b/azalea-client/src/plugins/movement.rs @@ -5,7 +5,7 @@ use azalea_core::{ tick::GameTick, }; use azalea_entity::{ - Attributes, InLoadedChunk, Jumping, LastSentPosition, LookDirection, Physics, Position, + Attributes, HasClientLoaded, Jumping, LastSentPosition, LookDirection, Physics, Position, metadata::Sprinting, }; use azalea_physics::{PhysicsSet, ai_step}; @@ -155,7 +155,7 @@ pub fn send_position( &mut Physics, &mut LastSentLookDirection, ), - With<InLoadedChunk>, + With<HasClientLoaded>, >, mut commands: Commands, ) { @@ -183,9 +183,9 @@ pub fn send_position( // boolean sendingPosition = Mth.lengthSquared(xDelta, yDelta, zDelta) > // Mth.square(2.0E-4D) || this.positionReminder >= 20; - let sending_position = ((x_delta.powi(2) + y_delta.powi(2) + z_delta.powi(2)) - > 2.0e-4f64.powi(2)) - || physics_state.position_remainder >= 20; + let is_delta_large_enough = + (x_delta.powi(2) + y_delta.powi(2) + z_delta.powi(2)) > 2.0e-4f64.powi(2); + let sending_position = is_delta_large_enough || physics_state.position_remainder >= 20; let sending_direction = y_rot_delta != 0.0 || x_rot_delta != 0.0; // if self.is_passenger() { @@ -348,7 +348,7 @@ pub(crate) fn tick_controls(mut query: Query<&mut PhysicsState>) { pub fn local_player_ai_step( mut query: Query< (&PhysicsState, &mut Physics, &mut Sprinting, &mut Attributes), - With<InLoadedChunk>, + With<HasClientLoaded>, >, ) { for (physics_state, mut physics, mut sprinting, mut attributes) in query.iter_mut() { diff --git a/azalea-client/src/plugins/packet/game/mod.rs b/azalea-client/src/plugins/packet/game/mod.rs index fe294ad0..26d83195 100644 --- a/azalea-client/src/plugins/packet/game/mod.rs +++ b/azalea-client/src/plugins/packet/game/mod.rs @@ -7,8 +7,8 @@ use azalea_core::{ position::{ChunkPos, Vec3}, }; use azalea_entity::{ - Dead, EntityBundle, EntityKindComponent, LastSentPosition, LoadedBy, LocalEntity, - LookDirection, Physics, Position, RelativeEntityUpdate, + Dead, EntityBundle, EntityKindComponent, HasClientLoaded, LoadedBy, LocalEntity, LookDirection, + Physics, Position, RelativeEntityUpdate, indexing::{EntityIdIndex, EntityUuidIndex}, metadata::{Health, apply_metadata}, }; @@ -33,7 +33,6 @@ use crate::{ inventory::{ ClientSideCloseContainerEvent, Inventory, MenuOpenedEvent, SetContainerContentEvent, }, - loading::HasClientLoaded, local_player::{Hunger, InstanceHolder, LocalGameMode, PlayerAbilities, TabList}, movement::{KnockbackEvent, KnockbackType}, packet::as_system, @@ -409,22 +408,13 @@ impl GamePacketHandler<'_> { debug!("Got player position packet {p:?}"); as_system::<( - Query<( - &mut Physics, - &mut LookDirection, - &mut Position, - &mut LastSentPosition, - )>, + Query<(&mut Physics, &mut LookDirection, &mut Position)>, Commands, )>(self.ecs, |(mut query, mut commands)| { - let Ok((mut physics, mut direction, mut position, mut last_sent_position)) = - query.get_mut(self.player) - else { + let Ok((mut physics, mut direction, mut position)) = query.get_mut(self.player) else { return; }; - **last_sent_position = **position; - p.relative .apply(&p.change, &mut position, &mut direction, &mut physics); // old_pos is set to the current position when we're teleported @@ -1500,9 +1490,6 @@ impl GamePacketHandler<'_> { physics.set_on_ground(new_on_ground); - let mut last_sent_position = - entity_mut.get_mut::<LastSentPosition>().unwrap(); - **last_sent_position = new_position; let mut position = entity_mut.get_mut::<Position>().unwrap(); **position = new_position; |
