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