steel_protocol/packets/game/
s_accept_teleportation.rs1use steel_macros::{ReadFrom, ServerPacket};
4
5#[derive(ReadFrom, ServerPacket, Clone, Debug)]
10pub struct SAcceptTeleportation {
11 #[read(as = VarInt)]
13 pub teleport_id: i32,
14 pub x: f64,
16 pub y: f64,
18 pub z: f64,
20 pub y_rot: f32,
22 pub x_rot: f32,
24}
25
26#[cfg(test)]
27mod tests {
28 use std::io::Cursor;
29
30 use steel_utils::serial::ReadFrom as _;
31
32 use super::*;
33
34 #[test]
35 fn accept_teleportation_reads_position_after_id() {
36 let mut bytes = vec![1]; for value in [1.5f64, 64.0, -2.5] {
38 bytes.extend_from_slice(&value.to_be_bytes());
39 }
40 bytes.extend_from_slice(&90.0f32.to_be_bytes());
41 bytes.extend_from_slice(&(-45.0f32).to_be_bytes());
42
43 let packet =
44 SAcceptTeleportation::read(&mut Cursor::new(&bytes[..])).expect("should decode");
45
46 assert_eq!(packet.teleport_id, 1);
47 assert_eq!((packet.x, packet.y, packet.z), (1.5, 64.0, -2.5));
48 assert_eq!((packet.y_rot, packet.x_rot), (90.0, -45.0));
49 }
50}