From c65682d273298a26d25f7ced56801610a3f32873 Mon Sep 17 00:00:00 2001 From: ErrorNoInternet Date: Sun, 16 Feb 2025 22:22:44 -0500 Subject: [PATCH] feat(client): add pathfinder field --- src/scripting/client/mod.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/scripting/client/mod.rs b/src/scripting/client/mod.rs index 8ba98ee..94b54d9 100644 --- a/src/scripting/client/mod.rs +++ b/src/scripting/client/mod.rs @@ -11,6 +11,7 @@ use azalea::{ Client as AzaleaClient, entity::metadata::{AirSupply, Score}, interact::HitResultComponent, + pathfinder::{ExecutingPath, Pathfinder}, }; use mlua::{Lua, Result, UserData, UserDataFields, UserDataMethods}; @@ -74,6 +75,37 @@ impl UserData for Client { }) }); + f.add_field_method_get("pathfinder", |lua, this| { + let client = this.inner.as_ref().unwrap(); + let pathfinder = lua.create_table()?; + pathfinder.set( + "is_calculating", + client.component::().is_calculating, + )?; + pathfinder.set( + "is_executing", + if let Some(p) = client.get_component::() { + pathfinder.set( + "last_reached_node", + Vec3 { + x: f64::from(p.last_reached_node.x), + y: f64::from(p.last_reached_node.y), + z: f64::from(p.last_reached_node.z), + }, + )?; + pathfinder.set( + "last_node_reach_elapsed", + p.last_node_reached_at.elapsed().as_millis(), + )?; + pathfinder.set("is_path_partial", p.is_path_partial)?; + true + } else { + false + }, + )?; + Ok(pathfinder) + }); + f.add_field_method_get("position", |_, this| { let p = this.inner.as_ref().unwrap().position(); Ok(Vec3 {