diff options
| author | mat <27899617+mat-1@users.noreply.github.com> | 2025-12-09 13:29:59 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-12-09 13:29:59 -0600 |
| commit | 26d619c9a329087a23d6577ee74bd764f50cd773 (patch) | |
| tree | 8020fe902257764a23a445c6ed9987ea4848189d /azalea-client/src/plugins/mining.rs | |
| parent | 84cd261118c9d1e3145d4d1751c0d22098cd8cd8 (diff) | |
| download | azalea-drasl-26d619c9a329087a23d6577ee74bd764f50cd773.tar.xz | |
Enchantments (#286)
* start implementing enchants
* store parsed registries
* more work on enchants
* implement deserializer for some entity effects
* mostly working definitions for enchants
* fix tests
* detect equipment changes
* fix errors
* update changelog
* fix some imports
* remove outdated todo
* add basic test for enchants applying attributes
* use git simdnbt
Diffstat (limited to 'azalea-client/src/plugins/mining.rs')
| -rw-r--r-- | azalea-client/src/plugins/mining.rs | 41 |
1 files changed, 25 insertions, 16 deletions
diff --git a/azalea-client/src/plugins/mining.rs b/azalea-client/src/plugins/mining.rs index b3880c00..73f2733d 100644 --- a/azalea-client/src/plugins/mining.rs +++ b/azalea-client/src/plugins/mining.rs @@ -1,7 +1,8 @@ use azalea_block::{BlockState, BlockTrait, fluid_state::FluidState}; use azalea_core::{direction::Direction, game_type::GameMode, position::BlockPos, tick::GameTick}; use azalea_entity::{ - ActiveEffects, FluidOnEyes, Physics, PlayerAbilities, Position, mining::get_mine_progress, + ActiveEffects, Attributes, FluidOnEyes, Physics, PlayerAbilities, Position, + inventory::Inventory, mining::get_mine_progress, }; use azalea_inventory::ItemStack; use azalea_physics::{PhysicsSystems, collision::BlockWithShape}; @@ -18,7 +19,7 @@ use crate::{ BlockStatePredictionHandler, SwingArmEvent, can_use_game_master_blocks, check_is_interaction_restricted, pick::HitResultComponent, }, - inventory::{Inventory, InventorySystems}, + inventory::InventorySystems, local_player::{InstanceHolder, LocalGameMode, PermissionLevel}, movement::MoveEventsSystems, packet::game::SendGamePacketEvent, @@ -248,13 +249,16 @@ pub fn handle_mining_queued( &ActiveEffects, &FluidOnEyes, &Physics, + &Attributes, Option<&mut Mining>, &mut BlockStatePredictionHandler, - &mut MineDelay, - &mut MineProgress, - &mut MineTicks, - &mut MineItem, - &mut MineBlockPos, + ( + &mut MineDelay, + &mut MineProgress, + &mut MineTicks, + &mut MineItem, + &mut MineBlockPos, + ), )>, ) { for ( @@ -266,13 +270,16 @@ pub fn handle_mining_queued( active_effects, fluid_on_eyes, physics, + attributes, mut mining, mut sequence_number, - mut mine_delay, - mut mine_progress, - mut mine_ticks, - mut current_mining_item, - mut current_mining_pos, + ( + mut mine_delay, + mut mine_progress, + mut mine_ticks, + mut current_mining_item, + mut current_mining_pos, + ), ) in query { trace!("handle_mining_queued {mining_queued:?}"); @@ -360,9 +367,9 @@ pub fn handle_mining_queued( && get_mine_progress( block.as_ref(), held_item.kind(), - &inventory.inventory_menu, fluid_on_eyes, physics, + attributes, active_effects, ) >= 1. { @@ -380,7 +387,7 @@ pub fn handle_mining_queued( trace!("inserting mining component {mining:?} for entity {entity:?}"); commands.entity(entity).insert(mining); **current_mining_pos = Some(mining_queued.position); - **current_mining_item = held_item; + **current_mining_item = held_item.clone(); **mine_progress = 0.; **mine_ticks = 0.; mine_block_progress_events.write(MineBlockProgressEvent { @@ -430,7 +437,7 @@ fn is_same_mining_target( current_mining_item: &MineItem, ) -> bool { let held_item = inventory.held_item(); - Some(target_block) == current_mining_pos.0 && held_item == current_mining_item.0 + Some(target_block) == current_mining_pos.0 && held_item == ¤t_mining_item.0 } /// A component bundle for players that can mine blocks. @@ -601,6 +608,7 @@ pub fn continue_mining_block( &ActiveEffects, &FluidOnEyes, &Physics, + &Attributes, &Mining, &mut MineDelay, &mut MineProgress, @@ -621,6 +629,7 @@ pub fn continue_mining_block( active_effects, fluid_on_eyes, physics, + attributes, mining, mut mine_delay, mut mine_progress, @@ -673,9 +682,9 @@ pub fn continue_mining_block( **mine_progress += get_mine_progress( block.as_ref(), current_mining_item.kind(), - &inventory.inventory_menu, fluid_on_eyes, physics, + attributes, active_effects, ); |
