3 #[mt_derive(to = "srv", repr = "u32", enumset)]
17 #[cfg(feature = "client")]
18 fn ser_cast_err() -> mt_ser::SerializeError {
19 mt_ser::SerializeError::Other("cast failed".into())
22 #[cfg(feature = "server")]
23 fn des_cast_err() -> mt_ser::DeserializeError {
24 mt_ser::DeserializeError::Other("cast failed".into())
27 #[mt_derive(to = "srv")]
28 pub struct PlayerPos {
29 #[mt(multiplier = "100.0 * BS")]
30 #[mt(map_ser = "|x| x.cast::<i32>().ok_or_else(ser_cast_err)")]
31 #[mt(map_des = "|x: Point3<i32>| x.cast::<f32>().ok_or_else(des_cast_err)")]
33 #[mt(multiplier = "100.0 * BS")]
34 #[mt(map_ser = "|x| x.cast::<i32>().ok_or_else(ser_cast_err)")]
35 #[mt(map_des = "|x: Vector3<i32>| x.cast::<f32>().ok_or_else(des_cast_err)")]
36 pub vel: Vector3<f32>,
37 #[mt(multiplier = "100.0")]
38 #[mt(map_ser = "|x| Ok(x.0 as i32)", map_des = "|x: i32| Ok(Deg(x as f32))")]
40 #[mt(multiplier = "100.0")]
41 #[mt(map_ser = "|x| Ok(x.0 as i32)", map_des = "|x: i32| Ok(Deg(x as f32))")]
43 pub keys: EnumSet<Key>,
44 #[mt(multiplier = "80.0")]
45 #[mt(map_ser = "|x| Ok(x.0 as u8)", map_des = "|x: u8| Ok(Rad(x as f32))")]
50 #[mt_derive(to = "srv", repr = "u8")]
51 pub enum Interaction {
60 #[mt_derive(to = "srv", repr = "u8", tag = "type")]
61 #[mt(const_before = "0u8")] // version
62 pub enum PointedThing {
73 #[mt_derive(to = "srv", repr = "u16", tag = "type", content = "data")]
77 serialize_version: u8,
78 #[mt(const_before = "1u16")] // supported compression
79 proto_version: RangeInclusive<u16>,
82 send_full_item_meta: bool,
97 PlayerPos(PlayerPos) = 35,
100 blocks: Vec<Point3<i16>>,
104 blocks: Vec<[i16; 3]>,
129 pointed: PointedThing,
138 #[mt(len = "(DefCfg, (DefCfg, u32))")]
139 fields: HashMap<String, String>,
143 #[mt(len = "(DefCfg, (DefCfg, u32))")]
144 fields: HashMap<String, String>,
147 filenames: Vec<String>,
172 impl PktInfo for ToSrvPkt {
173 fn pkt_info(&self) -> (u8, bool) {
177 Init { .. } => (1, false),
179 | RequestMedia { .. }
183 | SrpBytesM { .. } => (1, true),
184 PlayerPos { .. } => (0, false),
185 GotBlocks { .. } | HaveMedia { .. } | DeletedBlocks { .. } | RemovedSounds { .. } => {