diff options
| author | mat <git@matdoes.dev> | 2025-09-20 20:35:16 -1200 |
|---|---|---|
| committer | mat <git@matdoes.dev> | 2025-09-20 20:35:16 -1200 |
| commit | 585b51e91a5335eae37bc5af7c0111bb2092b156 (patch) | |
| tree | c1559014df9db20dd625d9fe972d4e9f88317008 /azalea-client/src/plugins/mining.rs | |
| parent | db793448ff8e656ad80859835edc3b89cb547dd2 (diff) | |
| download | azalea-drasl-585b51e91a5335eae37bc5af7c0111bb2092b156.tar.xz | |
more accurate mining and impl PartialEq for packets
Diffstat (limited to 'azalea-client/src/plugins/mining.rs')
| -rw-r--r-- | azalea-client/src/plugins/mining.rs | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/azalea-client/src/plugins/mining.rs b/azalea-client/src/plugins/mining.rs index 1b7adadc..b6ac113a 100644 --- a/azalea-client/src/plugins/mining.rs +++ b/azalea-client/src/plugins/mining.rs @@ -8,7 +8,7 @@ use azalea_world::{InstanceContainer, InstanceName}; use bevy_app::{App, Plugin, Update}; use bevy_ecs::prelude::*; use derive_more::{Deref, DerefMut}; -use tracing::trace; +use tracing::{debug, trace}; use crate::{ Client, @@ -35,14 +35,14 @@ impl Plugin for MiningPlugin { GameTick, ( update_mining_component, - continue_mining_block, handle_auto_mine, handle_mining_queued, + continue_mining_block, ) .chain() - .after(PhysicsSet) - .after(super::movement::send_position) - .after(super::attack::handle_attack_queued) + .before(PhysicsSet) + .before(super::movement::send_position) + .before(super::interact::handle_start_use_item_queued) .in_set(MiningSet), ) .add_systems( @@ -358,9 +358,9 @@ fn handle_mining_queued( seq: sequence_number.start_predicting(), }, )); - // vanilla really does send two swing arm packets - commands.trigger(SwingArmEvent { entity }); commands.trigger(SwingArmEvent { entity }); + // another swing packet gets sent in the same tick in + // continue_mining_block, vanilla does this too } } } @@ -687,9 +687,18 @@ pub fn update_mining_component( ) { for (entity, mut mining, hit_result_component) in &mut query.iter_mut() { if let Some(block_hit_result) = hit_result_component.as_block_hit_result_if_not_miss() { + if mining.force && block_hit_result.block_pos != mining.pos { + continue; + } + mining.pos = block_hit_result.block_pos; mining.dir = block_hit_result.direction; } else { + if mining.force { + continue; + } + + debug!("Removing mining component because we're no longer looking at the block"); commands.entity(entity).remove::<Mining>(); } } |
