From 3236c4c32ec4ab3feff5a147453aafafec781360 Mon Sep 17 00:00:00 2001 From: ErrorNoInternet Date: Sat, 22 Feb 2025 14:02:32 -0500 Subject: [PATCH] feat(client): add set_position method --- src/lua/client/mod.rs | 1 + src/lua/client/movement.rs | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/src/lua/client/mod.rs b/src/lua/client/mod.rs index cae8fc1..4b6224e 100644 --- a/src/lua/client/mod.rs +++ b/src/lua/client/mod.rs @@ -72,6 +72,7 @@ impl UserData for Client { m.add_method("get_fluid_state", world::get_fluid_state); m.add_method("set_held_slot", container::set_held_slot); m.add_method("set_mining", interaction::set_mining); + m.add_method("set_position", movement::set_position); m.add_method("set_sneaking", movement::set_sneaking); m.add_method("stop_pathfinding", movement::stop_pathfinding); m.add_method("stop_sleeping", movement::stop_sleeping); diff --git a/src/lua/client/movement.rs b/src/lua/client/movement.rs index 5d9d620..7ad4720 100644 --- a/src/lua/client/movement.rs +++ b/src/lua/client/movement.rs @@ -185,6 +185,15 @@ pub fn set_jumping(_lua: &Lua, client: &mut Client, jumping: bool) -> Result<()> Ok(()) } +pub fn set_position(_lua: &Lua, client: &Client, new_position: Vec3) -> Result<()> { + let mut ecs = client.ecs.lock(); + let mut position = client.query::<&mut Position>(&mut ecs); + position.x = new_position.x; + position.y = new_position.y; + position.z = new_position.z; + Ok(()) +} + pub fn set_sneaking(_lua: &Lua, client: &Client, sneaking: bool) -> Result<()> { if let Err(error) = client.write_packet(ServerboundPlayerCommand { id: client.component::(),