From 6c875082474431a39596b1547b436a9bec1f5533 Mon Sep 17 00:00:00 2001 From: Lizzy Fleckenstein Date: Fri, 10 Feb 2023 15:53:15 +0100 Subject: Initial commit --- src/to_srv.rs | 133 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 src/to_srv.rs (limited to 'src/to_srv.rs') diff --git a/src/to_srv.rs b/src/to_srv.rs new file mode 100644 index 0000000..03cb5a4 --- /dev/null +++ b/src/to_srv.rs @@ -0,0 +1,133 @@ +use super::*; + +#[mt_derive(to = "srv", repr = "u32", enumset)] +pub enum Key { + Forward, + Backward, + Left, + Right, + Jump, + Special, + Sneak, + Dig, + Place, + Zoom, +} + +#[mt_derive(to = "srv")] +pub struct PlayerPos { + pub pos_100: [i32; 3], + pub vel_100: [i32; 3], + pub pitch_100: i32, + pub yaw_100: i32, + pub keys: EnumSet, + pub fov_80: u8, + pub wanted_range: u8, +} + +#[mt_derive(to = "srv", repr = "u8")] +pub enum Interaction { + Dig = 0, + StopDigging, + Dug, + Place, + Use, + Activate, +} + +#[mt_derive(to = "srv")] +pub struct PointedThing; // TODO + +#[mt_derive(to = "srv", repr = "u16", tag = "type", content = "data")] +pub enum ToSrvPkt { + Nil = 0, + Init { + serialize_version: u8, + #[mt(const16 = 1)] // supported compression + min_proto_version: u16, + max_proto_version: u16, + player_name: String, + #[mt(default)] + send_full_item_meta: bool, + } = 2, + Init2 { + lang: String, + } = 17, + JoinModChan { + channel: String, + } = 23, + LeaveModChan { + channel: String, + } = 24, + MsgModChan { + channel: String, + msg: String, + } = 25, + PlayerPos(PlayerPos) = 35, + GotBlocks { + #[mt(len8)] + blocks: Vec<[i16; 3]>, + } = 36, + DeletedBlocks { + #[mt(len8)] + blocks: Vec<[i16; 3]>, + } = 37, + InvAction { + #[mt(len0)] + action: String, + } = 49, + ChatMsg { + #[mt(utf16)] + msg: String, + } = 50, + FallDmg { + amount: u16, + } = 53, + SelectItem { + select_item: u16, + } = 55, + Respawn = 56, + Interact { + action: Interaction, + item_slot: u16, + #[mt(size32)] + pointed: PointedThing, + pos: PlayerPos, + } = 57, + RemovedSounds { + ids: Vec, + } = 58, + NodeMetaFields { + pos: [i16; 3], + formname: String, + fields: HashMap, + } = 59, + InvFields { + formname: String, + fields: HashMap, + } = 60, + ReqMedia { + filenames: Vec, + } = 64, + CltReady { + major: u8, + minor: u8, + patch: u8, + reserved: u8, + version: String, + formspec: u16, + } = 67, + FirstSrp { + salt: Vec, + verifier: Vec, + empty_passwd: bool, + } = 80, + SrpBytesA { + a: Vec, + no_sha1: bool, + } = 81, + SrpBytesM { + m: Vec, + } = 82, + Disco = 0xffff, +} -- cgit v1.2.3