]> git.lizzy.rs Git - hydra-dragonfire.git/blob - convert.go
Add convert.go to tree
[hydra-dragonfire.git] / convert.go
1 // generated by mkconvert.lua, DO NOT EDIT
2 package main
3
4 import (
5         "github.com/Shopify/go-lua"
6         "github.com/anon55555/mt"
7 )
8
9 func luaPushAnimType(l *lua.State, val mt.AnimType) {
10         switch val {
11         case mt.NoAnim:
12                 l.PushNil()
13         case mt.VerticalFrameAnim:
14                 l.PushString("vertical_frame")
15         case mt.SpriteSheetAnim:
16                 l.PushString("sprite_sheet")
17         }
18 }
19
20 func luaPushChatMsgType(l *lua.State, val mt.ChatMsgType) {
21         switch val {
22         case mt.RawMsg:
23                 l.PushString("raw")
24         case mt.NormalMsg:
25                 l.PushString("normal")
26         case mt.AnnounceMsg:
27                 l.PushString("announce")
28         case mt.SysMsg:
29                 l.PushString("sys")
30         }
31 }
32
33 func luaPushHotbarParam(l *lua.State, val mt.HotbarParam) {
34         switch val {
35         case mt.HotbarSize:
36                 l.PushString("size")
37         case mt.HotbarImg:
38                 l.PushString("img")
39         case mt.HotbarSelImg:
40                 l.PushString("sel_img")
41         }
42 }
43
44 func luaPushHUDField(l *lua.State, val mt.HUDField) {
45         switch val {
46         case mt.HUDPos:
47                 l.PushString("pos")
48         case mt.HUDName:
49                 l.PushString("name")
50         case mt.HUDScale:
51                 l.PushString("scale")
52         case mt.HUDText:
53                 l.PushString("text")
54         case mt.HUDNumber:
55                 l.PushString("number")
56         case mt.HUDItem:
57                 l.PushString("item")
58         case mt.HUDDir:
59                 l.PushString("dir")
60         case mt.HUDAlign:
61                 l.PushString("align")
62         case mt.HUDOffset:
63                 l.PushString("offset")
64         case mt.HUDWorldPos:
65                 l.PushString("world_pos")
66         case mt.HUDSize:
67                 l.PushString("size")
68         case mt.HUDZIndex:
69                 l.PushString("z_index")
70         case mt.HUDText2:
71                 l.PushString("text_2")
72         }
73 }
74
75 func luaPushHUDType(l *lua.State, val mt.HUDType) {
76         switch val {
77         case mt.ImgHUD:
78                 l.PushString("img")
79         case mt.TextHUD:
80                 l.PushString("text")
81         case mt.StatbarHUD:
82                 l.PushString("statbar")
83         case mt.InvHUD:
84                 l.PushString("inv")
85         case mt.WaypointHUD:
86                 l.PushString("waypoint")
87         case mt.ImgWaypointHUD:
88                 l.PushString("img_waypoint")
89         }
90 }
91
92 func luaPushKickReason(l *lua.State, val mt.KickReason) {
93         switch val {
94         case mt.WrongPasswd:
95                 l.PushString("wrong_passwd")
96         case mt.UnexpectedData:
97                 l.PushString("unexpected_data")
98         case mt.SrvIsSingleplayer:
99                 l.PushString("srv_is_singleplayer")
100         case mt.UnsupportedVer:
101                 l.PushString("unsupported_ver")
102         case mt.BadNameChars:
103                 l.PushString("bad_name_chars")
104         case mt.BadName:
105                 l.PushString("bad_name")
106         case mt.TooManyClts:
107                 l.PushString("too_many_clts")
108         case mt.EmptyPasswd:
109                 l.PushString("empty_passwd")
110         case mt.AlreadyConnected:
111                 l.PushString("already_connected")
112         case mt.SrvErr:
113                 l.PushString("srv_err")
114         case mt.Custom:
115                 l.PushString("custom")
116         case mt.Shutdown:
117                 l.PushString("shutdown")
118         case mt.Crash:
119                 l.PushString("crash")
120         }
121 }
122
123 func luaPushModChanSig(l *lua.State, val mt.ModChanSig) {
124         switch val {
125         case mt.JoinOK:
126                 l.PushString("join_ok")
127         case mt.JoinFail:
128                 l.PushString("join_fail")
129         case mt.LeaveOK:
130                 l.PushString("leave_ok")
131         case mt.LeaveFail:
132                 l.PushString("leave_fail")
133         case mt.NotRegistered:
134                 l.PushString("not_registered")
135         case mt.SetState:
136                 l.PushString("set_state")
137         }
138 }
139
140 func luaPushPlayerListUpdateType(l *lua.State, val mt.PlayerListUpdateType) {
141         switch val {
142         case mt.InitPlayers:
143                 l.PushString("init")
144         case mt.AddPlayers:
145                 l.PushString("add")
146         case mt.RemovePlayers:
147                 l.PushString("remove")
148         }
149 }
150
151 func luaPushSoundSrcType(l *lua.State, val mt.SoundSrcType) {
152         switch val {
153         case mt.NoSrc:
154                 l.PushNil()
155         case mt.PosSrc:
156                 l.PushString("pos")
157         case mt.AOSrc:
158                 l.PushString("ao")
159         }
160 }
161
162 func luaPushAuthMethods(l *lua.State, val mt.AuthMethods) {
163         l.NewTable()
164         if val&mt.LegacyPasswd != 0 {
165                 l.PushBoolean(true)
166                 l.SetField(-2, "legacy_passwd")
167         }
168         if val&mt.SRP != 0 {
169                 l.PushBoolean(true)
170                 l.SetField(-2, "srp")
171         }
172         if val&mt.FirstSRP != 0 {
173                 l.PushBoolean(true)
174                 l.SetField(-2, "first_srp")
175         }
176 }
177
178 func luaPushCSMRestrictionFlags(l *lua.State, val mt.CSMRestrictionFlags) {
179         l.NewTable()
180         if val&mt.NoCSMs != 0 {
181                 l.PushBoolean(true)
182                 l.SetField(-2, "no_csms")
183         }
184         if val&mt.NoChatMsgs != 0 {
185                 l.PushBoolean(true)
186                 l.SetField(-2, "no_chat_msgs")
187         }
188         if val&mt.NoNodeDefs != 0 {
189                 l.PushBoolean(true)
190                 l.SetField(-2, "no_node_defs")
191         }
192         if val&mt.LimitMapRange != 0 {
193                 l.PushBoolean(true)
194                 l.SetField(-2, "limit_map_range")
195         }
196         if val&mt.NoPlayerList != 0 {
197                 l.PushBoolean(true)
198                 l.SetField(-2, "no_player_list")
199         }
200 }
201
202 func luaPushHUDFlags(l *lua.State, val mt.HUDFlags) {
203         l.NewTable()
204         if val&mt.ShowHotbar != 0 {
205                 l.PushBoolean(true)
206                 l.SetField(-2, "hotbar")
207         }
208         if val&mt.ShowHealthBar != 0 {
209                 l.PushBoolean(true)
210                 l.SetField(-2, "health_bar")
211         }
212         if val&mt.ShowCrosshair != 0 {
213                 l.PushBoolean(true)
214                 l.SetField(-2, "crosshair")
215         }
216         if val&mt.ShowWieldedItem != 0 {
217                 l.PushBoolean(true)
218                 l.SetField(-2, "wielded_item")
219         }
220         if val&mt.ShowBreathBar != 0 {
221                 l.PushBoolean(true)
222                 l.SetField(-2, "breath_bar")
223         }
224         if val&mt.ShowMinimap != 0 {
225                 l.PushBoolean(true)
226                 l.SetField(-2, "minimap")
227         }
228         if val&mt.ShowRadarMinimap != 0 {
229                 l.PushBoolean(true)
230                 l.SetField(-2, "radar_minimap")
231         }
232 }
233
234 func luaPushHUD(l *lua.State, val mt.HUD) {
235         l.NewTable()
236         luaPushVec2(l, [2]float64{float64(val.Align[0]), float64(val.Align[1])})
237         l.SetField(-2, "align")
238         l.PushInteger(int(val.Dir))
239         l.SetField(-2, "dir")
240         l.PushInteger(int(val.Item))
241         l.SetField(-2, "item")
242         l.PushString(string(val.Name))
243         l.SetField(-2, "name")
244         l.PushInteger(int(val.Number))
245         l.SetField(-2, "number")
246         luaPushVec2(l, [2]float64{float64(val.Offset[0]), float64(val.Offset[1])})
247         l.SetField(-2, "offset")
248         luaPushVec2(l, [2]float64{float64(val.Pos[0]), float64(val.Pos[1])})
249         l.SetField(-2, "pos")
250         luaPushVec2(l, [2]float64{float64(val.Scale[0]), float64(val.Scale[1])})
251         l.SetField(-2, "scale")
252         luaPushVec2(l, [2]float64{float64(val.Size[0]), float64(val.Size[1])})
253         l.SetField(-2, "size")
254         l.PushString(string(val.Text))
255         l.SetField(-2, "text")
256         l.PushString(string(val.Text2))
257         l.SetField(-2, "text_2")
258         luaPushHUDType(l, val.Type)
259         l.SetField(-2, "type")
260         luaPushVec3(l, [3]float64{float64(val.WorldPos[0]), float64(val.WorldPos[1]), float64(val.WorldPos[2])})
261         l.SetField(-2, "world_pos")
262         l.PushInteger(int(val.ZIndex))
263         l.SetField(-2, "z_index")
264 }
265
266 func luaPushNode(l *lua.State, val mt.Node) {
267         l.NewTable()
268         l.PushInteger(int(val.Param0))
269         l.SetField(-2, "param0")
270         l.PushInteger(int(val.Param1))
271         l.SetField(-2, "param1")
272         l.PushInteger(int(val.Param2))
273         l.SetField(-2, "param2")
274 }
275
276 func luaPushTileAnim(l *lua.State, val mt.TileAnim) {
277         l.NewTable()
278         luaPushVec2(l, [2]float64{float64(val.AspectRatio[0]), float64(val.AspectRatio[1])})
279         l.SetField(-2, "aspect_ratio")
280         l.PushNumber(float64(val.Duration))
281         l.SetField(-2, "duration")
282         luaPushVec2(l, [2]float64{float64(val.NFrames[0]), float64(val.NFrames[1])})
283         l.SetField(-2, "n_frames")
284         luaPushAnimType(l, val.Type)
285         l.SetField(-2, "type")
286 }
287
288 func pktToString(pkt *mt.Pkt) string {
289         switch pkt.Cmd.(type) {
290         case *mt.ToCltAcceptAuth:
291                 return "accept_auth"
292         case *mt.ToCltAcceptSudoMode:
293                 return "accept_sudo_mode"
294         case *mt.ToCltAddHUD:
295                 return "add_hud"
296         case *mt.ToCltAddNode:
297                 return "add_node"
298         case *mt.ToCltAddParticleSpawner:
299                 return "add_particle_spawner"
300         case *mt.ToCltAddPlayerVel:
301                 return "add_player_vel"
302         case *mt.ToCltAnnounceMedia:
303                 return "announce_media"
304         case *mt.ToCltAOMsgs:
305                 return "ao_msgs"
306         case *mt.ToCltAORmAdd:
307                 return "ao_rm_add"
308         case *mt.ToCltBlkData:
309                 return "blk_data"
310         case *mt.ToCltBreath:
311                 return "breath"
312         case *mt.ToCltChangeHUD:
313                 return "change_hud"
314         case *mt.ToCltChatMsg:
315                 return "chat_msg"
316         case *mt.ToCltCloudParams:
317                 return "cloud_params"
318         case *mt.ToCltCSMRestrictionFlags:
319                 return "csm_restriction_flags"
320         case *mt.ToCltDeathScreen:
321                 return "death_screen"
322         case *mt.ToCltDelParticleSpawner:
323                 return "del_particle_spawner"
324         case *mt.ToCltDenySudoMode:
325                 return "deny_sudo_mode"
326         case *mt.ToCltDetachedInv:
327                 return "detached_inv"
328         case *mt.ToCltDisco:
329                 return "disco"
330         case *mt.ToCltEyeOffset:
331                 return "eye_offset"
332         case *mt.ToCltFadeSound:
333                 return "fade_sound"
334         case *mt.ToCltFormspecPrepend:
335                 return "formspec_prepend"
336         case *mt.ToCltFOV:
337                 return "fov"
338         case *mt.ToCltHello:
339                 return "hello"
340         case *mt.ToCltHP:
341                 return "hp"
342         case *mt.ToCltHUDFlags:
343                 return "hud_flags"
344         case *mt.ToCltInv:
345                 return "inv"
346         case *mt.ToCltInvFormspec:
347                 return "inv_formspec"
348         case *mt.ToCltItemDefs:
349                 return "item_defs"
350         case *mt.ToCltKick:
351                 return "kick"
352         case *mt.ToCltLegacyKick:
353                 return "legacy_kick"
354         case *mt.ToCltLocalPlayerAnim:
355                 return "local_player_anim"
356         case *mt.ToCltMedia:
357                 return "media"
358         case *mt.ToCltMediaPush:
359                 return "media_push"
360         case *mt.ToCltMinimapModes:
361                 return "minimap_modes"
362         case *mt.ToCltModChanMsg:
363                 return "mod_chan_msg"
364         case *mt.ToCltModChanSig:
365                 return "mod_chan_sig"
366         case *mt.ToCltMoonParams:
367                 return "moon_params"
368         case *mt.ToCltMovePlayer:
369                 return "move_player"
370         case *mt.ToCltMovement:
371                 return "movement"
372         case *mt.ToCltNodeDefs:
373                 return "node_defs"
374         case *mt.ToCltNodeMetasChanged:
375                 return "node_metas_changed"
376         case *mt.ToCltOverrideDayNightRatio:
377                 return "override_day_night_ratio"
378         case *mt.ToCltPlaySound:
379                 return "play_sound"
380         case *mt.ToCltPrivs:
381                 return "privs"
382         case *mt.ToCltRemoveNode:
383                 return "remove_node"
384         case *mt.ToCltRmHUD:
385                 return "rm_hud"
386         case *mt.ToCltSetHotbarParam:
387                 return "set_hotbar_param"
388         case *mt.ToCltShowFormspec:
389                 return "show_formspec"
390         case *mt.ToCltSkyParams:
391                 return "sky_params"
392         case *mt.ToCltSpawnParticle:
393                 return "spawn_particle"
394         case *mt.ToCltSRPBytesSaltB:
395                 return "srp_bytes_salt_b"
396         case *mt.ToCltStarParams:
397                 return "star_params"
398         case *mt.ToCltStopSound:
399                 return "stop_sound"
400         case *mt.ToCltSunParams:
401                 return "sun_params"
402         case *mt.ToCltTimeOfDay:
403                 return "time_of_day"
404         case *mt.ToCltUpdatePlayerList:
405                 return "update_player_list"
406         }
407         panic("impossible")
408         return ""
409 }
410
411 func pktToLua(l *lua.State, pkt *mt.Pkt) {
412         if pkt == nil {
413                 l.PushNil()
414                 return
415         }
416         l.NewTable()
417         l.PushString(pktToString(pkt))
418         l.SetField(-2, "_type")
419         switch val := pkt.Cmd.(type) {
420         case *mt.ToCltAcceptAuth:
421                 l.PushNumber(float64(val.MapSeed))
422                 l.SetField(-2, "map_seed")
423                 luaPushVec3(l, [3]float64{float64(val.PlayerPos[0]), float64(val.PlayerPos[1]), float64(val.PlayerPos[2])})
424                 l.SetField(-2, "player_pos")
425                 l.PushNumber(float64(val.SendInterval))
426                 l.SetField(-2, "send_interval")
427                 luaPushAuthMethods(l, val.SudoAuthMethods)
428                 l.SetField(-2, "sudo_auth_methods")
429         case *mt.ToCltAddHUD:
430                 luaPushHUD(l, val.HUD)
431                 l.SetField(-2, "hud")
432                 l.PushInteger(int(val.ID))
433                 l.SetField(-2, "id")
434         case *mt.ToCltAddNode:
435                 l.PushBoolean(bool(val.KeepMeta))
436                 l.SetField(-2, "keep_meta")
437                 luaPushNode(l, val.Node)
438                 l.SetField(-2, "node")
439                 luaPushVec3(l, [3]float64{float64(val.Pos[0]), float64(val.Pos[1]), float64(val.Pos[2])})
440                 l.SetField(-2, "pos")
441         case *mt.ToCltAddParticleSpawner:
442                 luaPushBox3(l, [2][3]float64{{float64(val.Acc[0][0]), float64(val.Acc[0][1]), float64(val.Acc[0][2])}, {float64(val.Acc[1][0]), float64(val.Acc[1][1]), float64(val.Acc[1][2])}})
443                 l.SetField(-2, "acc")
444                 l.PushInteger(int(val.Amount))
445                 l.SetField(-2, "amount")
446                 luaPushTileAnim(l, val.AnimParams)
447                 l.SetField(-2, "anim_params")
448                 l.PushBoolean(bool(val.AOCollision))
449                 l.SetField(-2, "ao_collision")
450                 l.PushBoolean(bool(val.Collide))
451                 l.SetField(-2, "collide")
452                 l.PushBoolean(bool(val.CollisionRm))
453                 l.SetField(-2, "collision_rm")
454                 l.PushNumber(float64(val.Duration))
455                 l.SetField(-2, "duration")
456                 luaPushBox1(l, [2]float64{float64(val.ExpirationTime[0]), float64(val.ExpirationTime[1])})
457                 l.SetField(-2, "expiration_time")
458                 l.PushInteger(int(val.Glow))
459                 l.SetField(-2, "glow")
460                 l.PushInteger(int(val.ID))
461                 l.SetField(-2, "id")
462                 l.PushInteger(int(val.NodeParam0))
463                 l.SetField(-2, "node_param0")
464                 l.PushInteger(int(val.NodeParam2))
465                 l.SetField(-2, "node_param2")
466                 l.PushInteger(int(val.NodeTile))
467                 l.SetField(-2, "node_tile")
468                 luaPushBox3(l, [2][3]float64{{float64(val.Pos[0][0]), float64(val.Pos[0][1]), float64(val.Pos[0][2])}, {float64(val.Pos[1][0]), float64(val.Pos[1][1]), float64(val.Pos[1][2])}})
469                 l.SetField(-2, "pos")
470                 luaPushBox1(l, [2]float64{float64(val.Size[0]), float64(val.Size[1])})
471                 l.SetField(-2, "size")
472                 l.PushString(string(val.Texture))
473                 l.SetField(-2, "texture")
474                 luaPushBox3(l, [2][3]float64{{float64(val.Vel[0][0]), float64(val.Vel[0][1]), float64(val.Vel[0][2])}, {float64(val.Vel[1][0]), float64(val.Vel[1][1]), float64(val.Vel[1][2])}})
475                 l.SetField(-2, "vel")
476                 l.PushBoolean(bool(val.Vertical))
477                 l.SetField(-2, "vertical")
478         case *mt.ToCltAddPlayerVel:
479                 luaPushVec3(l, [3]float64{float64(val.Vel[0]), float64(val.Vel[1]), float64(val.Vel[2])})
480                 l.SetField(-2, "vel")
481         case *mt.ToCltBlkData:
482                 luaPushVec3(l, [3]float64{float64(val.Blkpos[0]), float64(val.Blkpos[1]), float64(val.Blkpos[2])})
483                 l.SetField(-2, "blkpos")
484         case *mt.ToCltBreath:
485                 l.PushInteger(int(val.Breath))
486                 l.SetField(-2, "breath")
487         case *mt.ToCltChangeHUD:
488                 if val.Field == mt.HUDAlign {
489                         luaPushVec2(l, [2]float64{float64(val.Align[0]), float64(val.Align[1])})
490                         l.SetField(-2, "align")
491                 }
492                 if val.Field == mt.HUDDir {
493                         l.PushInteger(int(val.Dir))
494                         l.SetField(-2, "dir")
495                 }
496                 luaPushHUDField(l, val.Field)
497                 l.SetField(-2, "field")
498                 l.PushInteger(int(val.ID))
499                 l.SetField(-2, "id")
500                 if val.Field == mt.HUDItem {
501                         l.PushInteger(int(val.Item))
502                         l.SetField(-2, "item")
503                 }
504                 if val.Field == mt.HUDName {
505                         l.PushString(string(val.Name))
506                         l.SetField(-2, "name")
507                 }
508                 if val.Field == mt.HUDNumber {
509                         l.PushInteger(int(val.Number))
510                         l.SetField(-2, "number")
511                 }
512                 if val.Field == mt.HUDOffset {
513                         luaPushVec2(l, [2]float64{float64(val.Offset[0]), float64(val.Offset[1])})
514                         l.SetField(-2, "offset")
515                 }
516                 if val.Field == mt.HUDPos {
517                         luaPushVec2(l, [2]float64{float64(val.Pos[0]), float64(val.Pos[1])})
518                         l.SetField(-2, "pos")
519                 }
520                 if val.Field == mt.HUDSize {
521                         luaPushVec2(l, [2]float64{float64(val.Size[0]), float64(val.Size[1])})
522                         l.SetField(-2, "size")
523                 }
524                 if val.Field == mt.HUDText {
525                         l.PushString(string(val.Text))
526                         l.SetField(-2, "text")
527                 }
528                 if val.Field == mt.HUDText2 {
529                         l.PushString(string(val.Text2))
530                         l.SetField(-2, "text_2")
531                 }
532                 if val.Field == mt.HUDWorldPos {
533                         luaPushVec3(l, [3]float64{float64(val.WorldPos[0]), float64(val.WorldPos[1]), float64(val.WorldPos[2])})
534                         l.SetField(-2, "world_pos")
535                 }
536                 if val.Field == mt.HUDZIndex {
537                         l.PushInteger(int(val.ZIndex))
538                         l.SetField(-2, "z_index")
539                 }
540         case *mt.ToCltChatMsg:
541                 l.PushString(string(val.Sender))
542                 l.SetField(-2, "sender")
543                 l.PushString(string(val.Text))
544                 l.SetField(-2, "text")
545                 l.PushNumber(float64(val.Timestamp))
546                 l.SetField(-2, "timestamp")
547                 luaPushChatMsgType(l, val.Type)
548                 l.SetField(-2, "type")
549         case *mt.ToCltCloudParams:
550                 luaPushColor(l, val.AmbientColor)
551                 l.SetField(-2, "ambient_color")
552                 l.PushNumber(float64(val.Density))
553                 l.SetField(-2, "density")
554                 luaPushColor(l, val.DiffuseColor)
555                 l.SetField(-2, "diffuse_color")
556                 l.PushNumber(float64(val.Height))
557                 l.SetField(-2, "height")
558                 luaPushVec2(l, [2]float64{float64(val.Speed[0]), float64(val.Speed[1])})
559                 l.SetField(-2, "speed")
560                 l.PushNumber(float64(val.Thickness))
561                 l.SetField(-2, "thickness")
562         case *mt.ToCltCSMRestrictionFlags:
563                 luaPushCSMRestrictionFlags(l, val.Flags)
564                 l.SetField(-2, "flags")
565                 l.PushInteger(int(val.MapRange))
566                 l.SetField(-2, "map_range")
567         case *mt.ToCltDeathScreen:
568                 luaPushVec3(l, [3]float64{float64(val.PointAt[0]), float64(val.PointAt[1]), float64(val.PointAt[2])})
569                 l.SetField(-2, "point_at")
570                 l.PushBoolean(bool(val.PointCam))
571                 l.SetField(-2, "point_cam")
572         case *mt.ToCltDelParticleSpawner:
573                 l.PushInteger(int(val.ID))
574                 l.SetField(-2, "id")
575         case *mt.ToCltDetachedInv:
576                 l.PushString(string(val.Inv))
577                 l.SetField(-2, "inv")
578                 l.PushBoolean(bool(val.Keep))
579                 l.SetField(-2, "keep")
580                 l.PushInteger(int(val.Len))
581                 l.SetField(-2, "len")
582                 l.PushString(string(val.Name))
583                 l.SetField(-2, "name")
584         case *mt.ToCltEyeOffset:
585                 luaPushVec3(l, [3]float64{float64(val.First[0]), float64(val.First[1]), float64(val.First[2])})
586                 l.SetField(-2, "first")
587                 luaPushVec3(l, [3]float64{float64(val.Third[0]), float64(val.Third[1]), float64(val.Third[2])})
588                 l.SetField(-2, "third")
589         case *mt.ToCltFadeSound:
590                 l.PushNumber(float64(val.Gain))
591                 l.SetField(-2, "gain")
592                 l.PushInteger(int(val.ID))
593                 l.SetField(-2, "id")
594                 l.PushNumber(float64(val.Step))
595                 l.SetField(-2, "step")
596         case *mt.ToCltFormspecPrepend:
597                 l.PushString(string(val.Prepend))
598                 l.SetField(-2, "prepend")
599         case *mt.ToCltFOV:
600                 l.PushNumber(float64(val.FOV))
601                 l.SetField(-2, "fov")
602                 l.PushBoolean(bool(val.Multiplier))
603                 l.SetField(-2, "multiplier")
604                 l.PushNumber(float64(val.TransitionTime))
605                 l.SetField(-2, "transition_time")
606         case *mt.ToCltHello:
607                 luaPushAuthMethods(l, val.AuthMethods)
608                 l.SetField(-2, "auth_methods")
609                 l.PushInteger(int(val.Compression))
610                 l.SetField(-2, "compression")
611                 l.PushInteger(int(val.ProtoVer))
612                 l.SetField(-2, "proto_ver")
613                 l.PushInteger(int(val.SerializeVer))
614                 l.SetField(-2, "serialize_ver")
615                 l.PushString(string(val.Username))
616                 l.SetField(-2, "username")
617         case *mt.ToCltHP:
618                 l.PushInteger(int(val.HP))
619                 l.SetField(-2, "hp")
620         case *mt.ToCltHUDFlags:
621                 luaPushHUDFlags(l, val.Flags)
622                 l.SetField(-2, "flags")
623                 luaPushHUDFlags(l, val.Mask)
624                 l.SetField(-2, "mask")
625         case *mt.ToCltInv:
626                 l.PushString(string(val.Inv))
627                 l.SetField(-2, "inv")
628         case *mt.ToCltInvFormspec:
629                 l.PushString(string(val.Formspec))
630                 l.SetField(-2, "formspec")
631         case *mt.ToCltKick:
632                 if dr := val.Reason; dr == mt.Custom || dr == mt.Shutdown || dr == mt.Crash {
633                         l.PushString(string(val.Custom))
634                         l.SetField(-2, "custom")
635                 }
636                 luaPushKickReason(l, val.Reason)
637                 l.SetField(-2, "reason")
638                 if dr := val.Reason; dr == mt.Shutdown || dr == mt.Crash {
639                         l.PushBoolean(bool(val.Reconnect))
640                         l.SetField(-2, "reconnect")
641                 }
642         case *mt.ToCltLegacyKick:
643                 l.PushString(string(val.Reason))
644                 l.SetField(-2, "reason")
645         case *mt.ToCltLocalPlayerAnim:
646                 luaPushBox1(l, [2]float64{float64(val.Dig[0]), float64(val.Dig[1])})
647                 l.SetField(-2, "dig")
648                 luaPushBox1(l, [2]float64{float64(val.Idle[0]), float64(val.Idle[1])})
649                 l.SetField(-2, "idle")
650                 l.PushNumber(float64(val.Speed))
651                 l.SetField(-2, "speed")
652                 luaPushBox1(l, [2]float64{float64(val.Walk[0]), float64(val.Walk[1])})
653                 l.SetField(-2, "walk")
654                 luaPushBox1(l, [2]float64{float64(val.WalkDig[0]), float64(val.WalkDig[1])})
655                 l.SetField(-2, "walk_dig")
656         case *mt.ToCltMediaPush:
657                 l.PushString(string(val.Data))
658                 l.SetField(-2, "data")
659                 l.PushString(string(val.Filename))
660                 l.SetField(-2, "filename")
661                 l.PushString(string(val.SHA1[:]))
662                 l.SetField(-2, "sha1")
663                 l.PushBoolean(bool(val.ShouldCache))
664                 l.SetField(-2, "should_cache")
665         case *mt.ToCltModChanMsg:
666                 l.PushString(string(val.Channel))
667                 l.SetField(-2, "channel")
668                 l.PushString(string(val.Msg))
669                 l.SetField(-2, "msg")
670                 l.PushString(string(val.Sender))
671                 l.SetField(-2, "sender")
672         case *mt.ToCltModChanSig:
673                 l.PushString(string(val.Channel))
674                 l.SetField(-2, "channel")
675                 luaPushModChanSig(l, val.Signal)
676                 l.SetField(-2, "signal")
677         case *mt.ToCltMoonParams:
678                 l.PushNumber(float64(val.Size))
679                 l.SetField(-2, "size")
680                 l.PushString(string(val.Texture))
681                 l.SetField(-2, "texture")
682                 l.PushString(string(val.ToneMap))
683                 l.SetField(-2, "tone_map")
684                 l.PushBoolean(bool(val.Visible))
685                 l.SetField(-2, "visible")
686         case *mt.ToCltMovePlayer:
687                 l.PushNumber(float64(val.Pitch))
688                 l.SetField(-2, "pitch")
689                 luaPushVec3(l, [3]float64{float64(val.Pos[0]), float64(val.Pos[1]), float64(val.Pos[2])})
690                 l.SetField(-2, "pos")
691                 l.PushNumber(float64(val.Yaw))
692                 l.SetField(-2, "yaw")
693         case *mt.ToCltMovement:
694                 l.PushNumber(float64(val.AirAccel))
695                 l.SetField(-2, "air_accel")
696                 l.PushNumber(float64(val.ClimbSpeed))
697                 l.SetField(-2, "climb_speed")
698                 l.PushNumber(float64(val.CrouchSpeed))
699                 l.SetField(-2, "crouch_speed")
700                 l.PushNumber(float64(val.DefaultAccel))
701                 l.SetField(-2, "default_accel")
702                 l.PushNumber(float64(val.FastAccel))
703                 l.SetField(-2, "fast_accel")
704                 l.PushNumber(float64(val.FastSpeed))
705                 l.SetField(-2, "fast_speed")
706                 l.PushNumber(float64(val.Fluidity))
707                 l.SetField(-2, "fluidity")
708                 l.PushNumber(float64(val.Gravity))
709                 l.SetField(-2, "gravity")
710                 l.PushNumber(float64(val.JumpSpeed))
711                 l.SetField(-2, "jump_speed")
712                 l.PushNumber(float64(val.Sink))
713                 l.SetField(-2, "sink")
714                 l.PushNumber(float64(val.Smoothing))
715                 l.SetField(-2, "smoothing")
716                 l.PushNumber(float64(val.WalkSpeed))
717                 l.SetField(-2, "walk_speed")
718         case *mt.ToCltOverrideDayNightRatio:
719                 l.PushBoolean(bool(val.Override))
720                 l.SetField(-2, "override")
721                 l.PushInteger(int(val.Ratio))
722                 l.SetField(-2, "ratio")
723         case *mt.ToCltPlaySound:
724                 l.PushBoolean(bool(val.Ephemeral))
725                 l.SetField(-2, "ephemeral")
726                 l.PushNumber(float64(val.Fade))
727                 l.SetField(-2, "fade")
728                 l.PushNumber(float64(val.Gain))
729                 l.SetField(-2, "gain")
730                 l.PushInteger(int(val.ID))
731                 l.SetField(-2, "id")
732                 l.PushBoolean(bool(val.Loop))
733                 l.SetField(-2, "loop")
734                 l.PushString(string(val.Name))
735                 l.SetField(-2, "name")
736                 l.PushNumber(float64(val.Pitch))
737                 l.SetField(-2, "pitch")
738                 luaPushVec3(l, [3]float64{float64(val.Pos[0]), float64(val.Pos[1]), float64(val.Pos[2])})
739                 l.SetField(-2, "pos")
740                 l.PushInteger(int(val.SrcAOID))
741                 l.SetField(-2, "src_aoid")
742                 luaPushSoundSrcType(l, val.SrcType)
743                 l.SetField(-2, "src_type")
744         case *mt.ToCltPrivs:
745                 luaPushStringSet(l, val.Privs)
746                 l.SetField(-2, "privs")
747         case *mt.ToCltRemoveNode:
748                 luaPushVec3(l, [3]float64{float64(val.Pos[0]), float64(val.Pos[1]), float64(val.Pos[2])})
749                 l.SetField(-2, "pos")
750         case *mt.ToCltRmHUD:
751                 l.PushInteger(int(val.ID))
752                 l.SetField(-2, "id")
753         case *mt.ToCltSetHotbarParam:
754                 l.PushString(string(val.Img))
755                 l.SetField(-2, "img")
756                 luaPushHotbarParam(l, val.Param)
757                 l.SetField(-2, "param")
758                 l.PushInteger(int(val.Size))
759                 l.SetField(-2, "size")
760         case *mt.ToCltShowFormspec:
761                 l.PushString(string(val.Formname))
762                 l.SetField(-2, "formname")
763                 l.PushString(string(val.Formspec))
764                 l.SetField(-2, "formspec")
765         case *mt.ToCltSkyParams:
766                 luaPushColor(l, val.BgColor)
767                 l.SetField(-2, "bg_color")
768                 l.PushBoolean(bool(val.Clouds))
769                 l.SetField(-2, "clouds")
770                 if val.Type == "regular" {
771                         luaPushColor(l, val.DawnHorizon)
772                         l.SetField(-2, "dawn_horizon")
773                 }
774                 if val.Type == "regular" {
775                         luaPushColor(l, val.DawnSky)
776                         l.SetField(-2, "dawn_sky")
777                 }
778                 if val.Type == "regular" {
779                         luaPushColor(l, val.DayHorizon)
780                         l.SetField(-2, "day_horizon")
781                 }
782                 if val.Type == "regular" {
783                         luaPushColor(l, val.DaySky)
784                         l.SetField(-2, "day_sky")
785                 }
786                 l.PushString(string(val.FogTintType))
787                 l.SetField(-2, "fog_tint_type")
788                 if val.Type == "regular" {
789                         luaPushColor(l, val.Indoor)
790                         l.SetField(-2, "indoor")
791                 }
792                 luaPushColor(l, val.MoonFogTint)
793                 l.SetField(-2, "moon_fog_tint")
794                 if val.Type == "regular" {
795                         luaPushColor(l, val.NightHorizon)
796                         l.SetField(-2, "night_horizon")
797                 }
798                 if val.Type == "regular" {
799                         luaPushColor(l, val.NightSky)
800                         l.SetField(-2, "night_sky")
801                 }
802                 luaPushColor(l, val.SunFogTint)
803                 l.SetField(-2, "sun_fog_tint")
804                 if val.Type == "skybox" {
805                         luaPushTextureList(l, val.Textures)
806                         l.SetField(-2, "textures")
807                 }
808                 l.PushString(string(val.Type))
809                 l.SetField(-2, "type")
810         case *mt.ToCltSpawnParticle:
811                 luaPushVec3(l, [3]float64{float64(val.Acc[0]), float64(val.Acc[1]), float64(val.Acc[2])})
812                 l.SetField(-2, "acc")
813                 luaPushTileAnim(l, val.AnimParams)
814                 l.SetField(-2, "anim_params")
815                 l.PushBoolean(bool(val.AOCollision))
816                 l.SetField(-2, "ao_collision")
817                 l.PushBoolean(bool(val.Collide))
818                 l.SetField(-2, "collide")
819                 l.PushBoolean(bool(val.CollisionRm))
820                 l.SetField(-2, "collision_rm")
821                 l.PushNumber(float64(val.ExpirationTime))
822                 l.SetField(-2, "expiration_time")
823                 l.PushInteger(int(val.Glow))
824                 l.SetField(-2, "glow")
825                 l.PushInteger(int(val.NodeParam0))
826                 l.SetField(-2, "node_param0")
827                 l.PushInteger(int(val.NodeParam2))
828                 l.SetField(-2, "node_param2")
829                 l.PushInteger(int(val.NodeTile))
830                 l.SetField(-2, "node_tile")
831                 luaPushVec3(l, [3]float64{float64(val.Pos[0]), float64(val.Pos[1]), float64(val.Pos[2])})
832                 l.SetField(-2, "pos")
833                 l.PushNumber(float64(val.Size))
834                 l.SetField(-2, "size")
835                 l.PushString(string(val.Texture))
836                 l.SetField(-2, "texture")
837                 luaPushVec3(l, [3]float64{float64(val.Vel[0]), float64(val.Vel[1]), float64(val.Vel[2])})
838                 l.SetField(-2, "vel")
839                 l.PushBoolean(bool(val.Vertical))
840                 l.SetField(-2, "vertical")
841         case *mt.ToCltSRPBytesSaltB:
842                 l.PushString(string(val.B))
843                 l.SetField(-2, "b")
844                 l.PushString(string(val.Salt))
845                 l.SetField(-2, "salt")
846         case *mt.ToCltStarParams:
847                 luaPushColor(l, val.Color)
848                 l.SetField(-2, "color")
849                 l.PushInteger(int(val.Count))
850                 l.SetField(-2, "count")
851                 l.PushNumber(float64(val.Size))
852                 l.SetField(-2, "size")
853                 l.PushBoolean(bool(val.Visible))
854                 l.SetField(-2, "visible")
855         case *mt.ToCltStopSound:
856                 l.PushInteger(int(val.ID))
857                 l.SetField(-2, "id")
858         case *mt.ToCltSunParams:
859                 l.PushString(string(val.Rise))
860                 l.SetField(-2, "rise")
861                 l.PushBoolean(bool(val.Rising))
862                 l.SetField(-2, "rising")
863                 l.PushNumber(float64(val.Size))
864                 l.SetField(-2, "size")
865                 l.PushString(string(val.Texture))
866                 l.SetField(-2, "texture")
867                 l.PushString(string(val.ToneMap))
868                 l.SetField(-2, "tone_map")
869                 l.PushBoolean(bool(val.Visible))
870                 l.SetField(-2, "visible")
871         case *mt.ToCltTimeOfDay:
872                 l.PushNumber(float64(val.Speed))
873                 l.SetField(-2, "speed")
874                 l.PushInteger(int(val.Time))
875                 l.SetField(-2, "time")
876         case *mt.ToCltUpdatePlayerList:
877                 luaPushStringList(l, val.Players)
878                 l.SetField(-2, "players")
879                 luaPushPlayerListUpdateType(l, val.Type)
880                 l.SetField(-2, "type")
881         }
882 }