summaryrefslogtreecommitdiff
path: root/src/to_clt.rs
diff options
context:
space:
mode:
authorLizzy Fleckenstein <eliasfleckenstein@web.de>2023-02-10 15:53:15 +0100
committerLizzy Fleckenstein <eliasfleckenstein@web.de>2023-02-10 15:53:15 +0100
commit6c875082474431a39596b1547b436a9bec1f5533 (patch)
treebafa770893e6a5a1daea8b57cc5a3f3574da3cb6 /src/to_clt.rs
downloadmt_net-6c875082474431a39596b1547b436a9bec1f5533.tar.xz
Initial commit
Diffstat (limited to 'src/to_clt.rs')
-rw-r--r--src/to_clt.rs326
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,
+}