1
2
Fork 0
mirror of https://github.com/mat-1/azalea.git synced 2025-08-02 06:16:04 +00:00

Added Left Click Mine (1.21) (#168)

* Added Auto Mine

* Unnecessary Block Reach Check

* Added `LeftClickMine`
This commit is contained in:
Aditya Kumar 2024-07-22 06:47:40 +05:30 committed by GitHub
parent ca48ed9e25
commit 832f960531
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -33,7 +33,15 @@ impl Plugin for MinePlugin {
.add_event::<StopMiningBlockEvent>()
.add_event::<MineBlockProgressEvent>()
.add_event::<AttackBlockEvent>()
.add_systems(GameTick, continue_mining_block.before(PhysicsSet))
.add_systems(
GameTick,
(
continue_mining_block,
handle_auto_mine
)
.chain()
.before(PhysicsSet)
)
.add_systems(
Update,
(
@ -66,6 +74,68 @@ impl Client {
position,
});
}
/// When enabled, the bot will mine any block that it is looking at if it is reachable.
pub fn left_click_mine(&self, enabled: bool) {
let mut ecs = self.ecs.lock();
let mut entity_mut = ecs.entity_mut(self.entity);
if enabled {
entity_mut.insert(LeftClickMine);
} else {
entity_mut.remove::<LeftClickMine>();
}
}
}
#[derive(Component)]
pub struct LeftClickMine;
#[allow(clippy::type_complexity)]
fn handle_auto_mine(
mut query: Query<
(
&HitResultComponent,
Entity,
Option<&Mining>,
&InventoryComponent,
&MineBlockPos,
&MineItem,
),
With<LeftClickMine>,
>,
mut start_mining_block_event: EventWriter<StartMiningBlockEvent>,
mut stop_mining_block_event: EventWriter<StopMiningBlockEvent>
) {
for (
hit_result_component,
entity,
mining,
inventory,
current_mining_pos,
current_mining_item,
) in &mut query.iter_mut()
{
let block_pos = hit_result_component.block_pos;
if (mining.is_none()
|| !is_same_mining_target(
block_pos,
inventory,
current_mining_pos,
current_mining_item,
)) && !hit_result_component.miss
{
start_mining_block_event.send(StartMiningBlockEvent {
entity,
position: block_pos,
});
} else if mining.is_some() && hit_result_component.miss {
stop_mining_block_event.send(StopMiningBlockEvent {
entity
});
}
}
}
/// Information about the block we're currently mining. This is only present if