diff options
| author | mat <git@matdoes.dev> | 2025-12-28 09:06:47 -0330 |
|---|---|---|
| committer | mat <git@matdoes.dev> | 2025-12-28 09:06:47 -0330 |
| commit | 839d536e8020b291bc1d213a5e8e823dc513a940 (patch) | |
| tree | 60cab8b908ad53af0126e2cb1dec670d073936a3 /azalea/examples/testbot/killaura.rs | |
| parent | 5b1a78baf757897532be8c308a37c99fb2ca3352 (diff) | |
| download | azalea-drasl-839d536e8020b291bc1d213a5e8e823dc513a940.tar.xz | |
add a few more functions for getting common components to Client
Diffstat (limited to 'azalea/examples/testbot/killaura.rs')
| -rw-r--r-- | azalea/examples/testbot/killaura.rs | 33 |
1 files changed, 9 insertions, 24 deletions
diff --git a/azalea/examples/testbot/killaura.rs b/azalea/examples/testbot/killaura.rs index e3d9091c..e6eb40ba 100644 --- a/azalea/examples/testbot/killaura.rs +++ b/azalea/examples/testbot/killaura.rs @@ -2,7 +2,6 @@ use azalea::{ ecs::prelude::*, entity::{Dead, LocalEntity, Position, metadata::AbstractMonster}, prelude::*, - world::InstanceName, }; use crate::State; @@ -14,33 +13,19 @@ pub fn tick(bot: Client, state: State) -> anyhow::Result<()> { if bot.has_attack_cooldown() { return Ok(()); } - let mut nearest_entity = None; - let mut nearest_distance = f64::INFINITY; let bot_position = bot.eye_position(); - let bot_instance_name = bot.component::<InstanceName>().clone(); - { - let mut ecs = bot.ecs.write(); - let mut query = ecs - .query_filtered::<(Entity, &Position, &InstanceName), ( - With<AbstractMonster>, - Without<LocalEntity>, - Without<Dead>, - )>(); - for (entity_id, position, instance_name) in query.iter(&ecs) { - if instance_name != &bot_instance_name { - continue; - } - let distance = bot_position.distance_to(**position); - if distance < 4. && distance < nearest_distance { - nearest_entity = Some(entity_id); - nearest_distance = distance; - } - } - } + let nearest_entity = bot.nearest_entity_by::<&Position, ( + With<AbstractMonster>, + Without<LocalEntity>, + Without<Dead>, + )>(|position: &Position| { + let distance = bot_position.distance_to(**position); + distance < 4. + }); + if let Some(nearest_entity) = nearest_entity { println!("attacking {nearest_entity:?}"); - println!("distance {nearest_distance:?}"); bot.attack(nearest_entity); } |
