From d6abd3fd06d02141fcaff471d4e2787eb970dcf9 Mon Sep 17 00:00:00 2001 From: ErrorNoInternet Date: Sun, 16 Feb 2025 20:19:01 -0500 Subject: [PATCH] feat(client): add looking_at field --- src/scripting/client/mod.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/scripting/client/mod.rs b/src/scripting/client/mod.rs index 64752b5..9f06dd8 100644 --- a/src/scripting/client/mod.rs +++ b/src/scripting/client/mod.rs @@ -10,6 +10,7 @@ use super::{ use azalea::{ Client as AzaleaClient, entity::metadata::{AirSupply, Score}, + interact::HitResultComponent, }; use mlua::{Lua, Result, UserData, UserDataFields, UserDataMethods}; @@ -49,6 +50,30 @@ impl UserData for Client { }) }); + f.add_field_method_get("looking_at", |lua, this| { + let hr = this + .inner + .as_ref() + .unwrap() + .component::(); + Ok(if hr.miss { + None + } else { + let result = lua.create_table()?; + result.set( + "position", + Vec3 { + x: f64::from(hr.block_pos.x), + y: f64::from(hr.block_pos.y), + z: f64::from(hr.block_pos.z), + }, + )?; + result.set("inside", hr.inside)?; + result.set("world_border", hr.world_border)?; + Some(result) + }) + }); + f.add_field_method_get("position", |_, this| { let p = this.inner.as_ref().unwrap().position(); Ok(Vec3 {