]> git.lizzy.rs Git - mt_net.git/blob - src/to_clt.rs
Fix various packets
[mt_net.git] / src / to_clt.rs
1 use super::*;
2
3 #[mt_derive(to = "clt")]
4 pub struct Color {
5     pub a: u8,
6     pub r: u8,
7     pub g: u8,
8     pub b: u8,
9 }
10
11 #[mt_derive(to = "clt", repr = "u8")]
12 pub enum ModChanSig {
13     JoinOk = 0,
14     JoinFail,
15     LeaveOk,
16     LeaveFail,
17     NotRegistered,
18     SetState,
19 }
20
21 mod chat;
22 mod env;
23 mod hud;
24 mod media;
25 mod status;
26
27 pub use chat::*;
28 pub use env::*;
29 pub use hud::*;
30 pub use media::*;
31 pub use status::*;
32
33 #[mt_derive(to = "clt", repr = "u16", tag = "type", content = "data")]
34 pub enum ToCltPkt {
35     Hello {
36         serialize_version: u8,
37         #[mt(const_before = "1u16")] // compression
38         proto_version: u16,
39         auth_methods: EnumSet<AuthMethod>,
40         username: String,
41     } = 2,
42     AcceptAuth {
43         player_pos: [f32; 3],
44         map_seed: u64,
45         send_interval: f32,
46         sudo_auth_methods: EnumSet<AuthMethod>,
47     } = 3,
48     AcceptSudoMode {
49         #[mt(const_after = "[0u8; 15]")]
50         sudo_auth_methods: EnumSet<AuthMethod>,
51     } = 4,
52     DenySudoMode = 5,
53     Kick(KickReason) = 10,
54     BlockData {
55         pos: [i16; 3],
56         #[mt(zstd)]
57         block: Box<MapBlock>,
58     } = 32,
59     AddNode {
60         pos: [i16; 3],
61         param0: u16,
62         param1: u8,
63         param2: u8,
64         keep_meta: bool,
65     } = 33,
66     RemoveNode {
67         pos: [i16; 3],
68     } = 34,
69     Inv {
70         inv: String,
71     } = 39,
72     TimeOfDay {
73         time: u16,
74         speed: f32,
75     } = 41,
76     CsmRestrictionFlags {
77         flags: EnumSet<CsmRestrictionFlag>,
78         map_range: u32,
79     } = 42,
80     AddPlayerVelocity {
81         vel: [f32; 3],
82     } = 43,
83     MediaPush {
84         no_len_hash: String,
85         filename: String,
86         callback_token: u32,
87         should_cache: bool,
88     } = 44,
89     ChatMsg {
90         #[mt(const_before = "1u8")]
91         msg_type: ChatMsgType,
92         #[mt(len = "Utf16")]
93         sender: String,
94         #[mt(len = "Utf16")]
95         text: String,
96         timestamp: i64, // unix time
97     } = 47,
98     ObjRemoveAdd {
99         remove: Vec<u16>,
100         add: Vec<ObjAdd>,
101     } = 49,
102     ObjMsgs {
103         #[mt(len = "()")]
104         msgs: Vec<ObjIdMsg>,
105     } = 50,
106     Hp {
107         hp: u16,
108         #[mt(default)]
109         damage_effect: bool,
110     } = 51,
111     MovePlayer {
112         pos: [f32; 3],
113         pitch: f32,
114         yaw: f32,
115     } = 52,
116     LegacyKick {
117         #[mt(len = "Utf16")]
118         reason: String,
119     } = 53,
120     Fov {
121         fov: f32,
122         multiplier: bool,
123         transition_time: f32,
124     } = 54,
125     DeathScreen {
126         point_cam: bool,
127         point_at: [f32; 3],
128     } = 55,
129     Media {
130         n: u16,
131         i: u16,
132         #[mt(len = "(u32, (DefCfg, u32))")]
133         files: HashMap<String, Vec<u8>>, // name -> payload
134     } = 56,
135     #[mt(size = "u32", zlib)]
136     NodeDefs {
137         #[mt(const_before = "1u8")] // version
138         defs: Vec<NodeDef>,
139     } = 58,
140     AnnounceMedia {
141         files: HashMap<String, String>, // name -> base64 sha1 hash
142         url: String,
143     } = 60,
144     #[mt(size = "u32", zlib)]
145     ItemDefs {
146         #[mt(const_before = "0u8")] // version
147         defs: Vec<ItemDef>,
148         aliases: HashMap<String, String>,
149     } = 61,
150     PlaySound {
151         id: u32,
152         name: String,
153         gain: f32,
154         src_type: SoundSrcType,
155         pos: [f32; 3],
156         src_obj_id: u16,
157         #[serde(rename = "loop")]
158         sound_loop: bool,
159         fade: f32,
160         pitch: f32,
161         ephermeral: bool,
162     } = 63,
163     StopSound {
164         id: u32,
165     } = 64,
166     Privs {
167         privs: HashSet<String>,
168     } = 65,
169     InvFormspec {
170         #[mt(size = "u32")]
171         formspec: String,
172     } = 66,
173     DetachedInv {
174         name: String,
175         keep: bool,
176         len: u16,
177         #[mt(len = "()")]
178         inv: String,
179     } = 67,
180     ShowFormspec {
181         #[mt(len = "u32")]
182         formspec: String,
183         formname: String,
184     } = 68,
185     Movement {
186         default_accel: f32,
187         air_accel: f32,
188         fast_accel: f32,
189         walk_speed: f32,
190         crouch_speed: f32,
191         fast_speed: f32,
192         climb_speed: f32,
193         jump_speed: f32,
194         fluidity: f32,
195         smoothing: f32,
196         sink: f32,
197         gravity: f32,
198     } = 69,
199     SpawnParticle {
200         pos: [f32; 3],
201         vel: [f32; 3],
202         acc: [f32; 3],
203         expiration_time: f32,
204         size: f32,
205         collide: bool,
206         #[mt(len = "u32")]
207         texture: String,
208         vertical: bool,
209         collision_rm: bool,
210         anim_params: TileAnim,
211         glow: u8,
212         obj_collision: bool,
213         node_param0: u16,
214         node_param2: u8,
215         node_tile: u8,
216     } = 70,
217     AddParticleSpawner {
218         amount: u16,
219         duration: f32,
220         pos: [[f32; 3]; 2],
221         vel: [[f32; 3]; 2],
222         acc: [[f32; 3]; 2],
223         expiration_time: [f32; 2],
224         size: [f32; 2],
225         collide: bool,
226         #[mt(len = "u32")]
227         texture: String,
228         id: u32,
229         vertical: bool,
230         collision_rm: bool,
231         attached_obj_id: u16,
232         anim_params: TileAnim,
233         glow: u8,
234         obj_collision: bool,
235         node_param0: u16,
236         node_param2: u8,
237         node_tile: u8,
238     } = 71,
239     AddHud {
240         id: u32,
241         hud: HudElement,
242     } = 73,
243     RemoveHud {
244         id: u32,
245     } = 74,
246     ChangeHud {
247         id: u32,
248         change: HudChange,
249     } = 75,
250     HudFlags {
251         flags: EnumSet<HudFlag>,
252         mask: EnumSet<HudFlag>,
253     } = 76,
254     SetHotbarParam(HotbarParam) = 77,
255     Breath {
256         breath: u16,
257     } = 78,
258     // TODO
259     SkyParams = 79,
260     OverrideDayNightRatio {
261         #[serde(rename = "override")]
262         ratio_override: bool,
263         ratio: u16,
264     } = 80,
265     LocalPlayerAnim {
266         idle: [i32; 2],
267         walk: [i32; 2],
268         dig: [i32; 2],
269         walk_dig: [i32; 2],
270         speed: f32,
271     } = 81,
272     EyeOffset {
273         first: [f32; 3],
274         third: [f32; 3],
275     } = 82,
276     RemoveParticleSpawner {
277         id: u32,
278     } = 83,
279     CloudParams {
280         density: f32,
281         diffuse_color: Color,
282         ambient_color: Color,
283         height: f32,
284         thickness: f32,
285         speed: [f32; 2],
286     } = 84,
287     FadeSound {
288         id: u32,
289         step: f32,
290         gain: f32,
291     } = 85,
292     UpdatePlayerList {
293         update_type: PlayerListUpdateType,
294         players: HashSet<String>,
295     } = 86,
296     ModChanMsg {
297         channel: String,
298         sender: String,
299         msg: String,
300     } = 87,
301     ModChanSig {
302         signal: ModChanSig,
303         channel: String,
304     } = 88,
305     NodeMetasChanged {
306         #[mt(size = "u32")]
307         changed: HashMap<[i16; 3], NodeMeta>,
308     } = 89,
309     SunParams {
310         visible: bool,
311         texture: String,
312         tone_map: String,
313         rise: String,
314         rising: bool,
315         size: f32,
316     } = 90,
317     MoonParams {
318         visible: bool,
319         texture: String,
320         tone_map: String,
321         size: f32,
322     } = 91,
323     StarParams {
324         visible: bool,
325         count: u32,
326         color: Color,
327         size: f32,
328     } = 92,
329     SrpBytesSaltB {
330         salt: Vec<u8>,
331         b: Vec<u8>,
332     } = 96,
333     FormspecPrepend {
334         prepend: String,
335     } = 97,
336     MinimapModes(MinimapModesPkt) = 98,
337 }