aboutsummaryrefslogtreecommitdiff
path: root/azalea-client/src/movement.rs
diff options
context:
space:
mode:
authormat <github@matdoes.dev>2022-06-24 23:10:59 -0500
committermat <github@matdoes.dev>2022-06-24 23:10:59 -0500
commitb030b0ea330c674415f7e30634957167b2fa6a6d (patch)
treea55ca353bb546967fb56e250e0da469f8d4ea291 /azalea-client/src/movement.rs
parent5643cc4a9450d000a3cc7bc771409313cdfbf5b4 (diff)
downloadazalea-drasl-b030b0ea330c674415f7e30634957167b2fa6a6d.tar.xz
start adding moving
Diffstat (limited to 'azalea-client/src/movement.rs')
-rw-r--r--azalea-client/src/movement.rs24
1 files changed, 20 insertions, 4 deletions
diff --git a/azalea-client/src/movement.rs b/azalea-client/src/movement.rs
index c9cd62e9..0402b15b 100644
--- a/azalea-client/src/movement.rs
+++ b/azalea-client/src/movement.rs
@@ -4,15 +4,29 @@ use azalea_protocol::packets::game::serverbound_move_player_packet_pos_rot::Serv
impl Client {
/// Set the client's position to the given coordinates.
- pub async fn move_to(&mut self, pos: &EntityPos) {
+ pub async fn move_to(&mut self, new_pos: EntityPos) -> Result<(), String> {
+ let mut state_lock = self.state.lock().unwrap();
+
+ let world = state_lock.world.as_ref().unwrap();
+
+ let player = &state_lock.player;
+ let player_id = if let Some(player) = player.entity(world) {
+ player.id
+ } else {
+ return Err("Player entity not found".to_string());
+ };
+
+ let world = state_lock.world.as_mut().unwrap();
+ world.move_entity(player_id, new_pos)?;
+
self.conn
.lock()
.await
.write(
ServerboundMovePlayerPacketPosRot {
- x: pos.x,
- y: pos.y,
- z: pos.z,
+ x: new_pos.x,
+ y: new_pos.y,
+ z: new_pos.z,
x_rot: 0.0,
y_rot: 0.0,
on_ground: false,
@@ -20,5 +34,7 @@ impl Client {
.get(),
)
.await;
+
+ Ok(())
}
}