diff options
| author | mat <github@matdoes.dev> | 2022-06-24 23:10:59 -0500 |
|---|---|---|
| committer | mat <github@matdoes.dev> | 2022-06-24 23:10:59 -0500 |
| commit | b030b0ea330c674415f7e30634957167b2fa6a6d (patch) | |
| tree | a55ca353bb546967fb56e250e0da469f8d4ea291 /azalea-client/src/movement.rs | |
| parent | 5643cc4a9450d000a3cc7bc771409313cdfbf5b4 (diff) | |
| download | azalea-drasl-b030b0ea330c674415f7e30634957167b2fa6a6d.tar.xz | |
start adding moving
Diffstat (limited to 'azalea-client/src/movement.rs')
| -rw-r--r-- | azalea-client/src/movement.rs | 24 |
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(()) } } |
