diff options
author | Lizzy Fleckenstein <eliasfleckenstein@web.de> | 2023-02-10 15:53:15 +0100 |
---|---|---|
committer | Lizzy Fleckenstein <eliasfleckenstein@web.de> | 2023-02-10 15:53:15 +0100 |
commit | 6c875082474431a39596b1547b436a9bec1f5533 (patch) | |
tree | bafa770893e6a5a1daea8b57cc5a3f3574da3cb6 /src/to_clt.rs | |
download | mt_net-6c875082474431a39596b1547b436a9bec1f5533.tar.xz |
Initial commit
Diffstat (limited to 'src/to_clt.rs')
-rw-r--r-- | src/to_clt.rs | 326 |
1 files changed, 326 insertions, 0 deletions
diff --git a/src/to_clt.rs b/src/to_clt.rs new file mode 100644 index 0000000..fff0ff7 --- /dev/null +++ b/src/to_clt.rs @@ -0,0 +1,326 @@ +use super::*; + +#[mt_derive(to = "clt")] +pub struct ArgbColor { + pub a: u8, + pub r: u8, + pub g: u8, + pub b: u8, +} + +#[mt_derive(to = "clt", repr = "u8")] +pub enum ModChanSig { + JoinOk = 0, + JoinFail, + LeaveOk, + LeaveFail, + NotRegistered, + SetState, +} + +mod chat; +mod env; +mod hud; +mod media; +mod status; + +pub use chat::*; +pub use env::*; +pub use hud::*; +pub use media::*; +pub use status::*; + +#[mt_derive(to = "clt", repr = "u8", tag = "type", content = "data")] +pub enum ToCltPkt { + Hello { + serialize_version: u8, + #[mt(const16 = 1)] // compression + proto_version: u16, + auth_methods: EnumSet<AuthMethod>, + username: String, + } = 2, + AcceptAuth { + player_pos: [f32; 3], + map_seed: u64, + send_interval: f32, + sudo_auth_methods: EnumSet<AuthMethod>, + } = 3, + AcceptSudoMode { + sudo_auth_methods: EnumSet<AuthMethod>, + } = 4, + DenySudoMode = 5, + Kick(KickReason) = 10, + BlockData { + pos: [i16; 3], + #[mt(zstd)] + block: Box<MapBlock>, + } = 32, + AddNode { + pos: [i16; 3], + param0: u16, + param1: u8, + param2: u8, + keep_meta: bool, + } = 33, + RemoveNode { + pos: [i16; 3], + } = 34, + Inv { + inv: String, + } = 39, + TimeOfDay { + time: u16, + speed: f32, + } = 41, + CsmRestrictionFlags { + flags: EnumSet<CsmRestrictionFlag>, + map_range: u32, + } = 42, + AddPlayerVelocity { + vel: [f32; 3], + } = 43, + MediaPush { + no_len_hash: String, + filename: String, + callback_token: u32, + should_cache: bool, + } = 44, + ChatMsg { + #[mt(const8 = 1)] + msg_type: ChatMsgType, + #[mt(utf16)] + sender: String, + #[mt(utf16)] + text: String, + timestamp: i64, // unix time + } = 47, + ObjRemoveAdd { + remove: Vec<u16>, + add: Vec<ObjAdd>, + } = 49, + ObjMsgs { + msgs: Vec<ObjMsg>, + } = 50, + Hp { + hp: u16, + #[mt(default)] + damage_effect: bool, + } = 51, + MovePlayer { + pos: [f32; 3], + pitch: f32, + yaw: f32, + } = 52, + LegacyKick { + #[mt(utf16)] + reason: String, + } = 53, + Fov { + fov: f32, + multiplier: bool, + transition_time: f32, + } = 54, + DeathScreen { + point_cam: bool, + point_at: [f32; 3], + } = 55, + Media { + n: u16, + i: u16, + files: Vec<MediaPayload>, // FIXME: can we use a HashMap for this? + } = 56, + NodeDefs { + defs: Vec<NodeDef>, + } = 58, + AnnounceMedia { + files: Vec<MediaAnnounce>, // FIXME: can we use a HashMap for this? + url: String, + } = 60, + #[mt(size32, zlib)] + ItemDefs { + #[mt(const8 = 0)] // version + defs: Vec<ItemDef>, + aliases: HashMap<String, String>, + } = 61, + PlaySound { + id: u32, + name: String, + gain: f32, + src_type: SoundSrcType, + pos: [f32; 3], + src_obj_id: u16, + #[serde(rename = "loop")] + sound_loop: bool, + fade: f32, + pitch: f32, + ephermeral: bool, + } = 63, + StopSound { + id: u32, + } = 64, + Privs { + privs: HashSet<String>, + } = 65, + InvFormspec { + #[mt(size32)] + formspec: String, + } = 66, + DetachedInv { + name: String, + keep: bool, + len: u16, + #[mt(len0)] + inv: String, + } = 67, + ShowFormspec { + #[mt(len32)] + formspec: String, + formname: String, + } = 68, + Movement { + default_accel: f32, + air_accel: f32, + fast_accel: f32, + walk_speed: f32, + crouch_speed: f32, + fast_speed: f32, + climb_speed: f32, + jump_speed: f32, + gravity: f32, + } = 69, + SpawnParticle { + pos: [f32; 3], + vel: [f32; 3], + acc: [f32; 3], + expiration_time: f32, + size: f32, + collide: bool, + #[mt(len32)] + texture: String, + vertical: bool, + collision_rm: bool, + anim_params: TileAnim, + glow: u8, + obj_collision: bool, + node_param0: u16, + node_param2: u8, + node_tile: u8, + } = 70, + AddParticleSpawner { + amount: u16, + duration: f32, + pos: [[f32; 3]; 2], + vel: [[f32; 3]; 2], + acc: [[f32; 3]; 2], + expiration_time: [f32; 2], + size: [f32; 2], + collide: bool, + #[mt(len32)] + texture: String, + id: u32, + vertical: bool, + collision_rm: bool, + attached_obj_id: u16, + anim_params: TileAnim, + glow: u8, + obj_collision: bool, + node_param0: u16, + node_param2: u8, + node_tile: u8, + } = 71, + AddHud { + id: u32, + hud: HudElement, + } = 73, + RemoveHud { + id: u32, + } = 74, + ChangeHud { + id: u32, + change: HudChange, + } = 75, + HudFlags { + flags: EnumSet<HudFlag>, + mask: EnumSet<HudFlag>, + } = 76, + SetHotbarParam(HotbarParam) = 77, + Breath { + breath: u16, + } = 78, + // TODO + SkyParams = 79, + OverrideDayNightRatio { + #[serde(rename = "override")] + ratio_override: bool, + ratio: u16, + } = 80, + LocalPlayerAnim { + idle: [i32; 2], + walk: [i32; 2], + dig: [i32; 2], + walk_dig: [i32; 2], + speed: f32, + } = 81, + EyeOffset { + first: [f32; 3], + third: [f32; 3], + } = 82, + RemoveParticleSpawner { + id: u32, + } = 83, + CloudParams { + density: f32, + diffuse_color: ArgbColor, + ambient_color: ArgbColor, + height: f32, + thickness: f32, + speed: [f32; 2], + } = 84, + FadeSound { + id: u32, + step: f32, + gain: f32, + } = 85, + UpdatePlayerList { + update_type: PlayerListUpdateType, + players: HashSet<String>, + } = 86, + ModChanMsg { + channel: String, + sender: String, + msg: String, + } = 87, + ModChanSig { + signal: ModChanSig, + channel: String, + } = 88, + NodeMetasChanged(#[mt(size32)] HashMap<[i16; 3], NodeMeta>) = 89, + SunParams { + visible: bool, + texture: String, + tone_map: String, + rise: String, + rising: bool, + size: f32, + } = 90, + MoonParams { + visible: bool, + texture: String, + tone_map: String, + size: f32, + } = 91, + StarParams { + visible: bool, + texture: String, + tone_map: String, + size: f32, + } = 92, + SrpBytesSaltB { + salt: Vec<u8>, + b: Vec<u8>, + } = 96, + FormspecPrepend { + prepend: String, + } = 97, + MinimapModes(MinimapModePkt) = 98, +} |