+// generated by generate.lua, DO NOT EDIT
+package fromlua
+
+import (
+ "github.com/anon55555/mt"
+ "github.com/yuin/gopher-lua"
+)
+
+func readAOID(l *lua.LState, val lua.LValue, ptr *mt.AOID) {
+ if val.Type() != lua.LTNumber {
+ panic("invalid value for AOID: must be a number")
+ }
+ *ptr = mt.AOID(val.(lua.LNumber))
+}
+
+func readCompressionModes(l *lua.LState, val lua.LValue, ptr *mt.CompressionModes) {
+ if val.Type() != lua.LTNumber {
+ panic("invalid value for CompressionModes: must be a number")
+ }
+ *ptr = mt.CompressionModes(val.(lua.LNumber))
+}
+
+func readInt16(l *lua.LState, val lua.LValue, ptr *int16) {
+ if val.Type() != lua.LTNumber {
+ panic("invalid value for int16: must be a number")
+ }
+ *ptr = int16(val.(lua.LNumber))
+}
+
+func readInt32(l *lua.LState, val lua.LValue, ptr *int32) {
+ if val.Type() != lua.LTNumber {
+ panic("invalid value for int32: must be a number")
+ }
+ *ptr = int32(val.(lua.LNumber))
+}
+
+func readInteraction(l *lua.LState, val lua.LValue, ptr *mt.Interaction) {
+ if val.Type() != lua.LTString {
+ panic("invalid value for Interaction: must be a string")
+ }
+ str := string(val.(lua.LString))
+ switch str {
+ case "dig":
+ *ptr = mt.Dig
+ case "stop_digging":
+ *ptr = mt.StopDigging
+ case "dug":
+ *ptr = mt.Dug
+ case "place":
+ *ptr = mt.Place
+ case "use":
+ *ptr = mt.Use
+ case "activate":
+ *ptr = mt.Activate
+ default:
+ panic("invalid value for interaction: " + str)
+ }
+}
+
+func readKeys(l *lua.LState, val lua.LValue, ptr *mt.Keys) {
+ if val.Type() != lua.LTTable {
+ panic("invalid value for Keys: must be a table")
+ }
+ if l.GetField(val, "forward") == lua.LTrue {
+ *ptr = *ptr | mt.ForwardKey
+ }
+ if l.GetField(val, "backward") == lua.LTrue {
+ *ptr = *ptr | mt.BackwardKey
+ }
+ if l.GetField(val, "left") == lua.LTrue {
+ *ptr = *ptr | mt.LeftKey
+ }
+ if l.GetField(val, "right") == lua.LTrue {
+ *ptr = *ptr | mt.RightKey
+ }
+ if l.GetField(val, "jump") == lua.LTrue {
+ *ptr = *ptr | mt.JumpKey
+ }
+ if l.GetField(val, "special") == lua.LTrue {
+ *ptr = *ptr | mt.SpecialKey
+ }
+ if l.GetField(val, "sneak") == lua.LTrue {
+ *ptr = *ptr | mt.SneakKey
+ }
+ if l.GetField(val, "dig") == lua.LTrue {
+ *ptr = *ptr | mt.DigKey
+ }
+ if l.GetField(val, "place") == lua.LTrue {
+ *ptr = *ptr | mt.PlaceKey
+ }
+ if l.GetField(val, "zoom") == lua.LTrue {
+ *ptr = *ptr | mt.ZoomKey
+ }
+}
+
+func readPlayerPos(l *lua.LState, val lua.LValue, ptr *mt.PlayerPos) {
+ if val.Type() != lua.LTTable {
+ panic("invalid value for PlayerPos: must be a table")
+ }
+ readUint8(l, l.GetField(val, "fov80"), &ptr.FOV80)
+ readKeys(l, l.GetField(val, "keys"), &ptr.Keys)
+ readInt32(l, l.GetField(val, "pitch100"), &ptr.Pitch100)
+ readVec3Int32(l, l.GetField(val, "pos100"), &ptr.Pos100)
+ readVec3Int32(l, l.GetField(val, "vel100"), &ptr.Vel100)
+ readUint8(l, l.GetField(val, "wanted_range"), &ptr.WantedRange)
+ readInt32(l, l.GetField(val, "yaw100"), &ptr.Yaw100)
+}
+
+func readSliceSoundID(l *lua.LState, val lua.LValue, ptr *[]mt.SoundID) {
+ if val.Type() != lua.LTTable {
+ panic("invalid value for []SoundID: must be a table")
+ }
+ tbl := val.(*lua.LTable)
+ n := tbl.MaxN()
+ *ptr = make([]mt.SoundID, n)
+ for i := range *ptr {
+ readSoundID(l, l.RawGetInt(tbl, i+1), &(*ptr)[i])
+ }
+}
+
+func readSliceString(l *lua.LState, val lua.LValue, ptr *[]string) {
+ if val.Type() != lua.LTTable {
+ panic("invalid value for []string: must be a table")
+ }
+ tbl := val.(*lua.LTable)
+ n := tbl.MaxN()
+ *ptr = make([]string, n)
+ for i := range *ptr {
+ readString(l, l.RawGetInt(tbl, i+1), &(*ptr)[i])
+ }
+}
+
+func readSliceVec3Int16(l *lua.LState, val lua.LValue, ptr *[][3]int16) {
+ if val.Type() != lua.LTTable {
+ panic("invalid value for [][3]int16: must be a table")
+ }
+ tbl := val.(*lua.LTable)
+ n := tbl.MaxN()
+ *ptr = make([][3]int16, n)
+ for i := range *ptr {
+ readVec3Int16(l, l.RawGetInt(tbl, i+1), &(*ptr)[i])
+ }
+}
+
+func readSoundID(l *lua.LState, val lua.LValue, ptr *mt.SoundID) {
+ if val.Type() != lua.LTNumber {
+ panic("invalid value for SoundID: must be a number")
+ }
+ *ptr = mt.SoundID(val.(lua.LNumber))
+}
+
+func readUint16(l *lua.LState, val lua.LValue, ptr *uint16) {
+ if val.Type() != lua.LTNumber {
+ panic("invalid value for uint16: must be a number")
+ }
+ *ptr = uint16(val.(lua.LNumber))
+}
+
+func readUint8(l *lua.LState, val lua.LValue, ptr *uint8) {
+ if val.Type() != lua.LTNumber {
+ panic("invalid value for uint8: must be a number")
+ }
+ *ptr = uint8(val.(lua.LNumber))
+}
+
+func readVec3Int16(l *lua.LState, val lua.LValue, ptr *[3]int16) {
+ if val.Type() != lua.LTTable {
+ panic("invalid value for [3]int16: must be a table")
+ }
+ readInt16(l, l.GetField(val, "x"), &(*ptr)[0])
+ readInt16(l, l.GetField(val, "y"), &(*ptr)[1])
+ readInt16(l, l.GetField(val, "z"), &(*ptr)[2])
+}
+
+func readVec3Int32(l *lua.LState, val lua.LValue, ptr *[3]int32) {
+ if val.Type() != lua.LTTable {
+ panic("invalid value for [3]int32: must be a table")
+ }
+ readInt32(l, l.GetField(val, "x"), &(*ptr)[0])
+ readInt32(l, l.GetField(val, "y"), &(*ptr)[1])
+ readInt32(l, l.GetField(val, "z"), &(*ptr)[2])
+}
+
+func Cmd(l *lua.LState) mt.Cmd {
+ str := l.CheckString(2)
+ switch str {
+ case "chat_msg":
+ ptr := &mt.ToSrvChatMsg{}
+ val := l.CheckTable(3)
+ readString(l, l.GetField(val, "msg"), &ptr.Msg)
+ return ptr
+ case "clt_ready":
+ ptr := &mt.ToSrvCltReady{}
+ val := l.CheckTable(3)
+ readUint16(l, l.GetField(val, "formspec"), &ptr.Formspec)
+ readUint8(l, l.GetField(val, "major"), &ptr.Major)
+ readUint8(l, l.GetField(val, "minor"), &ptr.Minor)
+ readUint8(l, l.GetField(val, "patch"), &ptr.Patch)
+ readString(l, l.GetField(val, "version"), &ptr.Version)
+ return ptr
+ case "deleted_blks":
+ ptr := &mt.ToSrvDeletedBlks{}
+ val := l.CheckTable(3)
+ readSliceVec3Int16(l, l.GetField(val, "blks"), &ptr.Blks)
+ return ptr
+ case "fall_dmg":
+ ptr := &mt.ToSrvFallDmg{}
+ val := l.CheckTable(3)
+ readUint16(l, l.GetField(val, "amount"), &ptr.Amount)
+ return ptr
+ case "first_srp":
+ ptr := &mt.ToSrvFirstSRP{}
+ val := l.CheckTable(3)
+ readBool(l, l.GetField(val, "empty_passwd"), &ptr.EmptyPasswd)
+ readSliceByte(l, l.GetField(val, "salt"), &ptr.Salt)
+ readSliceByte(l, l.GetField(val, "verifier"), &ptr.Verifier)
+ return ptr
+ case "got_blks":
+ ptr := &mt.ToSrvGotBlks{}
+ val := l.CheckTable(3)
+ readSliceVec3Int16(l, l.GetField(val, "blks"), &ptr.Blks)
+ return ptr
+ case "init":
+ ptr := &mt.ToSrvInit{}
+ val := l.CheckTable(3)
+ readUint16(l, l.GetField(val, "max_proto_ver"), &ptr.MaxProtoVer)
+ readUint16(l, l.GetField(val, "min_proto_ver"), &ptr.MinProtoVer)
+ readString(l, l.GetField(val, "player_name"), &ptr.PlayerName)
+ readBool(l, l.GetField(val, "send_full_item_meta"), &ptr.SendFullItemMeta)
+ readUint8(l, l.GetField(val, "serialize_ver"), &ptr.SerializeVer)
+ readCompressionModes(l, l.GetField(val, "supported_compression"), &ptr.SupportedCompression)
+ return ptr
+ case "init2":
+ ptr := &mt.ToSrvInit2{}
+ val := l.CheckTable(3)
+ readString(l, l.GetField(val, "lang"), &ptr.Lang)
+ return ptr
+ case "interact":
+ ptr := &mt.ToSrvInteract{}
+ val := l.CheckTable(3)
+ readInteraction(l, l.GetField(val, "action"), &ptr.Action)
+ readUint16(l, l.GetField(val, "item_slot"), &ptr.ItemSlot)
+ readPointedThing(l, l.GetField(val, "pointed"), &ptr.Pointed)
+ readPlayerPos(l, l.GetField(val, "pos"), &ptr.Pos)
+ return ptr
+ case "inv_action":
+ ptr := &mt.ToSrvInvAction{}
+ val := l.CheckTable(3)
+ readString(l, l.GetField(val, "action"), &ptr.Action)
+ return ptr
+ case "inv_fields":
+ ptr := &mt.ToSrvInvFields{}
+ val := l.CheckTable(3)
+ readSliceField(l, l.GetField(val, "fields"), &ptr.Fields)
+ readString(l, l.GetField(val, "formname"), &ptr.Formname)
+ return ptr
+ case "join_mod_chan":
+ ptr := &mt.ToSrvJoinModChan{}
+ val := l.CheckTable(3)
+ readString(l, l.GetField(val, "channel"), &ptr.Channel)
+ return ptr
+ case "leave_mod_chan":
+ ptr := &mt.ToSrvLeaveModChan{}
+ val := l.CheckTable(3)
+ readString(l, l.GetField(val, "channel"), &ptr.Channel)
+ return ptr
+ case "msg_mod_chan":
+ ptr := &mt.ToSrvMsgModChan{}
+ val := l.CheckTable(3)
+ readString(l, l.GetField(val, "channel"), &ptr.Channel)
+ readString(l, l.GetField(val, "msg"), &ptr.Msg)
+ return ptr
+ case "nil":
+ ptr := &mt.ToSrvNil{}
+ return ptr
+ case "node_meta_fields":
+ ptr := &mt.ToSrvNodeMetaFields{}
+ val := l.CheckTable(3)
+ readSliceField(l, l.GetField(val, "fields"), &ptr.Fields)
+ readString(l, l.GetField(val, "formname"), &ptr.Formname)
+ readVec3Int16(l, l.GetField(val, "pos"), &ptr.Pos)
+ return ptr
+ case "player_pos":
+ ptr := &mt.ToSrvPlayerPos{}
+ val := l.CheckTable(3)
+ readPlayerPos(l, l.GetField(val, "pos"), &ptr.Pos)
+ return ptr
+ case "removed_sounds":
+ ptr := &mt.ToSrvRemovedSounds{}
+ val := l.CheckTable(3)
+ readSliceSoundID(l, l.GetField(val, "ids"), &ptr.IDs)
+ return ptr
+ case "req_media":
+ ptr := &mt.ToSrvReqMedia{}
+ val := l.CheckTable(3)
+ readSliceString(l, l.GetField(val, "filenames"), &ptr.Filenames)
+ return ptr
+ case "respawn":
+ ptr := &mt.ToSrvRespawn{}
+ return ptr
+ case "select_item":
+ ptr := &mt.ToSrvSelectItem{}
+ val := l.CheckTable(3)
+ readUint16(l, l.GetField(val, "slot"), &ptr.Slot)
+ return ptr
+ case "srp_bytes_a":
+ ptr := &mt.ToSrvSRPBytesA{}
+ val := l.CheckTable(3)
+ readSliceByte(l, l.GetField(val, "a"), &ptr.A)
+ readBool(l, l.GetField(val, "no_sha1"), &ptr.NoSHA1)
+ return ptr
+ case "srp_bytes_m":
+ ptr := &mt.ToSrvSRPBytesM{}
+ val := l.CheckTable(3)
+ readSliceByte(l, l.GetField(val, "m"), &ptr.M)
+ return ptr
+ }
+
+ panic("invalid packet type: " + str)
+}