import (
"github.com/anon55555/mt"
"github.com/yuin/gopher-lua"
+ "math"
)
-func readAOID(l *lua.LState, val lua.LValue, ptr *mt.AOID) {
+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))
+ *ptr = mt.AOID(math.Round(float64(val.(lua.LNumber))))
}
-func readCompressionModes(l *lua.LState, val lua.LValue, ptr *mt.CompressionModes) {
+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))
+ *ptr = mt.CompressionModes(math.Round(float64(val.(lua.LNumber))))
}
-func readInt16(l *lua.LState, val lua.LValue, ptr *int16) {
+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))
+ *ptr = int16(math.Round(float64(val.(lua.LNumber))))
}
-func readInt32(l *lua.LState, val lua.LValue, ptr *int32) {
+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))
+ *ptr = int32(math.Round(float64(val.(lua.LNumber))))
}
-func readInteraction(l *lua.LState, val lua.LValue, ptr *mt.Interaction) {
+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")
}
}
}
-func readKeys(l *lua.LState, val lua.LValue, ptr *mt.Keys) {
+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")
}
}
}
-func readPlayerPos(l *lua.LState, val lua.LValue, ptr *mt.PlayerPos) {
+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)
+ 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) {
+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")
}
n := tbl.MaxN()
*ptr = make([]mt.SoundID, n)
for i := range *ptr {
- readSoundID(l, l.RawGetInt(tbl, i+1), &(*ptr)[i])
+ ReadSoundID(l, l.RawGetInt(tbl, i+1), &(*ptr)[i])
}
}
-func readSliceString(l *lua.LState, val lua.LValue, ptr *[]string) {
+func ReadSliceString(l *lua.LState, val lua.LValue, ptr *[]string) {
if val.Type() != lua.LTTable {
panic("invalid value for []string: must be a table")
}
n := tbl.MaxN()
*ptr = make([]string, n)
for i := range *ptr {
- readString(l, l.RawGetInt(tbl, i+1), &(*ptr)[i])
+ ReadString(l, l.RawGetInt(tbl, i+1), &(*ptr)[i])
}
}
-func readSliceVec3Int16(l *lua.LState, val lua.LValue, ptr *[][3]int16) {
+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")
}
n := tbl.MaxN()
*ptr = make([][3]int16, n)
for i := range *ptr {
- readVec3Int16(l, l.RawGetInt(tbl, i+1), &(*ptr)[i])
+ ReadVec3Int16(l, l.RawGetInt(tbl, i+1), &(*ptr)[i])
}
}
-func readSoundID(l *lua.LState, val lua.LValue, ptr *mt.SoundID) {
+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))
+ *ptr = mt.SoundID(math.Round(float64(val.(lua.LNumber))))
}
-func readUint16(l *lua.LState, val lua.LValue, ptr *uint16) {
+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))
+ *ptr = uint16(math.Round(float64(val.(lua.LNumber))))
}
-func readUint8(l *lua.LState, val lua.LValue, ptr *uint8) {
+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))
+ *ptr = uint8(math.Round(float64(val.(lua.LNumber))))
}
-func readVec3Int16(l *lua.LState, val lua.LValue, ptr *[3]int16) {
+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])
+ 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) {
+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])
+ 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 ReadCmd(l *lua.LState) mt.Cmd {
case "chat_msg":
ptr := &mt.ToSrvChatMsg{}
val := l.CheckTable(3)
- readString(l, l.GetField(val, "msg"), &ptr.Msg)
+ 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)
+ 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)
+ 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)
+ 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)
+ 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)
+ 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)
+ 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)
+ 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)
+ 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)
+ 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)
+ 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)
+ 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)
+ 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)
+ ReadString(l, l.GetField(val, "channel"), &ptr.Channel)
+ ReadString(l, l.GetField(val, "msg"), &ptr.Msg)
return ptr
case "nil":
ptr := &mt.ToSrvNil{}
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)
+ 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)
+ 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)
+ 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)
+ ReadSliceString(l, l.GetField(val, "filenames"), &ptr.Filenames)
return ptr
case "respawn":
ptr := &mt.ToSrvRespawn{}
case "select_item":
ptr := &mt.ToSrvSelectItem{}
val := l.CheckTable(3)
- readUint16(l, l.GetField(val, "slot"), &ptr.Slot)
+ 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)
+ 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)
+ ReadSliceByte(l, l.GetField(val, "m"), &ptr.M)
return ptr
}