]> git.lizzy.rs Git - hydra-dragonfire.git/blob - tolua/generated.go
Create README.md
[hydra-dragonfire.git] / tolua / generated.go
1 // generated by generate.lua, DO NOT EDIT
2 package tolua
3
4 import (
5         "github.com/anon55555/mt"
6         "github.com/yuin/gopher-lua"
7 )
8
9 func AnimType(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 ChatMsgType(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 HotbarParam(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 HUDField(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 HUDType(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 KickReason(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 ModChanSig(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 PlayerListUpdateType(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 SoundSrcType(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 AuthMethods(l *lua.LState, val mt.AuthMethods) lua.LValue {
181         tbl := l.NewTable()
182         if val&mt.LegacyPasswd != 0 {
183                 l.SetField(tbl, "legacy_passwd", lua.LTrue)
184         }
185         if val&mt.SRP != 0 {
186                 l.SetField(tbl, "srp", lua.LTrue)
187         }
188         if val&mt.FirstSRP != 0 {
189                 l.SetField(tbl, "first_srp", lua.LTrue)
190         }
191         return tbl
192 }
193
194 func CSMRestrictionFlags(l *lua.LState, val mt.CSMRestrictionFlags) lua.LValue {
195         tbl := l.NewTable()
196         if val&mt.NoCSMs != 0 {
197                 l.SetField(tbl, "no_csms", lua.LTrue)
198         }
199         if val&mt.NoChatMsgs != 0 {
200                 l.SetField(tbl, "no_chat_msgs", lua.LTrue)
201         }
202         if val&mt.NoNodeDefs != 0 {
203                 l.SetField(tbl, "no_node_defs", lua.LTrue)
204         }
205         if val&mt.LimitMapRange != 0 {
206                 l.SetField(tbl, "limit_map_range", lua.LTrue)
207         }
208         if val&mt.NoPlayerList != 0 {
209                 l.SetField(tbl, "no_player_list", lua.LTrue)
210         }
211         return tbl
212 }
213
214 func HUDFlags(l *lua.LState, val mt.HUDFlags) lua.LValue {
215         tbl := l.NewTable()
216         if val&mt.ShowHotbar != 0 {
217                 l.SetField(tbl, "hotbar", lua.LTrue)
218         }
219         if val&mt.ShowHealthBar != 0 {
220                 l.SetField(tbl, "health_bar", lua.LTrue)
221         }
222         if val&mt.ShowCrosshair != 0 {
223                 l.SetField(tbl, "crosshair", lua.LTrue)
224         }
225         if val&mt.ShowWieldedItem != 0 {
226                 l.SetField(tbl, "wielded_item", lua.LTrue)
227         }
228         if val&mt.ShowBreathBar != 0 {
229                 l.SetField(tbl, "breath_bar", lua.LTrue)
230         }
231         if val&mt.ShowMinimap != 0 {
232                 l.SetField(tbl, "minimap", lua.LTrue)
233         }
234         if val&mt.ShowRadarMinimap != 0 {
235                 l.SetField(tbl, "radar_minimap", lua.LTrue)
236         }
237         return tbl
238 }
239
240 func HUD(l *lua.LState, val mt.HUD) lua.LValue {
241         tbl := l.NewTable()
242         l.SetField(tbl, "align", Vec2(l, [2]lua.LNumber{lua.LNumber(val.Align[0]), lua.LNumber(val.Align[1])}))
243         l.SetField(tbl, "dir", lua.LNumber(val.Dir))
244         l.SetField(tbl, "item", lua.LNumber(val.Item))
245         l.SetField(tbl, "name", lua.LString(string(val.Name)))
246         l.SetField(tbl, "number", lua.LNumber(val.Number))
247         l.SetField(tbl, "offset", Vec2(l, [2]lua.LNumber{lua.LNumber(val.Offset[0]), lua.LNumber(val.Offset[1])}))
248         l.SetField(tbl, "pos", Vec2(l, [2]lua.LNumber{lua.LNumber(val.Pos[0]), lua.LNumber(val.Pos[1])}))
249         l.SetField(tbl, "scale", Vec2(l, [2]lua.LNumber{lua.LNumber(val.Scale[0]), lua.LNumber(val.Scale[1])}))
250         l.SetField(tbl, "size", Vec2(l, [2]lua.LNumber{lua.LNumber(val.Size[0]), lua.LNumber(val.Size[1])}))
251         l.SetField(tbl, "text", lua.LString(string(val.Text)))
252         l.SetField(tbl, "text_2", lua.LString(string(val.Text2)))
253         l.SetField(tbl, "type", HUDType(l, val.Type))
254         l.SetField(tbl, "world_pos", Vec3(l, [3]lua.LNumber{lua.LNumber(val.WorldPos[0]), lua.LNumber(val.WorldPos[1]), lua.LNumber(val.WorldPos[2])}))
255         l.SetField(tbl, "z_index", lua.LNumber(val.ZIndex))
256         return tbl
257 }
258
259 func Node(l *lua.LState, val mt.Node) lua.LValue {
260         tbl := l.NewTable()
261         l.SetField(tbl, "param0", lua.LNumber(val.Param0))
262         l.SetField(tbl, "param1", lua.LNumber(val.Param1))
263         l.SetField(tbl, "param2", lua.LNumber(val.Param2))
264         return tbl
265 }
266
267 func TileAnim(l *lua.LState, val mt.TileAnim) lua.LValue {
268         tbl := l.NewTable()
269         l.SetField(tbl, "aspect_ratio", Vec2(l, [2]lua.LNumber{lua.LNumber(val.AspectRatio[0]), lua.LNumber(val.AspectRatio[1])}))
270         l.SetField(tbl, "duration", lua.LNumber(val.Duration))
271         l.SetField(tbl, "n_frames", Vec2(l, [2]lua.LNumber{lua.LNumber(val.NFrames[0]), lua.LNumber(val.NFrames[1])}))
272         l.SetField(tbl, "type", AnimType(l, val.Type))
273         return tbl
274 }
275
276 func PktType(pkt *mt.Pkt) lua.LString {
277         switch pkt.Cmd.(type) {
278         case *mt.ToCltAcceptAuth:
279                 return lua.LString("accept_auth")
280         case *mt.ToCltAcceptSudoMode:
281                 return lua.LString("accept_sudo_mode")
282         case *mt.ToCltAddHUD:
283                 return lua.LString("add_hud")
284         case *mt.ToCltAddNode:
285                 return lua.LString("add_node")
286         case *mt.ToCltAddParticleSpawner:
287                 return lua.LString("add_particle_spawner")
288         case *mt.ToCltAddPlayerVel:
289                 return lua.LString("add_player_vel")
290         case *mt.ToCltAnnounceMedia:
291                 return lua.LString("announce_media")
292         case *mt.ToCltAOMsgs:
293                 return lua.LString("ao_msgs")
294         case *mt.ToCltAORmAdd:
295                 return lua.LString("ao_rm_add")
296         case *mt.ToCltBlkData:
297                 return lua.LString("blk_data")
298         case *mt.ToCltBreath:
299                 return lua.LString("breath")
300         case *mt.ToCltChangeHUD:
301                 return lua.LString("change_hud")
302         case *mt.ToCltChatMsg:
303                 return lua.LString("chat_msg")
304         case *mt.ToCltCloudParams:
305                 return lua.LString("cloud_params")
306         case *mt.ToCltCSMRestrictionFlags:
307                 return lua.LString("csm_restriction_flags")
308         case *mt.ToCltDeathScreen:
309                 return lua.LString("death_screen")
310         case *mt.ToCltDelParticleSpawner:
311                 return lua.LString("del_particle_spawner")
312         case *mt.ToCltDenySudoMode:
313                 return lua.LString("deny_sudo_mode")
314         case *mt.ToCltDetachedInv:
315                 return lua.LString("detached_inv")
316         case *mt.ToCltDisco:
317                 return lua.LString("disco")
318         case *mt.ToCltEyeOffset:
319                 return lua.LString("eye_offset")
320         case *mt.ToCltFadeSound:
321                 return lua.LString("fade_sound")
322         case *mt.ToCltFormspecPrepend:
323                 return lua.LString("formspec_prepend")
324         case *mt.ToCltFOV:
325                 return lua.LString("fov")
326         case *mt.ToCltHello:
327                 return lua.LString("hello")
328         case *mt.ToCltHP:
329                 return lua.LString("hp")
330         case *mt.ToCltHUDFlags:
331                 return lua.LString("hud_flags")
332         case *mt.ToCltInv:
333                 return lua.LString("inv")
334         case *mt.ToCltInvFormspec:
335                 return lua.LString("inv_formspec")
336         case *mt.ToCltItemDefs:
337                 return lua.LString("item_defs")
338         case *mt.ToCltKick:
339                 return lua.LString("kick")
340         case *mt.ToCltLegacyKick:
341                 return lua.LString("legacy_kick")
342         case *mt.ToCltLocalPlayerAnim:
343                 return lua.LString("local_player_anim")
344         case *mt.ToCltMedia:
345                 return lua.LString("media")
346         case *mt.ToCltMediaPush:
347                 return lua.LString("media_push")
348         case *mt.ToCltMinimapModes:
349                 return lua.LString("minimap_modes")
350         case *mt.ToCltModChanMsg:
351                 return lua.LString("mod_chan_msg")
352         case *mt.ToCltModChanSig:
353                 return lua.LString("mod_chan_sig")
354         case *mt.ToCltMoonParams:
355                 return lua.LString("moon_params")
356         case *mt.ToCltMovePlayer:
357                 return lua.LString("move_player")
358         case *mt.ToCltMovement:
359                 return lua.LString("movement")
360         case *mt.ToCltNodeDefs:
361                 return lua.LString("node_defs")
362         case *mt.ToCltNodeMetasChanged:
363                 return lua.LString("node_metas_changed")
364         case *mt.ToCltOverrideDayNightRatio:
365                 return lua.LString("override_day_night_ratio")
366         case *mt.ToCltPlaySound:
367                 return lua.LString("play_sound")
368         case *mt.ToCltPrivs:
369                 return lua.LString("privs")
370         case *mt.ToCltRemoveNode:
371                 return lua.LString("remove_node")
372         case *mt.ToCltRmHUD:
373                 return lua.LString("rm_hud")
374         case *mt.ToCltSetHotbarParam:
375                 return lua.LString("set_hotbar_param")
376         case *mt.ToCltShowFormspec:
377                 return lua.LString("show_formspec")
378         case *mt.ToCltSkyParams:
379                 return lua.LString("sky_params")
380         case *mt.ToCltSpawnParticle:
381                 return lua.LString("spawn_particle")
382         case *mt.ToCltSRPBytesSaltB:
383                 return lua.LString("srp_bytes_salt_b")
384         case *mt.ToCltStarParams:
385                 return lua.LString("star_params")
386         case *mt.ToCltStopSound:
387                 return lua.LString("stop_sound")
388         case *mt.ToCltSunParams:
389                 return lua.LString("sun_params")
390         case *mt.ToCltTimeOfDay:
391                 return lua.LString("time_of_day")
392         case *mt.ToCltUpdatePlayerList:
393                 return lua.LString("update_player_list")
394         }
395         panic("impossible")
396         return ""
397 }
398
399 func Pkt(l *lua.LState, pkt *mt.Pkt) lua.LValue {
400         if pkt == nil {
401                 return lua.LNil
402         }
403         tbl := l.NewTable()
404         l.SetField(tbl, "_type", PktType(pkt))
405         switch val := pkt.Cmd.(type) {
406         case *mt.ToCltAcceptAuth:
407                 l.SetField(tbl, "map_seed", lua.LNumber(val.MapSeed))
408                 l.SetField(tbl, "player_pos", Vec3(l, [3]lua.LNumber{lua.LNumber(val.PlayerPos[0]), lua.LNumber(val.PlayerPos[1]), lua.LNumber(val.PlayerPos[2])}))
409                 l.SetField(tbl, "send_interval", lua.LNumber(val.SendInterval))
410                 l.SetField(tbl, "sudo_auth_methods", AuthMethods(l, val.SudoAuthMethods))
411         case *mt.ToCltAddHUD:
412                 l.SetField(tbl, "hud", HUD(l, val.HUD))
413                 l.SetField(tbl, "id", lua.LNumber(val.ID))
414         case *mt.ToCltAddNode:
415                 l.SetField(tbl, "keep_meta", lua.LBool(val.KeepMeta))
416                 l.SetField(tbl, "node", Node(l, val.Node))
417                 l.SetField(tbl, "pos", Vec3(l, [3]lua.LNumber{lua.LNumber(val.Pos[0]), lua.LNumber(val.Pos[1]), lua.LNumber(val.Pos[2])}))
418         case *mt.ToCltAddParticleSpawner:
419                 l.SetField(tbl, "acc", Box3(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])}}))
420                 l.SetField(tbl, "amount", lua.LNumber(val.Amount))
421                 l.SetField(tbl, "anim_params", TileAnim(l, val.AnimParams))
422                 l.SetField(tbl, "ao_collision", lua.LBool(val.AOCollision))
423                 l.SetField(tbl, "collide", lua.LBool(val.Collide))
424                 l.SetField(tbl, "collision_rm", lua.LBool(val.CollisionRm))
425                 l.SetField(tbl, "duration", lua.LNumber(val.Duration))
426                 l.SetField(tbl, "expiration_time", Box1(l, [2]lua.LNumber{lua.LNumber(val.ExpirationTime[0]), lua.LNumber(val.ExpirationTime[1])}))
427                 l.SetField(tbl, "glow", lua.LNumber(val.Glow))
428                 l.SetField(tbl, "id", lua.LNumber(val.ID))
429                 l.SetField(tbl, "node_param0", lua.LNumber(val.NodeParam0))
430                 l.SetField(tbl, "node_param2", lua.LNumber(val.NodeParam2))
431                 l.SetField(tbl, "node_tile", lua.LNumber(val.NodeTile))
432                 l.SetField(tbl, "pos", Box3(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])}}))
433                 l.SetField(tbl, "size", Box1(l, [2]lua.LNumber{lua.LNumber(val.Size[0]), lua.LNumber(val.Size[1])}))
434                 l.SetField(tbl, "texture", lua.LString(string(val.Texture)))
435                 l.SetField(tbl, "vel", Box3(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])}}))
436                 l.SetField(tbl, "vertical", lua.LBool(val.Vertical))
437         case *mt.ToCltAddPlayerVel:
438                 l.SetField(tbl, "vel", Vec3(l, [3]lua.LNumber{lua.LNumber(val.Vel[0]), lua.LNumber(val.Vel[1]), lua.LNumber(val.Vel[2])}))
439         case *mt.ToCltBlkData:
440                 l.SetField(tbl, "blkpos", Vec3(l, [3]lua.LNumber{lua.LNumber(val.Blkpos[0]), lua.LNumber(val.Blkpos[1]), lua.LNumber(val.Blkpos[2])}))
441         case *mt.ToCltBreath:
442                 l.SetField(tbl, "breath", lua.LNumber(val.Breath))
443         case *mt.ToCltChangeHUD:
444                 if val.Field == mt.HUDAlign {
445                         l.SetField(tbl, "align", Vec2(l, [2]lua.LNumber{lua.LNumber(val.Align[0]), lua.LNumber(val.Align[1])}))
446                 }
447                 if val.Field == mt.HUDDir {
448                         l.SetField(tbl, "dir", lua.LNumber(val.Dir))
449                 }
450                 l.SetField(tbl, "field", HUDField(l, val.Field))
451                 l.SetField(tbl, "id", lua.LNumber(val.ID))
452                 if val.Field == mt.HUDItem {
453                         l.SetField(tbl, "item", lua.LNumber(val.Item))
454                 }
455                 if val.Field == mt.HUDName {
456                         l.SetField(tbl, "name", lua.LString(string(val.Name)))
457                 }
458                 if val.Field == mt.HUDNumber {
459                         l.SetField(tbl, "number", lua.LNumber(val.Number))
460                 }
461                 if val.Field == mt.HUDOffset {
462                         l.SetField(tbl, "offset", Vec2(l, [2]lua.LNumber{lua.LNumber(val.Offset[0]), lua.LNumber(val.Offset[1])}))
463                 }
464                 if val.Field == mt.HUDPos {
465                         l.SetField(tbl, "pos", Vec2(l, [2]lua.LNumber{lua.LNumber(val.Pos[0]), lua.LNumber(val.Pos[1])}))
466                 }
467                 if val.Field == mt.HUDSize {
468                         l.SetField(tbl, "size", Vec2(l, [2]lua.LNumber{lua.LNumber(val.Size[0]), lua.LNumber(val.Size[1])}))
469                 }
470                 if val.Field == mt.HUDText {
471                         l.SetField(tbl, "text", lua.LString(string(val.Text)))
472                 }
473                 if val.Field == mt.HUDText2 {
474                         l.SetField(tbl, "text_2", lua.LString(string(val.Text2)))
475                 }
476                 if val.Field == mt.HUDWorldPos {
477                         l.SetField(tbl, "world_pos", Vec3(l, [3]lua.LNumber{lua.LNumber(val.WorldPos[0]), lua.LNumber(val.WorldPos[1]), lua.LNumber(val.WorldPos[2])}))
478                 }
479                 if val.Field == mt.HUDZIndex {
480                         l.SetField(tbl, "z_index", lua.LNumber(val.ZIndex))
481                 }
482         case *mt.ToCltChatMsg:
483                 l.SetField(tbl, "sender", lua.LString(string(val.Sender)))
484                 l.SetField(tbl, "text", lua.LString(string(val.Text)))
485                 l.SetField(tbl, "timestamp", lua.LNumber(val.Timestamp))
486                 l.SetField(tbl, "type", ChatMsgType(l, val.Type))
487         case *mt.ToCltCloudParams:
488                 l.SetField(tbl, "ambient_color", Color(l, val.AmbientColor))
489                 l.SetField(tbl, "density", lua.LNumber(val.Density))
490                 l.SetField(tbl, "diffuse_color", Color(l, val.DiffuseColor))
491                 l.SetField(tbl, "height", lua.LNumber(val.Height))
492                 l.SetField(tbl, "speed", Vec2(l, [2]lua.LNumber{lua.LNumber(val.Speed[0]), lua.LNumber(val.Speed[1])}))
493                 l.SetField(tbl, "thickness", lua.LNumber(val.Thickness))
494         case *mt.ToCltCSMRestrictionFlags:
495                 l.SetField(tbl, "flags", CSMRestrictionFlags(l, val.Flags))
496                 l.SetField(tbl, "map_range", lua.LNumber(val.MapRange))
497         case *mt.ToCltDeathScreen:
498                 l.SetField(tbl, "point_at", Vec3(l, [3]lua.LNumber{lua.LNumber(val.PointAt[0]), lua.LNumber(val.PointAt[1]), lua.LNumber(val.PointAt[2])}))
499                 l.SetField(tbl, "point_cam", lua.LBool(val.PointCam))
500         case *mt.ToCltDelParticleSpawner:
501                 l.SetField(tbl, "id", lua.LNumber(val.ID))
502         case *mt.ToCltDetachedInv:
503                 l.SetField(tbl, "inv", lua.LString(string(val.Inv)))
504                 l.SetField(tbl, "keep", lua.LBool(val.Keep))
505                 l.SetField(tbl, "len", lua.LNumber(val.Len))
506                 l.SetField(tbl, "name", lua.LString(string(val.Name)))
507         case *mt.ToCltEyeOffset:
508                 l.SetField(tbl, "first", Vec3(l, [3]lua.LNumber{lua.LNumber(val.First[0]), lua.LNumber(val.First[1]), lua.LNumber(val.First[2])}))
509                 l.SetField(tbl, "third", Vec3(l, [3]lua.LNumber{lua.LNumber(val.Third[0]), lua.LNumber(val.Third[1]), lua.LNumber(val.Third[2])}))
510         case *mt.ToCltFadeSound:
511                 l.SetField(tbl, "gain", lua.LNumber(val.Gain))
512                 l.SetField(tbl, "id", lua.LNumber(val.ID))
513                 l.SetField(tbl, "step", lua.LNumber(val.Step))
514         case *mt.ToCltFormspecPrepend:
515                 l.SetField(tbl, "prepend", lua.LString(string(val.Prepend)))
516         case *mt.ToCltFOV:
517                 l.SetField(tbl, "fov", lua.LNumber(val.FOV))
518                 l.SetField(tbl, "multiplier", lua.LBool(val.Multiplier))
519                 l.SetField(tbl, "transition_time", lua.LNumber(val.TransitionTime))
520         case *mt.ToCltHello:
521                 l.SetField(tbl, "auth_methods", AuthMethods(l, val.AuthMethods))
522                 l.SetField(tbl, "compression", lua.LNumber(val.Compression))
523                 l.SetField(tbl, "proto_ver", lua.LNumber(val.ProtoVer))
524                 l.SetField(tbl, "serialize_ver", lua.LNumber(val.SerializeVer))
525                 l.SetField(tbl, "username", lua.LString(string(val.Username)))
526         case *mt.ToCltHP:
527                 l.SetField(tbl, "hp", lua.LNumber(val.HP))
528         case *mt.ToCltHUDFlags:
529                 l.SetField(tbl, "flags", HUDFlags(l, val.Flags))
530                 l.SetField(tbl, "mask", HUDFlags(l, val.Mask))
531         case *mt.ToCltInv:
532                 l.SetField(tbl, "inv", lua.LString(string(val.Inv)))
533         case *mt.ToCltInvFormspec:
534                 l.SetField(tbl, "formspec", lua.LString(string(val.Formspec)))
535         case *mt.ToCltKick:
536                 if val.Reason == mt.Custom || val.Reason == mt.Shutdown || val.Reason == mt.Crash {
537                         l.SetField(tbl, "custom", lua.LString(string(val.Custom)))
538                 }
539                 l.SetField(tbl, "reason", KickReason(l, val.Reason))
540                 if val.Reason == mt.Shutdown || val.Reason == mt.Crash {
541                         l.SetField(tbl, "reconnect", lua.LBool(val.Reconnect))
542                 }
543         case *mt.ToCltLegacyKick:
544                 l.SetField(tbl, "reason", lua.LString(string(val.Reason)))
545         case *mt.ToCltLocalPlayerAnim:
546                 l.SetField(tbl, "dig", Box1(l, [2]lua.LNumber{lua.LNumber(val.Dig[0]), lua.LNumber(val.Dig[1])}))
547                 l.SetField(tbl, "idle", Box1(l, [2]lua.LNumber{lua.LNumber(val.Idle[0]), lua.LNumber(val.Idle[1])}))
548                 l.SetField(tbl, "speed", lua.LNumber(val.Speed))
549                 l.SetField(tbl, "walk", Box1(l, [2]lua.LNumber{lua.LNumber(val.Walk[0]), lua.LNumber(val.Walk[1])}))
550                 l.SetField(tbl, "walk_dig", Box1(l, [2]lua.LNumber{lua.LNumber(val.WalkDig[0]), lua.LNumber(val.WalkDig[1])}))
551         case *mt.ToCltMediaPush:
552                 l.SetField(tbl, "data", lua.LString(string(val.Data)))
553                 l.SetField(tbl, "filename", lua.LString(string(val.Filename)))
554                 l.SetField(tbl, "sha1", lua.LString(string(val.SHA1[:])))
555                 l.SetField(tbl, "should_cache", lua.LBool(val.ShouldCache))
556         case *mt.ToCltModChanMsg:
557                 l.SetField(tbl, "channel", lua.LString(string(val.Channel)))
558                 l.SetField(tbl, "msg", lua.LString(string(val.Msg)))
559                 l.SetField(tbl, "sender", lua.LString(string(val.Sender)))
560         case *mt.ToCltModChanSig:
561                 l.SetField(tbl, "channel", lua.LString(string(val.Channel)))
562                 l.SetField(tbl, "signal", ModChanSig(l, val.Signal))
563         case *mt.ToCltMoonParams:
564                 l.SetField(tbl, "size", lua.LNumber(val.Size))
565                 l.SetField(tbl, "texture", lua.LString(string(val.Texture)))
566                 l.SetField(tbl, "tone_map", lua.LString(string(val.ToneMap)))
567                 l.SetField(tbl, "visible", lua.LBool(val.Visible))
568         case *mt.ToCltMovePlayer:
569                 l.SetField(tbl, "pitch", lua.LNumber(val.Pitch))
570                 l.SetField(tbl, "pos", Vec3(l, [3]lua.LNumber{lua.LNumber(val.Pos[0]), lua.LNumber(val.Pos[1]), lua.LNumber(val.Pos[2])}))
571                 l.SetField(tbl, "yaw", lua.LNumber(val.Yaw))
572         case *mt.ToCltMovement:
573                 l.SetField(tbl, "air_accel", lua.LNumber(val.AirAccel))
574                 l.SetField(tbl, "climb_speed", lua.LNumber(val.ClimbSpeed))
575                 l.SetField(tbl, "crouch_speed", lua.LNumber(val.CrouchSpeed))
576                 l.SetField(tbl, "default_accel", lua.LNumber(val.DefaultAccel))
577                 l.SetField(tbl, "fast_accel", lua.LNumber(val.FastAccel))
578                 l.SetField(tbl, "fast_speed", lua.LNumber(val.FastSpeed))
579                 l.SetField(tbl, "fluidity", lua.LNumber(val.Fluidity))
580                 l.SetField(tbl, "gravity", lua.LNumber(val.Gravity))
581                 l.SetField(tbl, "jump_speed", lua.LNumber(val.JumpSpeed))
582                 l.SetField(tbl, "sink", lua.LNumber(val.Sink))
583                 l.SetField(tbl, "smoothing", lua.LNumber(val.Smoothing))
584                 l.SetField(tbl, "walk_speed", lua.LNumber(val.WalkSpeed))
585         case *mt.ToCltOverrideDayNightRatio:
586                 l.SetField(tbl, "override", lua.LBool(val.Override))
587                 l.SetField(tbl, "ratio", lua.LNumber(val.Ratio))
588         case *mt.ToCltPlaySound:
589                 l.SetField(tbl, "ephemeral", lua.LBool(val.Ephemeral))
590                 l.SetField(tbl, "fade", lua.LNumber(val.Fade))
591                 l.SetField(tbl, "gain", lua.LNumber(val.Gain))
592                 l.SetField(tbl, "id", lua.LNumber(val.ID))
593                 l.SetField(tbl, "loop", lua.LBool(val.Loop))
594                 l.SetField(tbl, "name", lua.LString(string(val.Name)))
595                 l.SetField(tbl, "pitch", lua.LNumber(val.Pitch))
596                 l.SetField(tbl, "pos", Vec3(l, [3]lua.LNumber{lua.LNumber(val.Pos[0]), lua.LNumber(val.Pos[1]), lua.LNumber(val.Pos[2])}))
597                 l.SetField(tbl, "src_aoid", lua.LNumber(val.SrcAOID))
598                 l.SetField(tbl, "src_type", SoundSrcType(l, val.SrcType))
599         case *mt.ToCltPrivs:
600                 l.SetField(tbl, "privs", StringSet(l, val.Privs))
601         case *mt.ToCltRemoveNode:
602                 l.SetField(tbl, "pos", Vec3(l, [3]lua.LNumber{lua.LNumber(val.Pos[0]), lua.LNumber(val.Pos[1]), lua.LNumber(val.Pos[2])}))
603         case *mt.ToCltRmHUD:
604                 l.SetField(tbl, "id", lua.LNumber(val.ID))
605         case *mt.ToCltSetHotbarParam:
606                 l.SetField(tbl, "img", lua.LString(string(val.Img)))
607                 l.SetField(tbl, "param", HotbarParam(l, val.Param))
608                 l.SetField(tbl, "size", lua.LNumber(val.Size))
609         case *mt.ToCltShowFormspec:
610                 l.SetField(tbl, "formname", lua.LString(string(val.Formname)))
611                 l.SetField(tbl, "formspec", lua.LString(string(val.Formspec)))
612         case *mt.ToCltSkyParams:
613                 l.SetField(tbl, "bg_color", Color(l, val.BgColor))
614                 l.SetField(tbl, "clouds", lua.LBool(val.Clouds))
615                 if val.Type == "regular" {
616                         l.SetField(tbl, "dawn_horizon", Color(l, val.DawnHorizon))
617                 }
618                 if val.Type == "regular" {
619                         l.SetField(tbl, "dawn_sky", Color(l, val.DawnSky))
620                 }
621                 if val.Type == "regular" {
622                         l.SetField(tbl, "day_horizon", Color(l, val.DayHorizon))
623                 }
624                 if val.Type == "regular" {
625                         l.SetField(tbl, "day_sky", Color(l, val.DaySky))
626                 }
627                 l.SetField(tbl, "fog_tint_type", lua.LString(string(val.FogTintType)))
628                 if val.Type == "regular" {
629                         l.SetField(tbl, "indoor", Color(l, val.Indoor))
630                 }
631                 l.SetField(tbl, "moon_fog_tint", Color(l, val.MoonFogTint))
632                 if val.Type == "regular" {
633                         l.SetField(tbl, "night_horizon", Color(l, val.NightHorizon))
634                 }
635                 if val.Type == "regular" {
636                         l.SetField(tbl, "night_sky", Color(l, val.NightSky))
637                 }
638                 l.SetField(tbl, "sun_fog_tint", Color(l, val.SunFogTint))
639                 if val.Type == "skybox" {
640                         l.SetField(tbl, "textures", TextureList(l, val.Textures))
641                 }
642                 l.SetField(tbl, "type", lua.LString(string(val.Type)))
643         case *mt.ToCltSpawnParticle:
644                 l.SetField(tbl, "acc", Vec3(l, [3]lua.LNumber{lua.LNumber(val.Acc[0]), lua.LNumber(val.Acc[1]), lua.LNumber(val.Acc[2])}))
645                 l.SetField(tbl, "anim_params", TileAnim(l, val.AnimParams))
646                 l.SetField(tbl, "ao_collision", lua.LBool(val.AOCollision))
647                 l.SetField(tbl, "collide", lua.LBool(val.Collide))
648                 l.SetField(tbl, "collision_rm", lua.LBool(val.CollisionRm))
649                 l.SetField(tbl, "expiration_time", lua.LNumber(val.ExpirationTime))
650                 l.SetField(tbl, "glow", lua.LNumber(val.Glow))
651                 l.SetField(tbl, "node_param0", lua.LNumber(val.NodeParam0))
652                 l.SetField(tbl, "node_param2", lua.LNumber(val.NodeParam2))
653                 l.SetField(tbl, "node_tile", lua.LNumber(val.NodeTile))
654                 l.SetField(tbl, "pos", Vec3(l, [3]lua.LNumber{lua.LNumber(val.Pos[0]), lua.LNumber(val.Pos[1]), lua.LNumber(val.Pos[2])}))
655                 l.SetField(tbl, "size", lua.LNumber(val.Size))
656                 l.SetField(tbl, "texture", lua.LString(string(val.Texture)))
657                 l.SetField(tbl, "vel", Vec3(l, [3]lua.LNumber{lua.LNumber(val.Vel[0]), lua.LNumber(val.Vel[1]), lua.LNumber(val.Vel[2])}))
658                 l.SetField(tbl, "vertical", lua.LBool(val.Vertical))
659         case *mt.ToCltSRPBytesSaltB:
660                 l.SetField(tbl, "b", lua.LString(string(val.B)))
661                 l.SetField(tbl, "salt", lua.LString(string(val.Salt)))
662         case *mt.ToCltStarParams:
663                 l.SetField(tbl, "color", Color(l, val.Color))
664                 l.SetField(tbl, "count", lua.LNumber(val.Count))
665                 l.SetField(tbl, "size", lua.LNumber(val.Size))
666                 l.SetField(tbl, "visible", lua.LBool(val.Visible))
667         case *mt.ToCltStopSound:
668                 l.SetField(tbl, "id", lua.LNumber(val.ID))
669         case *mt.ToCltSunParams:
670                 l.SetField(tbl, "rise", lua.LString(string(val.Rise)))
671                 l.SetField(tbl, "rising", lua.LBool(val.Rising))
672                 l.SetField(tbl, "size", lua.LNumber(val.Size))
673                 l.SetField(tbl, "texture", lua.LString(string(val.Texture)))
674                 l.SetField(tbl, "tone_map", lua.LString(string(val.ToneMap)))
675                 l.SetField(tbl, "visible", lua.LBool(val.Visible))
676         case *mt.ToCltTimeOfDay:
677                 l.SetField(tbl, "speed", lua.LNumber(val.Speed))
678                 l.SetField(tbl, "time", lua.LNumber(val.Time))
679         case *mt.ToCltUpdatePlayerList:
680                 l.SetField(tbl, "players", StringList(l, val.Players))
681                 l.SetField(tbl, "type", PlayerListUpdateType(l, val.Type))
682         }
683         return tbl
684 }