summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ao.go201
-rw-r--r--aocmds12
-rw-r--r--aocmds_cmdno.go31
-rw-r--r--auth.go9
-rw-r--r--bytereader.go13
-rw-r--r--cmd.go85
-rwxr-xr-xcmd.sh11
-rw-r--r--cmd/proxy/proxy.go86
-rwxr-xr-xcmdno.sh13
-rw-r--r--cmds.go13
-rw-r--r--compression.go7
-rw-r--r--deserialize.fmt121
-rw-r--r--dir.go23
-rw-r--r--internal/mkserialize/.gitignore1
-rw-r--r--internal/mkserialize/go.mod5
-rw-r--r--internal/mkserialize/go.sum27
-rw-r--r--internal/mkserialize/mkserialize.go611
-rw-r--r--itemdef.go56
-rw-r--r--light.go13
-rw-r--r--mapblk.go56
-rw-r--r--minimap.go29
-rwxr-xr-xmkpktinfos.sh11
-rwxr-xr-xmkserialize.sh11
-rw-r--r--mt.go26
-rw-r--r--nodebox.go39
-rw-r--r--nodedef.go148
-rw-r--r--nodemeta.go27
-rw-r--r--pktinfos80
-rw-r--r--pktinfos.go86
-rw-r--r--playerpos.go74
-rw-r--r--pointedthing.go69
-rw-r--r--pos.go38
-rw-r--r--proto.go101
-rw-r--r--rudp/cmd/proxy/proxy.go (renamed from rudp/proxy/proxy.go)0
-rw-r--r--serialize.fmt163
-rw-r--r--serialize.go35094
-rw-r--r--sound.go16
-rw-r--r--stack.go10
-rw-r--r--texture.go3
-rw-r--r--tileanim.go27
-rw-r--r--tiledef.go40
-rw-r--r--tocltcmds57
-rw-r--r--tocltcmds.go766
-rw-r--r--tocltcmds_cmdno.go121
-rw-r--r--toolcaps.go45
-rw-r--r--tosrvcmds23
-rw-r--r--tosrvcmds.go155
-rw-r--r--tosrvcmds_cmdno.go53
-rw-r--r--vec.go20
-rw-r--r--zerialize.go56
50 files changed, 38780 insertions, 2 deletions
diff --git a/ao.go b/ao.go
new file mode 100644
index 0000000..40b9983
--- /dev/null
+++ b/ao.go
@@ -0,0 +1,201 @@
+package mt
+
+import (
+ "fmt"
+ "image/color"
+ "io"
+)
+
+type AOID uint16
+
+type aoType uint8
+
+const genericCAO aoType = 101
+
+type AOInitData struct {
+ // Version.
+ //mt:const uint8(1)
+
+ // For players.
+ Name string
+ IsPlayer bool
+
+ ID AOID
+
+ Pos
+ Rot [3]float32
+
+ HP uint16
+
+ // See (de)serialize.fmt.
+ Msgs []AOMsg
+}
+
+type AOProps struct {
+ // Version.
+ //mt:const uint8(4)
+
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+}
+
+type AOPos struct {
+ Pos
+ Vel, Acc Vec
+ Rot [3]float32
+
+ Interpolate bool
+ End bool
+ UpdateInterval float32
+}
+
+type AOSprite struct {
+ Frame0 [2]int16
+ Frames uint16
+ FrameDuration float32
+ ViewAngleFrames bool
+}
+
+type AOAnim struct {
+ Frames [2]int32
+ Speed float32
+ Blend float32
+ NoLoop bool
+}
+
+type AOBonePos struct {
+ Pos Vec
+ Rot [3]float32
+}
+
+type AOAttach struct {
+ ParentID AOID
+ Bone string
+ Pos Vec
+ Rot [3]float32
+ ForceVisible bool
+}
+
+type AOPhysOverride struct {
+ Walk, Jump, Gravity float32
+
+ // Player only.
+ NoSneak, NoSneakGlitch, OldSneak bool
+}
+
+type AOCmdProps struct {
+ Props AOProps
+}
+
+type AOCmdPos struct {
+ Pos AOPos
+}
+
+type AOCmdTextureMod struct {
+ Mod Texture // suffix
+}
+
+type AOCmdSprite struct {
+ Sprite AOSprite
+}
+
+type AOCmdHP struct {
+ HP uint16
+}
+
+type AOCmdArmorGroups struct {
+ Armor []Group
+}
+
+type AOCmdAnim struct {
+ Anim AOAnim
+}
+
+type AOCmdBonePos struct {
+ Bone string
+ Pos AOBonePos
+}
+
+type AOCmdAttach struct {
+ Attach AOAttach
+}
+
+type AOCmdPhysOverride struct {
+ Phys AOPhysOverride
+}
+
+type AOCmdSpawnInfant struct {
+ ID AOID
+
+ // Type.
+ //mt:const genericCAO
+}
+
+type AOCmdAnimSpeed struct {
+ Speed float32
+}
+
+//go:generate ./cmdno.sh aocmds AOCmd ao uint8 AOMsg newAOMsg
+
+type AOMsg interface {
+ aoCmdNo() uint8
+}
+
+func writeAOMsg(w io.Writer, msg AOMsg) error {
+ if _, err := w.Write([]byte{msg.aoCmdNo()}); err != nil {
+ return err
+ }
+ return serialize(w, msg)
+}
+
+func readAOMsg(r io.Reader) (AOMsg, error) {
+ buf := make([]byte, 1)
+ if _, err := io.ReadFull(r, buf); err != nil {
+ return nil, err
+ }
+ newCmd, ok := newAOMsg[buf[0]]
+ if !ok {
+ return nil, fmt.Errorf("unsupported ao msg: %d", buf[0])
+ }
+ msg := newCmd()
+ return msg, deserialize(r, msg)
+}
+
+type IDAOMsg struct {
+ ID AOID
+ //mt:lenhdr 16
+ Msg AOMsg
+ //mt:end
+}
diff --git a/aocmds b/aocmds
new file mode 100644
index 0000000..a04350f
--- /dev/null
+++ b/aocmds
@@ -0,0 +1,12 @@
+0 Props
+1 Pos
+2 TextureMod
+3 Sprite
+4 HP
+5 ArmorGroups
+6 Anim
+7 BonePos
+8 Attach
+9 PhysOverride
+11 SpawnInfant
+12 AnimSpeed
diff --git a/aocmds_cmdno.go b/aocmds_cmdno.go
new file mode 100644
index 0000000..6d051b5
--- /dev/null
+++ b/aocmds_cmdno.go
@@ -0,0 +1,31 @@
+// Code generated by cmdno.sh. DO NOT EDIT.
+
+package mt
+
+func (*AOCmdProps) aoCmdNo() uint8 { return 0 }
+func (*AOCmdPos) aoCmdNo() uint8 { return 1 }
+func (*AOCmdTextureMod) aoCmdNo() uint8 { return 2 }
+func (*AOCmdSprite) aoCmdNo() uint8 { return 3 }
+func (*AOCmdHP) aoCmdNo() uint8 { return 4 }
+func (*AOCmdArmorGroups) aoCmdNo() uint8 { return 5 }
+func (*AOCmdAnim) aoCmdNo() uint8 { return 6 }
+func (*AOCmdBonePos) aoCmdNo() uint8 { return 7 }
+func (*AOCmdAttach) aoCmdNo() uint8 { return 8 }
+func (*AOCmdPhysOverride) aoCmdNo() uint8 { return 9 }
+func (*AOCmdSpawnInfant) aoCmdNo() uint8 { return 11 }
+func (*AOCmdAnimSpeed) aoCmdNo() uint8 { return 12 }
+
+var newAOMsg = map[uint8]func() AOMsg{
+ 0: func() AOMsg { return new(AOCmdProps) },
+ 1: func() AOMsg { return new(AOCmdPos) },
+ 2: func() AOMsg { return new(AOCmdTextureMod) },
+ 3: func() AOMsg { return new(AOCmdSprite) },
+ 4: func() AOMsg { return new(AOCmdHP) },
+ 5: func() AOMsg { return new(AOCmdArmorGroups) },
+ 6: func() AOMsg { return new(AOCmdAnim) },
+ 7: func() AOMsg { return new(AOCmdBonePos) },
+ 8: func() AOMsg { return new(AOCmdAttach) },
+ 9: func() AOMsg { return new(AOCmdPhysOverride) },
+ 11: func() AOMsg { return new(AOCmdSpawnInfant) },
+ 12: func() AOMsg { return new(AOCmdAnimSpeed) },
+}
diff --git a/auth.go b/auth.go
new file mode 100644
index 0000000..5c2df14
--- /dev/null
+++ b/auth.go
@@ -0,0 +1,9 @@
+package mt
+
+type AuthMethods uint32
+
+const (
+ LegacyPasswd AuthMethods = 1 << iota
+ SRP
+ FirstSRP
+)
diff --git a/bytereader.go b/bytereader.go
new file mode 100644
index 0000000..77447d0
--- /dev/null
+++ b/bytereader.go
@@ -0,0 +1,13 @@
+package mt
+
+import "io"
+
+type byteReader struct {
+ io.Reader
+}
+
+func (br byteReader) ReadByte() (byte, error) {
+ buf := make([]byte, 1)
+ _, err := io.ReadFull(br, buf)
+ return buf[0], err
+}
diff --git a/cmd.go b/cmd.go
new file mode 100644
index 0000000..db6b912
--- /dev/null
+++ b/cmd.go
@@ -0,0 +1,85 @@
+// Code generated by cmd.sh. DO NOT EDIT.
+
+package mt
+
+func (*ToCltHello) cmd() {}
+func (*ToCltAcceptAuth) cmd() {}
+func (*ToCltAcceptSudoMode) cmd() {}
+func (*ToCltDenySudoMode) cmd() {}
+func (*ToCltDisco) cmd() {}
+func (*ToCltBlkData) cmd() {}
+func (*ToCltAddNode) cmd() {}
+func (*ToCltRemoveNode) cmd() {}
+func (*ToCltInv) cmd() {}
+func (*ToCltTimeOfDay) cmd() {}
+func (*ToCltCSMRestrictionFlags) cmd() {}
+func (*ToCltAddPlayerVel) cmd() {}
+func (*ToCltMediaPush) cmd() {}
+func (*ToCltChatMsg) cmd() {}
+func (*ToCltAORmAdd) cmd() {}
+func (*ToCltAOMsgs) cmd() {}
+func (*ToCltHP) cmd() {}
+func (*ToCltMovePlayer) cmd() {}
+func (*ToCltDiscoLegacy) cmd() {}
+func (*ToCltFOV) cmd() {}
+func (*ToCltDeathScreen) cmd() {}
+func (*ToCltMedia) cmd() {}
+func (*ToCltNodeDefs) cmd() {}
+func (*ToCltAnnounceMedia) cmd() {}
+func (*ToCltItemDefs) cmd() {}
+func (*ToCltPlaySound) cmd() {}
+func (*ToCltStopSound) cmd() {}
+func (*ToCltPrivs) cmd() {}
+func (*ToCltInvFormspec) cmd() {}
+func (*ToCltDetachedInv) cmd() {}
+func (*ToCltShowFormspec) cmd() {}
+func (*ToCltMovement) cmd() {}
+func (*ToCltSpawnParticle) cmd() {}
+func (*ToCltAddParticleSpawner) cmd() {}
+func (*ToCltAddHUD) cmd() {}
+func (*ToCltRmHUD) cmd() {}
+func (*ToCltChangeHUD) cmd() {}
+func (*ToCltHUDFlags) cmd() {}
+func (*ToCltSetHotbarParam) cmd() {}
+func (*ToCltBreath) cmd() {}
+func (*ToCltSkyParams) cmd() {}
+func (*ToCltOverrideDayNightRatio) cmd() {}
+func (*ToCltLocalPlayerAnim) cmd() {}
+func (*ToCltEyeOffset) cmd() {}
+func (*ToCltDelParticleSpawner) cmd() {}
+func (*ToCltCloudParams) cmd() {}
+func (*ToCltFadeSound) cmd() {}
+func (*ToCltUpdatePlayerList) cmd() {}
+func (*ToCltModChanMsg) cmd() {}
+func (*ToCltModChanSig) cmd() {}
+func (*ToCltNodeMetasChanged) cmd() {}
+func (*ToCltSunParams) cmd() {}
+func (*ToCltMoonParams) cmd() {}
+func (*ToCltStarParams) cmd() {}
+func (*ToCltSRPBytesSaltB) cmd() {}
+func (*ToCltFormspecPrepend) cmd() {}
+func (*ToCltMinimapModes) cmd() {}
+
+func (*ToSrvNil) cmd() {}
+func (*ToSrvInit) cmd() {}
+func (*ToSrvInit2) cmd() {}
+func (*ToSrvModChanJoin) cmd() {}
+func (*ToSrvModChanLeave) cmd() {}
+func (*ToSrvModChanMsg) cmd() {}
+func (*ToSrvPlayerPos) cmd() {}
+func (*ToSrvGotBlks) cmd() {}
+func (*ToSrvDeletedBlks) cmd() {}
+func (*ToSrvInvAction) cmd() {}
+func (*ToSrvChatMsg) cmd() {}
+func (*ToSrvFallDmg) cmd() {}
+func (*ToSrvSelectItem) cmd() {}
+func (*ToSrvRespawn) cmd() {}
+func (*ToSrvInteract) cmd() {}
+func (*ToSrvRemovedSounds) cmd() {}
+func (*ToSrvNodeMetaFields) cmd() {}
+func (*ToSrvInvFields) cmd() {}
+func (*ToSrvReqMedia) cmd() {}
+func (*ToSrvCltReady) cmd() {}
+func (*ToSrvFirstSRP) cmd() {}
+func (*ToSrvSRPBytesA) cmd() {}
+func (*ToSrvSRPBytesM) cmd() {}
diff --git a/cmd.sh b/cmd.sh
new file mode 100755
index 0000000..ed887f3
--- /dev/null
+++ b/cmd.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+(
+ echo // Code generated by cmd.sh. DO NOT EDIT.
+ echo
+ echo package mt
+ echo
+ awk '{ print "func (*ToClt"$2") cmd() {}" }' tocltcmds
+ echo
+ awk '{ print "func (*ToSrv"$2") cmd() {}" }' tosrvcmds
+) | gofmt >cmd.go
diff --git a/cmd/proxy/proxy.go b/cmd/proxy/proxy.go
new file mode 100644
index 0000000..33cc354
--- /dev/null
+++ b/cmd/proxy/proxy.go
@@ -0,0 +1,86 @@
+/*
+Proxy is a Minetest proxy server
+supporting multiple concurrent connections.
+
+Usage:
+ proxy dial:port listen:port
+where dial:port is the server address
+and listen:port is the address to listen on.
+*/
+package main
+
+import (
+ "errors"
+ "fmt"
+ "log"
+ "net"
+ "os"
+
+ "github.com/anon55555/mt"
+)
+
+func main() {
+ if len(os.Args) != 3 {
+ fmt.Fprintln(os.Stderr, "usage: proxy dial:port listen:port")
+ os.Exit(1)
+ }
+
+ srvaddr, err := net.ResolveUDPAddr("udp", os.Args[1])
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ lc, err := net.ListenPacket("udp", os.Args[2])
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer lc.Close()
+
+ l := mt.Listen(lc)
+ for {
+ clt, err := l.Accept()
+ if err != nil {
+ log.Print(err)
+ continue
+ }
+
+ log.Print(clt.RemoteAddr().String() + " connected")
+
+ conn, err := net.DialUDP("udp", nil, srvaddr)
+ if err != nil {
+ log.Print(err)
+ continue
+ }
+ srv := mt.Connect(conn)
+
+ go proxy(clt, srv)
+ go proxy(srv, clt)
+ }
+}
+
+func proxy(src, dest mt.Peer) {
+ s := fmt.Sprint(src.ID(), " (", src.RemoteAddr(), "): ")
+
+ for {
+ pkt, err := src.Recv()
+ if err != nil {
+ if errors.Is(err, net.ErrClosed) {
+ if err := src.WhyClosed(); err != nil {
+ log.Print(s, "disconnected: ", err)
+ } else {
+ log.Print(s, "disconnected")
+ }
+ break
+ }
+
+ log.Print(s, err)
+ continue
+ }
+
+ if _, err := dest.Send(pkt); err != nil {
+ log.Print(err)
+ }
+ }
+
+ dest.Close()
+}
diff --git a/cmdno.sh b/cmdno.sh
new file mode 100755
index 0000000..186df7b
--- /dev/null
+++ b/cmdno.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+(
+ echo // Code generated by cmdno.sh. DO NOT EDIT.
+ echo
+ echo package mt
+ echo
+ awk '{ print "func (*'$2'"$2") '$3'CmdNo() '$4' { return "$1" }" }' $1
+ echo
+ echo "var $6 = map[$4]func() $5{"
+ awk '{ print "\t"$1": func() '$5' { return new('$2'"$2") }," }' $1
+ echo }
+) | gofmt >$1_cmdno.go
diff --git a/cmds.go b/cmds.go
new file mode 100644
index 0000000..7a4f6bd
--- /dev/null
+++ b/cmds.go
@@ -0,0 +1,13 @@
+//go:generate ./mkpktinfos.sh
+//go:generate ./cmd.sh
+
+package mt
+
+import (
+ "github.com/anon55555/mt/rudp"
+)
+
+type Cmd interface {
+ DefaultPktInfo() rudp.PktInfo
+ cmd()
+}
diff --git a/compression.go b/compression.go
new file mode 100644
index 0000000..b7fafb9
--- /dev/null
+++ b/compression.go
@@ -0,0 +1,7 @@
+package mt
+
+type CompressionModes uint16
+
+const (
+ _ CompressionModes = 1 << iota
+)
diff --git a/deserialize.fmt b/deserialize.fmt
new file mode 100644
index 0000000..d2a7c67
--- /dev/null
+++ b/deserialize.fmt
@@ -0,0 +1,121 @@
+ func readBuf(r io.Reader, n int) []byte {
+ buf := make([]byte, n)
+ _, err := io.ReadFull(r, buf)
+ chk(err)
+ return buf
+ }
+
+ func read8 (r io.Reader) uint8 { return readBuf(r, 1)[0] }
+ func read16(r io.Reader) uint16 { return be.Uint16(readBuf(r, 2)) }
+ func read32(r io.Reader) uint32 { return be.Uint32(readBuf(r, 4)) }
+ func read64(r io.Reader) uint64 { return be.Uint64(readBuf(r, 8)) }
+
+byte *p = read8(r)
+uint8 *p = read8(r)
+uint16 *p = read16(r)
+uint32 *p = read32(r)
+uint64 *p = read64(r)
+
+int8 *p = int8(read8(r))
+int16 *p = int16(read16(r))
+int32 *p = int32(read32(r))
+int64 *p = int64(read64(r))
+
+bool switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+
+float32 *p = math.Float32frombits(read32(r))
+float64 *p = math.Float64frombits(read64(r))
+
+AOMsg {
+ var err error
+ *p, err = readAOMsg(r)
+ chk(err)
+ }
+
+image/color.NRGBA *p = color.NRGBA{A: read8(r), R: read8(r), G: read8(r), B: read8(r)}
+
+map[uint16]*NodeMeta {
+ r, err := zlib.NewReader(byteReader{r})
+ chk(err)
+
+ switch ver := read8(r); ver {
+ case 0:
+ *p = nil
+ case 2:
+ n := read16(r)
+ *p = make(map[uint16]*NodeMeta, n)
+ for ; n > 0; n-- {
+ pos := read16(r)
+ nm := new(NodeMeta)
+ chk(deserialize(r, nm))
+ (*p)[pos] = nm
+ }
+ default:
+ chk(fmt.Errorf("unsupported nodemetas version: %d", ver))
+ }
+
+ chk(r.Close())
+ }
+
+map[[3]int16]*NodeMeta {
+ r, err := zlib.NewReader(byteReader{r})
+ chk(err)
+
+ switch ver := read8(r); ver {
+ case 0:
+ *p = nil
+ case 2:
+ n := read16(r)
+ *p = make(map[[3]int16]*NodeMeta, n)
+ for ; n > 0; n-- {
+ var pos [3]int16
+ for i := range pos {
+ pos[i] = int16(read16(r))
+ }
+ nm := new(NodeMeta)
+ chk(deserialize(r, nm))
+ (*p)[pos] = nm
+ }
+ default:
+ chk(fmt.Errorf("unsupported nodemetas version: %d", ver))
+ }
+
+ chk(r.Close())
+ }
+
+PointedThing {
+ var err error
+ *p, err = readPointedThing(r)
+ chk(err)
+ }
+
+[]AOMsg { // For AOInitData.Msgs.
+ *p = make([]AOMsg, read8(r))
+ for i := range *p {
+ r := &io.LimitedReader{r, int64(read32(r))}
+ msg, err := readAOMsg(r)
+ chk(err)
+ (*p)[i] = msg
+ if r.N > 0 {
+ chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ }
+ }
+ }
+
+[]NodeDef { // For ToCltNodeDefs.Defs.
+ *p = make([]NodeDef, read16(r))
+ r := &io.LimitedReader{r, int64(read32(r))}
+ for i := range *p {
+ (*p)[i].deserialize(r)
+ }
+ if r.N > 0 {
+ chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ }
+ }
diff --git a/dir.go b/dir.go
new file mode 100644
index 0000000..693db98
--- /dev/null
+++ b/dir.go
@@ -0,0 +1,23 @@
+package mt
+
+// A Dir represents a direction parallel to an axis.
+type Dir uint8
+
+const (
+ East Dir = iota // +X
+ Above // +Y
+ North // +Z
+ South // -Z
+ Below // -Y
+ West // -X
+ NoDir
+)
+
+// Opposite returns the Dir's opposite.
+// NoDir is its own opposite.
+func (d Dir) Opposite() Dir {
+ if d >= NoDir {
+ return NoDir
+ }
+ return 5 - d
+}
diff --git a/internal/mkserialize/.gitignore b/internal/mkserialize/.gitignore
new file mode 100644
index 0000000..4dfd263
--- /dev/null
+++ b/internal/mkserialize/.gitignore
@@ -0,0 +1 @@
+mkserialize
diff --git a/internal/mkserialize/go.mod b/internal/mkserialize/go.mod
new file mode 100644
index 0000000..d845806
--- /dev/null
+++ b/internal/mkserialize/go.mod
@@ -0,0 +1,5 @@
+module mkserialize
+
+go 1.16
+
+require golang.org/x/tools v0.1.3
diff --git a/internal/mkserialize/go.sum b/internal/mkserialize/go.sum
new file mode 100644
index 0000000..e652f3e
--- /dev/null
+++ b/internal/mkserialize/go.sum
@@ -0,0 +1,27 @@
+github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo=
+golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210510120138-977fb7262007 h1:gG67DSER+11cZvqIMb8S8bt0vZtiN6xWYARwirrOSfE=
+golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.1.3 h1:L69ShwSZEyCsLKoAxDKeMvLDZkumEe8gXUZAjab0tX8=
+golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
diff --git a/internal/mkserialize/mkserialize.go b/internal/mkserialize/mkserialize.go
new file mode 100644
index 0000000..9b4b019
--- /dev/null
+++ b/internal/mkserialize/mkserialize.go
@@ -0,0 +1,611 @@
+package main
+
+import (
+ "bufio"
+ "flag"
+ "fmt"
+ "go/ast"
+ "go/printer"
+ "go/token"
+ "go/types"
+ "io"
+ "log"
+ "os"
+ "strconv"
+ "strings"
+
+ "golang.org/x/tools/go/ast/astutil"
+ "golang.org/x/tools/go/packages"
+)
+
+var (
+ pkg *packages.Package
+
+ serializeFmt = make(map[string]string)
+ deserializeFmt = make(map[string]string)
+
+ uint8T = types.Universe.Lookup("uint8").Type()
+ byteT = types.Universe.Lookup("byte").Type()
+
+ serialize []*types.Named
+ inSerialize = make(map[string]bool)
+
+ consts = make(map[*ast.StructType][]*ast.Comment)
+)
+
+func structPragma(c *ast.Comment, sp *[]func(), expr string, de bool) {
+ fields := strings.SplitN(strings.TrimPrefix(c.Text, "//mt:"), " ", 2)
+ arg := ""
+ if len(fields) == 2 {
+ arg = fields[1]
+ }
+ switch fields[0] {
+ case "const":
+ tv, err := types.Eval(pkg.Fset, pkg.Types, c.Slash, arg)
+ if err != nil {
+ error(c.Pos(), err)
+ }
+
+ if de {
+ fmt.Println("{")
+ x := newVar()
+ fmt.Println("var", x, typeStr(tv.Type))
+ genSerialize(tv.Type, x, token.NoPos, nil, de)
+ fmt.Println("if", x, "!=", "(", tv.Value, ")",
+ `{ chk(fmt.Errorf("const %v: %v",`, tv.Value, ",", x, ")) }")
+ fmt.Println("}")
+ } else {
+ v := newVar()
+ fmt.Println("{", v, ":=", arg)
+ genSerialize(tv.Type, v, c.Slash+token.Pos(len("//mt:const ")), nil, de)
+ fmt.Println("}")
+ }
+ case "assert":
+ fmt.Printf("if !("+arg+") {", expr)
+ fmt.Printf("chk(errors.New(%q))\n", "assertion failed: "+arg)
+ fmt.Println("}")
+ case "zlib":
+ if de {
+ fmt.Println("{ r, err := zlib.NewReader(byteReader{r}); chk(err)")
+ *sp = append(*sp, func() {
+ fmt.Println("chk(r.Close()) }")
+ })
+ } else {
+ fmt.Println("{ w := zlib.NewWriter(w)")
+ *sp = append(*sp, func() {
+ fmt.Println("chk(w.Close()) }")
+ })
+ }
+ case "lenhdr":
+ if arg != "8" && arg != "16" && arg != "32" {
+ error(c.Pos(), "usage: //mt:lenhdr (8|16|32)")
+ }
+
+ fmt.Println("{")
+
+ if !de {
+ fmt.Println("ow := w")
+ fmt.Println("w := new(bytes.Buffer)")
+ }
+
+ var cg ast.CommentGroup
+ if de {
+ t := types.Universe.Lookup("uint" + arg).Type()
+ fmt.Println("var n", t)
+ genSerialize(t, "n", token.NoPos, nil, de)
+ if arg == "64" {
+ fmt.Println(`if n > math.MaxInt64 { panic("too big len") }`)
+ }
+ fmt.Println("r := &io.LimitedReader{r, int64(n)}")
+ } else {
+ switch arg {
+ case "8", "32":
+ cg.List = []*ast.Comment{{Text: "//mt:len" + arg}}
+ case "16":
+ }
+ }
+
+ *sp = append(*sp, func() {
+ if de {
+ fmt.Println("if r.N > 0",
+ `{ chk(fmt.Errorf("%d bytes of trailing data", r.N)) }`)
+ } else {
+ fmt.Println("{")
+ fmt.Println("buf := w")
+ fmt.Println("w := ow")
+ byteSlice := types.NewSlice(types.Typ[types.Byte])
+ genSerialize(byteSlice, "buf.Bytes()", token.NoPos, &cg, de)
+ fmt.Println("}")
+ }
+
+ fmt.Println("}")
+ })
+ case "end":
+ (*sp)[len(*sp)-1]()
+ *sp = (*sp)[:len(*sp)-1]
+ case "if":
+ fmt.Printf(strings.TrimPrefix(c.Text, "//mt:")+" {\n", expr)
+ *sp = append(*sp, func() {
+ fmt.Println("}")
+ })
+ case "ifde":
+ if !de {
+ fmt.Println("/*")
+ }
+ }
+}
+
+func genSerialize(t types.Type, expr string, pos token.Pos, doc *ast.CommentGroup, de bool) {
+ var lenhdr types.Type = types.Typ[types.Uint16]
+
+ useMethod := true
+ if doc != nil {
+ for _, c := range doc.List {
+ pragma := true
+ switch c.Text {
+ case "//mt:utf16":
+ t = types.NewSlice(types.Typ[types.Uint16])
+ if de {
+ v := newVar()
+ fmt.Println("var", v, typeStr(t))
+ defer fmt.Println(expr + " = string(utf16.Decode(" + v + "))")
+ expr = v
+ } else {
+ expr = "utf16.Encode([]rune(" + expr + "))"
+ }
+ pos = token.NoPos
+ case "//mt:raw":
+ lenhdr = nil
+ case "//mt:len8":
+ lenhdr = types.Typ[types.Uint8]
+ case "//mt:len32":
+ lenhdr = types.Typ[types.Uint32]
+ case "//mt:opt":
+ fmt.Println("if err := pcall(func() {")
+ defer fmt.Println("}); err != nil && err != io.EOF",
+ "{ chk(err) }")
+ default:
+ pragma = false
+ }
+ if pragma {
+ useMethod = false
+ }
+ }
+ }
+
+ str := types.TypeString(t, types.RelativeTo(pkg.Types))
+ if de {
+ if or, ok := deserializeFmt[str]; ok {
+ fmt.Println("{")
+ fmt.Println("p := &" + expr)
+ fmt.Print(or)
+ fmt.Println("}")
+ return
+ }
+ } else {
+ if or, ok := serializeFmt[str]; ok {
+ fmt.Println("{")
+ fmt.Println("x := " + expr)
+ fmt.Print(or)
+ fmt.Println("}")
+ return
+ }
+ }
+
+ expr = "(" + expr + ")"
+
+ switch t := t.(type) {
+ case *types.Named:
+ if !useMethod {
+ t := t.Underlying()
+ genSerialize(t, "*(*"+typeStr(t)+")("+"&"+expr+")", pos, doc, de)
+ return
+ }
+
+ method := "Serialize"
+ if de {
+ method = "Deserialize"
+ }
+ for i := 0; i < t.NumMethods(); i++ {
+ m := t.Method(i)
+ if m.Name() == method {
+ rw := "w"
+ if de {
+ rw = "r"
+ }
+ fmt.Println("chk(" + expr + "." + method + "(" + rw + "))")
+ return
+ }
+ }
+
+ mkSerialize(t)
+
+ fmt.Println("if err := pcall(func() {")
+ if de {
+ fmt.Println(expr + ".deserialize(r)")
+ } else {
+ fmt.Println(expr + ".serialize(w)")
+ }
+ fmt.Println("}); err != nil",
+ `{`,
+ `if err == io.EOF { chk(io.EOF) };`,
+ `chk(fmt.Errorf("%s: %w", `+strconv.Quote(t.String())+`, err))`,
+ `}`)
+ case *types.Struct:
+ st := pos2node(pos)[0].(*ast.StructType)
+
+ a := consts[st]
+ b := st.Fields.List
+
+ // Merge sorted slices.
+ c := make([]ast.Node, 0, len(a)+len(b))
+ for i, j := 0, 0; i < len(a) || j < len(b); {
+ if i < len(a) && (j >= len(b) || a[i].Pos() < b[j].Pos()) {
+ c = append(c, a[i])
+ i++
+ } else {
+ c = append(c, b[j])
+ j++
+ }
+ }
+
+ var (
+ stk []func()
+ i int
+ )
+ for _, field := range c {
+ switch field := field.(type) {
+ case *ast.Comment:
+ structPragma(field, &stk, expr, de)
+ case *ast.Field:
+ n := len(field.Names)
+ if n == 0 {
+ n = 1
+ }
+ for ; n > 0; n-- {
+ f := t.Field(i)
+ genSerialize(f.Type(), expr+"."+f.Name(), field.Type.Pos(), field.Doc, de)
+ i++
+ }
+ }
+ }
+
+ if len(stk) > 0 {
+ error(pos, "missing //mt:end")
+ }
+ case *types.Basic:
+ switch t.Kind() {
+ case types.String:
+ byteSlice := types.NewSlice(types.Typ[types.Byte])
+ if de {
+ v := newVar()
+ fmt.Println("var", v, byteSlice)
+ genSerialize(byteSlice, v, token.NoPos, doc, de)
+ fmt.Println(expr, "=", "string(", v, ")")
+ } else {
+ genSerialize(byteSlice, "[]byte"+expr, token.NoPos, doc, de)
+ }
+ default:
+ error(pos, "can't serialize ", t)
+ }
+ case *types.Slice:
+ if de {
+ if lenhdr != nil {
+ v := newVar()
+ fmt.Println("var", v, lenhdr)
+ genSerialize(lenhdr, v, pos, nil, de)
+ fmt.Printf("%s = make(%v, %s)\n",
+ expr, typeStr(t), v)
+ genSerialize(types.NewArray(t.Elem(), 0), expr, pos, nil, de)
+ } else {
+ fmt.Println("for {")
+ v := newVar()
+ fmt.Println("var", v, typeStr(t.Elem()))
+ fmt.Println("err := pcall(func() {")
+ if pos.IsValid() {
+ pos = pos2node(pos)[0].(*ast.ArrayType).Elt.Pos()
+ }
+ genSerialize(t.Elem(), v, pos, nil, de)
+ fmt.Println("})")
+ fmt.Println("if err == io.EOF { break }")
+ fmt.Println(expr + " = append(" + expr + ", " + v + ")")
+ fmt.Println("chk(err)")
+ fmt.Println("}")
+ }
+ } else {
+ if lenhdr != nil {
+ fmt.Println("if len("+expr+") >",
+ "math.Max"+strings.Title(lenhdr.String()),
+ "{ chk(ErrTooLong) }")
+ genSerialize(lenhdr, lenhdr.String()+"(len("+expr+"))", pos, nil, de)
+ }
+ genSerialize(types.NewArray(t.Elem(), 0), expr, pos, nil, de)
+ }
+ case *types.Array:
+ et := t.Elem()
+ if et == byteT || et == uint8T {
+ if de {
+ fmt.Println("{",
+ "_, err := io.ReadFull(r, "+expr+"[:]);",
+ "chk(err)",
+ "}")
+ } else {
+ fmt.Println("{",
+ "_, err := w.Write("+expr+"[:]);",
+ "chk(err)",
+ "}")
+ }
+ break
+ }
+ i := newVar()
+ fmt.Println("for", i, ":= range", expr, "{")
+ if pos.IsValid() {
+ pos = pos2node(pos)[0].(*ast.ArrayType).Elt.Pos()
+ }
+ genSerialize(et, expr+"["+i+"]", pos, nil, de)
+ fmt.Println("}")
+ default:
+ error(pos, "can't serialize ", t)
+ }
+}
+
+func readOverrides(path string, override map[string]string) {
+ f, err := os.Open(path)
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer f.Close()
+
+ b := bufio.NewReader(f)
+ line := 0
+ col1 := ""
+ for {
+ ln, err := b.ReadString('\n')
+ if err != nil {
+ if err == io.EOF {
+ if len(ln) > 0 {
+ log.Fatal("no newline at end of ", f.Name())
+ }
+ return
+ }
+ log.Fatal(err)
+ }
+ line++
+
+ if ln == "\n" {
+ continue
+ }
+
+ fields := strings.SplitN(ln, "\t", 2)
+ if len(fields) == 1 {
+ log.Fatal(f.Name(), ":", line, ": missing tab")
+ }
+ if fields[0] != "" {
+ col1 = fields[0]
+ }
+
+ if col1 == "" {
+ fmt.Print(fields[1])
+ continue
+ }
+
+ override[col1] += fields[1]
+ }
+}
+
+func mkSerialize(t *types.Named) {
+ if !inSerialize[t.String()] {
+ serialize = append(serialize, t)
+ inSerialize[t.String()] = true
+ }
+}
+
+var varNo int
+
+func newVar() string {
+ varNo++
+ return fmt.Sprint("local", varNo)
+}
+
+func pos2node(pos token.Pos) []ast.Node {
+ return interval2node(pos, pos)
+}
+
+func interval2node(start, end token.Pos) []ast.Node {
+ for _, f := range pkg.Syntax {
+ if f.Pos() <= start && end <= f.End() {
+ if path, _ := astutil.PathEnclosingInterval(f, start, end); path != nil {
+ return path
+ }
+ }
+ }
+ return nil
+}
+
+func error(pos token.Pos, a ...interface{}) {
+ if !pos.IsValid() {
+ log.Fatal(a...)
+ }
+ log.Fatal(append([]interface{}{pkg.Fset.Position(pos), ": "}, a...)...)
+}
+
+func typeStr(t types.Type) string {
+ return types.TypeString(t, func(p *types.Package) string {
+ if p == pkg.Types {
+ return ""
+ }
+
+ return p.Name()
+ })
+}
+
+var typeNames = []string{
+ "ToSrvNil",
+ "ToSrvInit",
+ "ToSrvInit2",
+ "ToSrvModChanJoin",
+ "ToSrvModChanLeave",
+ "ToSrvModChanMsg",
+ "ToSrvPlayerPos",
+ "ToSrvGotBlks",
+ "ToSrvDeletedBlks",
+ "ToSrvInvAction",
+ "ToSrvChatMsg",
+ "ToSrvFallDmg",
+ "ToSrvSelectItem",
+ "ToSrvRespawn",
+ "ToSrvInteract",
+ "ToSrvRemovedSounds",
+ "ToSrvNodeMetaFields",
+ "ToSrvInvFields",
+ "ToSrvReqMedia",
+ "ToSrvCltReady",
+ "ToSrvFirstSRP",
+ "ToSrvSRPBytesA",
+ "ToSrvSRPBytesM",
+
+ "ToCltHello",
+ "ToCltAcceptAuth",
+ "ToCltAcceptSudoMode",
+ "ToCltDenySudoMode",
+ "ToCltDisco",
+ "ToCltBlkData",
+ "ToCltAddNode",
+ "ToCltRemoveNode",
+ "ToCltInv",
+ "ToCltTimeOfDay",
+ "ToCltCSMRestrictionFlags",
+ "ToCltAddPlayerVel",
+ "ToCltMediaPush",
+ "ToCltChatMsg",
+ "ToCltAORmAdd",
+ "ToCltAOMsgs",
+ "ToCltHP",
+ "ToCltMovePlayer",
+ "ToCltDiscoLegacy",
+ "ToCltFOV",
+ "ToCltDeathScreen",
+ "ToCltMedia",
+ "ToCltNodeDefs",
+ "ToCltAnnounceMedia",
+ "ToCltItemDefs",
+ "ToCltPlaySound",
+ "ToCltStopSound",
+ "ToCltPrivs",
+ "ToCltInvFormspec",
+ "ToCltDetachedInv",
+ "ToCltShowFormspec",
+ "ToCltMovement",
+ "ToCltSpawnParticle",
+ "ToCltAddParticleSpawner",
+ "ToCltAddHUD",
+ "ToCltRmHUD",
+ "ToCltChangeHUD",
+ "ToCltHUDFlags",
+ "ToCltSetHotbarParam",
+ "ToCltBreath",
+ "ToCltSkyParams",
+ "ToCltOverrideDayNightRatio",
+ "ToCltLocalPlayerAnim",
+ "ToCltEyeOffset",
+ "ToCltDelParticleSpawner",
+ "ToCltCloudParams",
+ "ToCltFadeSound",
+ "ToCltUpdatePlayerList",
+ "ToCltModChanMsg",
+ "ToCltModChanSig",
+ "ToCltNodeMetasChanged",
+ "ToCltSunParams",
+ "ToCltMoonParams",
+ "ToCltStarParams",
+ "ToCltSRPBytesSaltB",
+ "ToCltFormspecPrepend",
+
+ "AOCmdProps",
+ "AOCmdPos",
+ "AOCmdTextureMod",
+ "AOCmdSprite",
+ "AOCmdHP",
+ "AOCmdArmorGroups",
+ "AOCmdAnim",
+ "AOCmdBonePos",
+ "AOCmdAttach",
+ "AOCmdPhysOverride",
+ "AOCmdSpawnInfant",
+ "AOCmdAnimSpeed",
+
+ "NodeMeta",
+ "MinimapMode",
+ "NodeDef",
+ "PointedNode",
+ "PointedAO",
+}
+
+func main() {
+ log.SetFlags(0)
+ log.SetPrefix("mkserialize: ")
+
+ flag.Parse()
+
+ cfg := &packages.Config{Mode: packages.NeedSyntax |
+ packages.NeedName |
+ packages.NeedDeps |
+ packages.NeedImports |
+ packages.NeedTypes |
+ packages.NeedTypesInfo}
+ pkgs, err := packages.Load(cfg, flag.Args()...)
+ if err != nil {
+ log.Fatal(err)
+ }
+ if packages.PrintErrors(pkgs) > 0 {
+ os.Exit(1)
+ }
+
+ if len(pkgs) != 1 {
+ log.Fatal("must be exactly 1 package")
+ }
+ pkg = pkgs[0]
+
+ fmt.Println("package", pkg.Name)
+
+ readOverrides("serialize.fmt", serializeFmt)
+ readOverrides("deserialize.fmt", deserializeFmt)
+
+ for _, f := range pkg.Syntax {
+ for _, cg := range f.Comments {
+ for _, c := range cg.List {
+ if !strings.HasPrefix(c.Text, "//mt:") {
+ continue
+ }
+ st := interval2node(c.Pos(), c.End())[1].(*ast.StructType)
+ consts[st] = append(consts[st], c)
+ }
+ }
+ }
+
+ for _, name := range typeNames {
+ obj := pkg.Types.Scope().Lookup(name)
+ if obj == nil {
+ log.Println("undeclared identifier: ", name)
+ continue
+ }
+ mkSerialize(obj.Type().(*types.Named))
+ }
+
+ for i := 0; i < len(serialize); i++ {
+ for _, de := range []bool{false, true} {
+ t := serialize[i]
+ sig := "serialize(w io.Writer)"
+ if de {
+ sig = "deserialize(r io.Reader)"
+ }
+ fmt.Println("\nfunc (obj *" + t.Obj().Name() + ") " + sig + " {")
+ pos := t.Obj().Pos()
+ tExpr := pos2node(pos)[1].(*ast.TypeSpec).Type
+ var b strings.Builder
+ printer.Fprint(&b, pkg.Fset, tExpr)
+ genSerialize(pkg.TypesInfo.Types[tExpr].Type, "*(*("+b.String()+"))(obj)", tExpr.Pos(), nil, de)
+ fmt.Println("}")
+ }
+ }
+}
diff --git a/itemdef.go b/itemdef.go
new file mode 100644
index 0000000..a761b65
--- /dev/null
+++ b/itemdef.go
@@ -0,0 +1,56 @@
+package mt
+
+import "image/color"
+
+type ItemType uint8
+
+const (
+ _ ItemType = iota
+ NodeItem
+ CraftItem
+ ToolItem
+)
+
+// An ItemDef defines the properties of an item.
+type ItemDef struct {
+ //mt:lenhdr 16
+
+ // Version.
+ //mt:const uint8(6)
+
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+
+ //mt:end
+}
diff --git a/light.go b/light.go
new file mode 100644
index 0000000..b086591
--- /dev/null
+++ b/light.go
@@ -0,0 +1,13 @@
+package mt
+
+const (
+ MaxLight = 14 // Maximum artificial light.
+ SunLight = 15
+)
+
+type LightBank uint8
+
+const (
+ Day LightBank = iota
+ Night
+)
diff --git a/mapblk.go b/mapblk.go
new file mode 100644
index 0000000..f40a504
--- /dev/null
+++ b/mapblk.go
@@ -0,0 +1,56 @@
+package mt
+
+type MapBlkFlags uint8
+
+const (
+ BlkIsUnderground MapBlkFlags = 1 << iota
+ BlkDayNightDiff
+ BlkLightExpired
+ BlkNotGenerated
+)
+
+type LitFromBlks uint16
+
+const AlwaysLitFrom LitFromBlks = 0xf000
+
+func LitFrom(d Dir, b LightBank) LitFromBlks {
+ return 1 << (uint8(d) + uint8(6*b))
+}
+
+type MapBlk struct {
+ Flags MapBlkFlags
+ LitFrom LitFromBlks
+
+ //mt:const uint8(2) // Size of param0 in bytes.
+ //mt:const uint8(1 + 1) // Size of param1 and param2 combined, in bytes.
+
+ //mt:zlib
+ Param0 [4096]Content
+ Param1 [4096]uint8
+ Param2 [4096]uint8
+ //mt:end
+
+ NodeMetas map[uint16]*NodeMeta
+
+ // net info
+ //mt:const uint8(2) // version
+}
+
+// Pos2BlkPos converts a node position to a MapBlk position and index.
+func Pos2Blkpos(pos [3]int16) (blkpos [3]int16, i uint16) {
+ for j := range pos {
+ blkpos[j] = pos[j] >> 4
+ i |= uint16(pos[j]&0xf) << (4 * j)
+ }
+
+ return
+}
+
+// BlkPos2Pos converts a MapBlk position and index to a node position.
+func Blkpos2Pos(blkpos [3]int16, i uint16) (pos [3]int16) {
+ for j := range pos {
+ pos[j] = blkpos[j]<<4 | int16(i>>(4*j)&0xf)
+ }
+
+ return
+}
diff --git a/minimap.go b/minimap.go
new file mode 100644
index 0000000..f0817f7
--- /dev/null
+++ b/minimap.go
@@ -0,0 +1,29 @@
+package mt
+
+type MinimapType uint16
+
+const (
+ NoMinimap MinimapType = iota
+ SurfaceMinimap
+ RadarMinimap
+ TextureMinimap
+)
+
+type MinimapMode struct {
+ Type MinimapType
+ Label string
+ Size uint16
+ Texture
+ Scale uint16
+}
+
+// DefaultMinimap is the initial set of MinimapModes used by the client.
+var DefaultMinimap = []MinimapMode{
+ {Type: NoMinimap},
+ {Type: SurfaceMinimap, Size: 256},
+ {Type: SurfaceMinimap, Size: 128},
+ {Type: SurfaceMinimap, Size: 64},
+ {Type: RadarMinimap, Size: 512},
+ {Type: RadarMinimap, Size: 256},
+ {Type: RadarMinimap, Size: 128},
+}
diff --git a/mkpktinfos.sh b/mkpktinfos.sh
new file mode 100755
index 0000000..3d5d5e7
--- /dev/null
+++ b/mkpktinfos.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+(
+ echo // Code generated by mkpktinfos.sh. DO NOT EDIT.
+ echo
+ echo package mt
+ echo
+ awk '{
+ print "func (*"$1") DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{"$2", "($3 == "unrel" ? "true" : "false")"} }"
+ }' pktinfos
+) | goimports >pktinfos.go
diff --git a/mkserialize.sh b/mkserialize.sh
new file mode 100755
index 0000000..c758a85
--- /dev/null
+++ b/mkserialize.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+rm -f serialize.go
+
+(
+ echo // Code generated by mkserialize.sh. DO NOT EDIT.
+ echo
+ internal/mkserialize/mkserialize | goimports
+) >>serialize.go.tmp &&
+mv serialize.go.tmp serialize.go ||
+rm serialize.go.tmp
diff --git a/mt.go b/mt.go
index c5d665d..e7ca84a 100644
--- a/mt.go
+++ b/mt.go
@@ -1,5 +1,29 @@
+// Package mt implements the high-level Minetest protocol.
+// This version is compatible with
+// https://github.com/ClamityAnarchy/minetest/commit/66adeade9d5c45a5499b5ad1ad4bd91dae82482a.
package mt
+type Node struct {
+ Param0 Content
+ Param1, Param2 uint8
+}
+
+type Content uint16
+
+const (
+ Unknown Content = 125
+ Air Content = 126
+ Ignore Content = 127
+)
+
+type Group struct {
+ Name string
+ Rating int16
+}
+
type Field struct {
- Name, Value string
+ Name string
+
+ //mt:len32
+ Value string
}
diff --git a/nodebox.go b/nodebox.go
new file mode 100644
index 0000000..46d704c
--- /dev/null
+++ b/nodebox.go
@@ -0,0 +1,39 @@
+package mt
+
+type Box [2]Vec
+
+type NodeBoxType uint8
+
+const (
+ CubeBox NodeBoxType = iota
+ FixedBox
+ MountedBox
+ LeveledBox
+ ConnectedBox
+ maxBox
+)
+
+type DirBoxes struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+}
+
+type NodeBox struct {
+ //mt:const uint8(6)
+
+ Type NodeBoxType
+ //mt:assert %s.Type < maxBox
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+ //mt:end
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+ //mt:end
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ //mt:end
+}
diff --git a/nodedef.go b/nodedef.go
new file mode 100644
index 0000000..5606452
--- /dev/null
+++ b/nodedef.go
@@ -0,0 +1,148 @@
+package mt
+
+import "image/color"
+
+type Param1Type uint8
+
+const (
+ P1Nothing Param1Type = iota
+ P1Light
+)
+
+type Param2Type uint8
+
+const (
+ P2Nibble Param2Type = iota
+ P2Byte
+ P2Flowing
+ P2FaceDir
+ P2Mounted
+ P2Leveled
+ P2Rotation
+ P2Mesh
+ P2Color
+ P2ColorFaceDir
+ P2ColorMounted
+ P2GlassLikeLevel
+)
+
+// A DrawType specifies how a node is drawn.
+type DrawType uint8
+
+const (
+ DrawCube DrawType = iota
+ DrawNothing
+ DrawLiquid
+ DrawFlowing
+ DrawLikeGlass
+ DrawAllFaces
+ DrawAllFacesOpt
+ DrawTorch
+ DrawSign
+ DrawPlant
+ DrawFence
+ DrawRail
+ DrawNodeBox
+ DrawGlassFrame
+ DrawFire
+ DrawGlassFrameOpt
+ DrawMesh
+ DrawRootedPlant
+)
+
+type WaveType uint8
+
+const (
+ NotWaving WaveType = iota
+ PlantWaving // Only top waves from side to side.
+ LeafWaving // Wave side to side.
+ LiquidWaving // Wave up and down.
+)
+
+type LiquidType uint8
+
+const (
+ NotALiquid LiquidType = iota
+ FlowingLiquid
+ LiquidSrc
+)
+
+// AlphaUse specifies how the alpha channel of a texture is used.
+type AlphaUse uint8
+
+const (
+ Blend AlphaUse = iota
+ Mask // "Rounded" to either fully opaque or transparent.
+ Opaque
+ Legacy
+)
+
+type NodeDef struct {
+ Param0 Content
+
+ //mt:lenhdr 16
+
+ //mt:const uint8(13)
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+
+ //mt:end
+}
diff --git a/nodemeta.go b/nodemeta.go
new file mode 100644
index 0000000..b91abbf
--- /dev/null
+++ b/nodemeta.go
@@ -0,0 +1,27 @@
+package mt
+
+type NodeMeta struct {
+ //mt:len32
+ Fields []NodeMetaField
+
+ Inv Inv
+}
+
+type NodeMetaField struct {
+ Field
+ Private bool
+}
+
+func (nm *NodeMeta) Field(name string) *NodeMetaField {
+ if nm == nil {
+ return nil
+ }
+
+ for i, f := range nm.Fields {
+ if f.Name == name {
+ return &nm.Fields[i]
+ }
+ }
+
+ return nil
+}
diff --git a/pktinfos b/pktinfos
new file mode 100644
index 0000000..e6316f2
--- /dev/null
+++ b/pktinfos
@@ -0,0 +1,80 @@
+ToCltHello 0 rel
+ToCltAcceptAuth 0 rel
+ToCltAcceptSudoMode 0 rel
+ToCltDenySudoMode 0 rel
+ToCltDisco 0 rel
+ToCltBlkData 2 rel
+ToCltAddNode 0 rel
+ToCltRemoveNode 0 rel
+ToCltInv 0 rel
+ToCltTimeOfDay 0 rel
+ToCltCSMRestrictionFlags 0 rel
+ToCltAddPlayerVel 0 rel
+ToCltMediaPush 0 rel
+ToCltChatMsg 0 rel
+ToCltAORmAdd 0 rel
+ToCltAOMsgs 0 rel
+ToCltHP 0 rel
+ToCltMovePlayer 0 rel
+ToCltDiscoLegacy 0 rel
+ToCltFOV 0 rel
+ToCltDeathScreen 0 rel
+ToCltMedia 2 rel
+ToCltNodeDefs 0 rel
+ToCltAnnounceMedia 0 rel
+ToCltItemDefs 0 rel
+ToCltPlaySound 0 rel
+ToCltStopSound 0 rel
+ToCltPrivs 0 rel
+ToCltInvFormspec 0 rel
+ToCltDetachedInv 0 rel
+ToCltShowFormspec 0 rel
+ToCltMovement 0 rel
+ToCltSpawnParticle 0 rel
+ToCltAddParticleSpawner 0 rel
+ToCltAddHUD 1 rel
+ToCltRmHUD 1 rel
+ToCltChangeHUD 1 rel
+ToCltHUDFlags 1 rel
+ToCltSetHotbarParam 1 rel
+ToCltBreath 0 rel
+ToCltSkyParams 0 rel
+ToCltOverrideDayNightRatio 0 rel
+ToCltLocalPlayerAnim 0 rel
+ToCltEyeOffset 0 rel
+ToCltDelParticleSpawner 0 rel
+ToCltCloudParams 0 rel
+ToCltFadeSound 0 rel
+ToCltUpdatePlayerList 0 rel
+ToCltModChanMsg 0 rel
+ToCltModChanSig 0 rel
+ToCltNodeMetasChanged 0 rel
+ToCltSunParams 0 rel
+ToCltMoonParams 0 rel
+ToCltStarParams 0 rel
+ToCltSRPBytesSaltB 0 rel
+ToCltFormspecPrepend 0 rel
+ToCltMinimapModes 0 rel
+ToSrvNil 0 rel
+ToSrvInit 1 unrel
+ToSrvInit2 1 rel
+ToSrvModChanJoin 0 rel
+ToSrvModChanLeave 0 rel
+ToSrvModChanMsg 0 rel
+ToSrvPlayerPos 0 unrel
+ToSrvGotBlks 2 rel
+ToSrvDeletedBlks 2 rel
+ToSrvInvAction 0 rel
+ToSrvChatMsg 0 rel
+ToSrvFallDmg 0 rel
+ToSrvSelectItem 0 rel
+ToSrvRespawn 0 rel
+ToSrvInteract 0 rel
+ToSrvRemovedSounds 2 rel
+ToSrvNodeMetaFields 0 rel
+ToSrvInvFields 0 rel
+ToSrvReqMedia 1 rel
+ToSrvCltReady 1 rel
+ToSrvFirstSRP 1 rel
+ToSrvSRPBytesA 1 rel
+ToSrvSRPBytesM 1 rel
diff --git a/pktinfos.go b/pktinfos.go
new file mode 100644
index 0000000..4b725da
--- /dev/null
+++ b/pktinfos.go
@@ -0,0 +1,86 @@
+// Code generated by mkpktinfos.sh. DO NOT EDIT.
+
+package mt
+
+import "github.com/anon55555/mt/rudp"
+
+func (*ToCltHello) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltAcceptAuth) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltAcceptSudoMode) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltDenySudoMode) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltDisco) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltBlkData) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{2, false} }
+func (*ToCltAddNode) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltRemoveNode) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltInv) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltTimeOfDay) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltCSMRestrictionFlags) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltAddPlayerVel) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltMediaPush) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltChatMsg) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltAORmAdd) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltAOMsgs) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltHP) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltMovePlayer) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltDiscoLegacy) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltFOV) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltDeathScreen) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltMedia) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{2, false} }
+func (*ToCltNodeDefs) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltAnnounceMedia) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltItemDefs) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltPlaySound) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltStopSound) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltPrivs) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltInvFormspec) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltDetachedInv) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltShowFormspec) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltMovement) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltSpawnParticle) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltAddParticleSpawner) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltAddHUD) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{1, false} }
+func (*ToCltRmHUD) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{1, false} }
+func (*ToCltChangeHUD) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{1, false} }
+func (*ToCltHUDFlags) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{1, false} }
+func (*ToCltSetHotbarParam) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{1, false} }
+func (*ToCltBreath) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltSkyParams) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltOverrideDayNightRatio) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltLocalPlayerAnim) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltEyeOffset) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltDelParticleSpawner) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltCloudParams) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltFadeSound) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltUpdatePlayerList) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltModChanMsg) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltModChanSig) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltNodeMetasChanged) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltSunParams) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltMoonParams) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltStarParams) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltSRPBytesSaltB) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltFormspecPrepend) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToCltMinimapModes) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToSrvNil) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToSrvInit) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{1, true} }
+func (*ToSrvInit2) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{1, false} }
+func (*ToSrvModChanJoin) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToSrvModChanLeave) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToSrvModChanMsg) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToSrvPlayerPos) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, true} }
+func (*ToSrvGotBlks) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{2, false} }
+func (*ToSrvDeletedBlks) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{2, false} }
+func (*ToSrvInvAction) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToSrvChatMsg) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToSrvFallDmg) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToSrvSelectItem) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToSrvRespawn) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToSrvInteract) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToSrvRemovedSounds) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{2, false} }
+func (*ToSrvNodeMetaFields) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToSrvInvFields) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{0, false} }
+func (*ToSrvReqMedia) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{1, false} }
+func (*ToSrvCltReady) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{1, false} }
+func (*ToSrvFirstSRP) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{1, false} }
+func (*ToSrvSRPBytesA) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{1, false} }
+func (*ToSrvSRPBytesM) DefaultPktInfo() rudp.PktInfo { return rudp.PktInfo{1, false} }
diff --git a/playerpos.go b/playerpos.go
new file mode 100644
index 0000000..946bbae
--- /dev/null
+++ b/playerpos.go
@@ -0,0 +1,74 @@
+package mt
+
+type Keys uint32
+
+const (
+ ForwardKey Keys = 1 << iota
+ BackwardKey
+ LeftKey
+ RightKey
+ JumpKey
+ SpecialKey
+ SneakKey
+ DigKey
+ PlaceKey
+ ZoomKey
+)
+
+type PlayerPos struct {
+ Pos100, Vel100 [3]int32
+ Pitch100, Yaw100 int32
+ Keys Keys
+ FOV80 uint8
+ WantedRange uint8 // in MapBlks.
+}
+
+func (p PlayerPos) Pos() (pos Pos) {
+ for i := range pos {
+ pos[i] = float32(p.Pos100[i]) / 100
+ }
+ return
+}
+
+func (p *PlayerPos) SetPos(pos Pos) {
+ for i, x := range pos {
+ p.Pos100[i] = int32(x * 100)
+ }
+}
+
+func (p PlayerPos) Vel() (vel Vec) {
+ for i := range vel {
+ vel[i] = float32(p.Vel100[i]) / 100
+ }
+ return
+}
+
+func (p *PlayerPos) SetVel(vel Vec) {
+ for i, x := range vel {
+ p.Vel100[i] = int32(x * 100)
+ }
+}
+
+func (p PlayerPos) Pitch() float32 {
+ return float32(p.Pitch100) / 100
+}
+
+func (p *PlayerPos) SetPitch(pitch float32) {
+ p.Pitch100 = int32(pitch * 100)
+}
+
+func (p PlayerPos) Yaw() float32 {
+ return float32(p.Yaw100) / 100
+}
+
+func (p *PlayerPos) SetYaw(yaw float32) {
+ p.Yaw100 = int32(yaw * 100)
+}
+
+func (p PlayerPos) FOV() float32 {
+ return float32(p.FOV80) / 80
+}
+
+func (p *PlayerPos) SetFOV(fov float32) {
+ p.FOV80 = uint8(fov * 80)
+}
diff --git a/pointedthing.go b/pointedthing.go
new file mode 100644
index 0000000..c73130f
--- /dev/null
+++ b/pointedthing.go
@@ -0,0 +1,69 @@
+package mt
+
+import (
+ "fmt"
+ "io"
+)
+
+type PointedThing interface {
+ pt()
+}
+
+func (*PointedNode) pt() {}
+func (*PointedAO) pt() {}
+
+type PointedNode struct {
+ Under, Above [3]int16
+}
+
+func PointedSameNode(pos [3]int16) PointedThing {
+ return &PointedNode{pos, pos}
+}
+
+type PointedAO struct {
+ ID AOID
+}
+
+func writePointedThing(w io.Writer, pt PointedThing) error {
+ buf := make([]byte, 2)
+ buf[0] = 0
+ switch pt.(type) {
+ case nil:
+ buf[1] = 0
+ case *PointedNode:
+ buf[1] = 1
+ case *PointedAO:
+ buf[1] = 2
+ default:
+ panic(pt)
+ }
+ if _, err := w.Write(buf); err != nil {
+ return err
+ }
+ if pt == nil {
+ return nil
+ }
+ return serialize(w, pt)
+}
+
+func readPointedThing(r io.Reader) (PointedThing, error) {
+ buf := make([]byte, 2)
+ if _, err := io.ReadFull(r, buf); err != nil {
+ return nil, err
+ }
+ if buf[0] != 0 {
+ return nil, fmt.Errorf("unsupported PointedThing version: %d", buf[0])
+ }
+ var pt PointedThing
+ switch buf[1] {
+ case 0:
+ return nil, nil
+ case 1:
+ pt = new(PointedNode)
+ case 2:
+ pt = new(PointedAO)
+ case 3:
+ return nil, fmt.Errorf("invalid PointedThing type: %d", buf[1])
+ }
+ return pt, deserialize(r, pt)
+}
diff --git a/pos.go b/pos.go
new file mode 100644
index 0000000..7242a6e
--- /dev/null
+++ b/pos.go
@@ -0,0 +1,38 @@
+package mt
+
+import "math"
+
+// A Pos is a world space position,
+// represented as a Vec from the origin.
+type Pos Vec
+
+// Add returns p+v.
+func (p Pos) Add(v Vec) Pos {
+ return Pos(Vec(p).Add(v))
+}
+
+// Sub returns p-v.
+func (p Pos) Sub(v Vec) Pos {
+ return Pos(Vec(p).Sub(v))
+}
+
+// From returns the Vec which moves to p from q.
+func (p Pos) From(q Pos) Vec {
+ return Vec(p).Sub(Vec(q))
+}
+
+// Int returns the position of the node which the Pos is inside.
+func (p Pos) Int() (ip [3]int16) {
+ for i := range ip {
+ ip[i] = int16(math.Round(float64(p[i]) / 10))
+ }
+ return
+}
+
+// IntPos returns the Pos of the node at ip.
+func IntPos(ip [3]int16) (p Pos) {
+ for i := range p {
+ p[i] = 10 * float32(ip[i])
+ }
+ return
+}
diff --git a/proto.go b/proto.go
new file mode 100644
index 0000000..b859a39
--- /dev/null
+++ b/proto.go
@@ -0,0 +1,101 @@
+package mt
+
+import (
+ "fmt"
+ "io"
+ "net"
+
+ "github.com/anon55555/mt/rudp"
+)
+
+const ChannelCount = rudp.ChannelCount
+
+// A Pkt is a deserialized rudp.Pkt.
+type Pkt struct {
+ Cmd
+ rudp.PktInfo
+}
+
+// Peer wraps rudp.Conn, adding (de)serialization.
+type Peer struct {
+ *rudp.Conn
+}
+
+func (p Peer) Send(pkt Pkt) (ack <-chan struct{}, err error) {
+ var cmdNo uint16
+ if p.IsSrv() {
+ cmdNo = pkt.Cmd.(ToSrvCmd).toSrvCmdNo()
+ } else {
+ cmdNo = pkt.Cmd.(ToCltCmd).toCltCmdNo()
+ }
+
+ r, w := io.Pipe()
+ go func() (err error) {
+ defer w.CloseWithError(err)
+
+ buf := make([]byte, 2)
+ be.PutUint16(buf, cmdNo)
+ if _, err := w.Write(buf); err != nil {
+ return err
+ }
+ return serialize(w, pkt.Cmd)
+ }()
+
+ return p.Conn.Send(rudp.Pkt{r, pkt.PktInfo})
+}
+
+// SendCmd is equivalent to Send(Pkt{cmd, cmd.DefaultPktInfo()}).
+func (p Peer) SendCmd(cmd Cmd) (ack <-chan struct{}, err error) {
+ return p.Send(Pkt{cmd, cmd.DefaultPktInfo()})
+}
+
+func (p Peer) Recv() (_ Pkt, rerr error) {
+ pkt, err := p.Conn.Recv()
+ if err != nil {
+ return Pkt{}, err
+ }
+
+ buf := make([]byte, 2)
+ if _, err := io.ReadFull(pkt, buf); err != nil {
+ return Pkt{}, err
+ }
+ cmdNo := be.Uint16(buf)
+
+ var newCmd func() Cmd
+ if p.IsSrv() {
+ newCmd = newToCltCmd[cmdNo]
+ } else {
+ newCmd = newToSrvCmd[cmdNo]
+ }
+ if newCmd == nil {
+ return Pkt{}, fmt.Errorf("unknown cmd: %d", cmdNo)
+ }
+ cmd := newCmd()
+
+ if err := deserialize(pkt, cmd); err != nil {
+ return Pkt{}, fmt.Errorf("%T: %w", cmd, err)
+ }
+
+ extra, err := io.ReadAll(pkt)
+ if len(extra) > 0 {
+ err = rudp.TrailingDataError(extra)
+ }
+ return Pkt{cmd, pkt.PktInfo}, err
+}
+
+func Connect(conn net.Conn) Peer {
+ return Peer{rudp.Connect(conn)}
+}
+
+type Listener struct {
+ *rudp.Listener
+}
+
+func Listen(conn net.PacketConn) Listener {
+ return Listener{rudp.Listen(conn)}
+}
+
+func (l Listener) Accept() (Peer, error) {
+ rpeer, err := l.Listener.Accept()
+ return Peer{rpeer}, err
+}
diff --git a/rudp/proxy/proxy.go b/rudp/cmd/proxy/proxy.go
index b8ca9f4..b8ca9f4 100644
--- a/rudp/proxy/proxy.go
+++ b/rudp/cmd/proxy/proxy.go
diff --git a/serialize.fmt b/serialize.fmt
new file mode 100644
index 0000000..c157001
--- /dev/null
+++ b/serialize.fmt
@@ -0,0 +1,163 @@
+ func write8(w io.Writer, x uint8) {
+ _, err := w.Write([]byte{x})
+ chk(err)
+ }
+
+ func write16(w io.Writer, x uint16) {
+ buf := make([]byte, 2)
+ be.PutUint16(buf, x)
+ _, err := w.Write(buf)
+ chk(err)
+ }
+
+ func write32(w io.Writer, x uint32) {
+ buf := make([]byte, 4)
+ be.PutUint32(buf, x)
+ _, err := w.Write(buf)
+ chk(err)
+ }
+
+ func write64(w io.Writer, x uint64) {
+ buf := make([]byte, 8)
+ be.PutUint64(buf, x)
+ _, err := w.Write(buf)
+ chk(err)
+ }
+
+byte write8(w, uint8(x))
+uint8 write8(w, uint8(x))
+uint16 write16(w, uint16(x))
+uint32 write32(w, uint32(x))
+uint64 write64(w, uint64(x))
+
+int8 write8(w, uint8(x))
+int16 write16(w, uint16(x))
+int32 write32(w, uint32(x))
+int64 write64(w, uint64(x))
+
+bool if x { write8(w, 1) } else { write8(w, 0) }
+
+float32 write32(w, math.Float32bits(x))
+float64 write64(w, math.Float64bits(x))
+
+AOMsg writeAOMsg(w, x)
+
+image/color.NRGBA w.Write([]byte{x.A, x.R, x.G, x.B})
+
+map[uint16]*NodeMeta {
+ w := zlib.NewWriter(w)
+
+ if x == nil {
+ write8(w, 0)
+ } else {
+ write8(w, 2)
+ if len(x) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ write16(w, uint16(len(x)))
+ keys := make([]uint16, 0, len(x))
+ for key := range x {
+ keys = append(keys, key)
+ }
+ sort.Slice(keys, func(i, j int) bool {
+ i2pos := func(i int) [3]int16 {
+ return Blkpos2Pos([3]int16{}, keys[i])
+ }
+
+ p, q := i2pos(i), i2pos(j)
+
+ for i := range p {
+ switch {
+ case p[i] < q[i]:
+ return true
+ case p[i] > q[i]:
+ return false
+ }
+ }
+
+ return false
+ })
+ for _, key := range keys {
+ write16(w, key)
+ chk(serialize(w, x[key]))
+ }
+ }
+
+ chk(w.Close())
+ }
+
+map[[3]int16]*NodeMeta {
+ w := zlib.NewWriter(w)
+
+ if x == nil {
+ write8(w, 0)
+ } else {
+ write8(w, 2)
+ if len(x) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ write16(w, uint16(len(x)))
+ keys := make([][3]int16, 0, len(x))
+ for key := range x {
+ keys = append(keys, key)
+ }
+ sort.Slice(keys, func(i, j int) bool {
+ p, q := keys[i], keys[j]
+
+ for i := range p {
+ switch {
+ case p[i] < q[i]:
+ return true
+ case p[i] > q[i]:
+ return false
+ }
+ }
+
+ return false
+ })
+ for _, key := range keys {
+ for _, n := range key {
+ write16(w, uint16(n))
+ }
+ chk(serialize(w, x[key]))
+ }
+ }
+
+ chk(w.Close())
+ }
+
+PointedThing chk(writePointedThing(w, x))
+
+[]AOMsg { // For AOInitData.Msgs
+ if len(x) > math.MaxUint8 {
+ chk(ErrTooLong)
+ }
+ write8(w, uint8(len(x)))
+ for _, msg := range x {
+ var b bytes.Buffer
+ chk(writeAOMsg(&b, msg))
+ if b.Len() > math.MaxUint32 {
+ chk(ErrTooLong)
+ }
+ write32(w, uint32(b.Len()))
+ _, err := b.WriteTo(w)
+ chk(err)
+ }
+ }
+
+[]NodeDef { // For ToCltNodeDefs.Defs
+ if len(x) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ write16(w, uint16(len(x)))
+ var b bytes.Buffer
+ for i := range x {
+ x[i].serialize(&b)
+ }
+ if b.Len() > math.MaxUint32 {
+ chk(ErrTooLong)
+ }
+ write32(w, uint32(b.Len()))
+ _, err := b.WriteTo(w)
+ chk(err)
+ }
diff --git a/serialize.go b/serialize.go
new file mode 100644
index 0000000..892e9f3
--- /dev/null
+++ b/serialize.go
@@ -0,0 +1,35094 @@
+// Code generated by mkserialize.sh. DO NOT EDIT.
+
+package mt
+
+import (
+ "bytes"
+ "compress/zlib"
+ "crypto/sha1"
+ "errors"
+ "fmt"
+ "image/color"
+ "io"
+ "math"
+ "sort"
+ "unicode/utf16"
+)
+
+func write8(w io.Writer, x uint8) {
+ _, err := w.Write([]byte{x})
+ chk(err)
+}
+
+func write16(w io.Writer, x uint16) {
+ buf := make([]byte, 2)
+ be.PutUint16(buf, x)
+ _, err := w.Write(buf)
+ chk(err)
+}
+
+func write32(w io.Writer, x uint32) {
+ buf := make([]byte, 4)
+ be.PutUint32(buf, x)
+ _, err := w.Write(buf)
+ chk(err)
+}
+
+func write64(w io.Writer, x uint64) {
+ buf := make([]byte, 8)
+ be.PutUint64(buf, x)
+ _, err := w.Write(buf)
+ chk(err)
+}
+func readBuf(r io.Reader, n int) []byte {
+ buf := make([]byte, n)
+ _, err := io.ReadFull(r, buf)
+ chk(err)
+ return buf
+}
+
+func read8(r io.Reader) uint8 { return readBuf(r, 1)[0] }
+func read16(r io.Reader) uint16 { return be.Uint16(readBuf(r, 2)) }
+func read32(r io.Reader) uint32 { return be.Uint32(readBuf(r, 4)) }
+func read64(r io.Reader) uint64 { return be.Uint64(readBuf(r, 8)) }
+
+func (obj *ToSrvNil) serialize(w io.Writer) {
+}
+
+func (obj *ToSrvNil) deserialize(r io.Reader) {
+}
+
+func (obj *ToSrvInit) serialize(w io.Writer) {
+ {
+ x := (*(*(struct {
+ SerializeVer uint8
+ SupportedCompression CompressionModes
+ MinProtoVer, MaxProtoVer uint16
+ PlayerName string
+
+ //mt:opt
+ SendFullItemMeta bool
+ }))(obj)).SerializeVer
+ write8(w, uint8(x))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ SerializeVer uint8
+ SupportedCompression CompressionModes
+ MinProtoVer, MaxProtoVer uint16
+ PlayerName string
+
+ //mt:opt
+ SendFullItemMeta bool
+ }))(obj)).SupportedCompression).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.CompressionModes", err))
+ }
+ {
+ x := (*(*(struct {
+ SerializeVer uint8
+ SupportedCompression CompressionModes
+ MinProtoVer, MaxProtoVer uint16
+ PlayerName string
+
+ //mt:opt
+ SendFullItemMeta bool
+ }))(obj)).MinProtoVer
+ write16(w, uint16(x))
+ }
+ {
+ x := (*(*(struct {
+ SerializeVer uint8
+ SupportedCompression CompressionModes
+ MinProtoVer, MaxProtoVer uint16
+ PlayerName string
+
+ //mt:opt
+ SendFullItemMeta bool
+ }))(obj)).MaxProtoVer
+ write16(w, uint16(x))
+ }
+ if len(([]byte((*(*(struct {
+ SerializeVer uint8
+ SupportedCompression CompressionModes
+ MinProtoVer, MaxProtoVer uint16
+ PlayerName string
+
+ //mt:opt
+ SendFullItemMeta bool
+ }))(obj)).PlayerName))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ SerializeVer uint8
+ SupportedCompression CompressionModes
+ MinProtoVer, MaxProtoVer uint16
+ PlayerName string
+
+ //mt:opt
+ SendFullItemMeta bool
+ }))(obj)).PlayerName))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ SerializeVer uint8
+ SupportedCompression CompressionModes
+ MinProtoVer, MaxProtoVer uint16
+ PlayerName string
+
+ //mt:opt
+ SendFullItemMeta bool
+ }))(obj)).PlayerName))[:])
+ chk(err)
+ }
+ if err := pcall(func() {
+ {
+ x := (*(*(struct {
+ SerializeVer uint8
+ SupportedCompression CompressionModes
+ MinProtoVer, MaxProtoVer uint16
+ PlayerName string
+
+ //mt:opt
+ SendFullItemMeta bool
+ }))(obj)).SendFullItemMeta
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ }); err != nil && err != io.EOF {
+ chk(err)
+ }
+}
+
+func (obj *ToSrvInit) deserialize(r io.Reader) {
+ {
+ p := &(*(*(struct {
+ SerializeVer uint8
+ SupportedCompression CompressionModes
+ MinProtoVer, MaxProtoVer uint16
+ PlayerName string
+
+ //mt:opt
+ SendFullItemMeta bool
+ }))(obj)).SerializeVer
+ *p = read8(r)
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ SerializeVer uint8
+ SupportedCompression CompressionModes
+ MinProtoVer, MaxProtoVer uint16
+ PlayerName string
+
+ //mt:opt
+ SendFullItemMeta bool
+ }))(obj)).SupportedCompression).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.CompressionModes", err))
+ }
+ {
+ p := &(*(*(struct {
+ SerializeVer uint8
+ SupportedCompression CompressionModes
+ MinProtoVer, MaxProtoVer uint16
+ PlayerName string
+
+ //mt:opt
+ SendFullItemMeta bool
+ }))(obj)).MinProtoVer
+ *p = read16(r)
+ }
+ {
+ p := &(*(*(struct {
+ SerializeVer uint8
+ SupportedCompression CompressionModes
+ MinProtoVer, MaxProtoVer uint16
+ PlayerName string
+
+ //mt:opt
+ SendFullItemMeta bool
+ }))(obj)).MaxProtoVer
+ *p = read16(r)
+ }
+ var local1 []uint8
+ var local2 uint16
+ {
+ p := &local2
+ *p = read16(r)
+ }
+ (local1) = make([]uint8, local2)
+ {
+ _, err := io.ReadFull(r, (local1)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ SerializeVer uint8
+ SupportedCompression CompressionModes
+ MinProtoVer, MaxProtoVer uint16
+ PlayerName string
+
+ //mt:opt
+ SendFullItemMeta bool
+ }))(obj)).PlayerName) = string(local1)
+ if err := pcall(func() {
+ {
+ p := &(*(*(struct {
+ SerializeVer uint8
+ SupportedCompression CompressionModes
+ MinProtoVer, MaxProtoVer uint16
+ PlayerName string
+
+ //mt:opt
+ SendFullItemMeta bool
+ }))(obj)).SendFullItemMeta
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ }); err != nil && err != io.EOF {
+ chk(err)
+ }
+}
+
+func (obj *ToSrvInit2) serialize(w io.Writer) {
+ if len(([]byte((*(*(struct {
+ Lang string
+ }))(obj)).Lang))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Lang string
+ }))(obj)).Lang))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Lang string
+ }))(obj)).Lang))[:])
+ chk(err)
+ }
+}
+
+func (obj *ToSrvInit2) deserialize(r io.Reader) {
+ var local3 []uint8
+ var local4 uint16
+ {
+ p := &local4
+ *p = read16(r)
+ }
+ (local3) = make([]uint8, local4)
+ {
+ _, err := io.ReadFull(r, (local3)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Lang string
+ }))(obj)).Lang) = string(local3)
+}
+
+func (obj *ToSrvModChanJoin) serialize(w io.Writer) {
+ if len(([]byte((*(*(struct {
+ Channel string
+ }))(obj)).Channel))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Channel string
+ }))(obj)).Channel))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Channel string
+ }))(obj)).Channel))[:])
+ chk(err)
+ }
+}
+
+func (obj *ToSrvModChanJoin) deserialize(r io.Reader) {
+ var local5 []uint8
+ var local6 uint16
+ {
+ p := &local6
+ *p = read16(r)
+ }
+ (local5) = make([]uint8, local6)
+ {
+ _, err := io.ReadFull(r, (local5)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Channel string
+ }))(obj)).Channel) = string(local5)
+}
+
+func (obj *ToSrvModChanLeave) serialize(w io.Writer) {
+ if len(([]byte((*(*(struct {
+ Channel string
+ }))(obj)).Channel))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Channel string
+ }))(obj)).Channel))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Channel string
+ }))(obj)).Channel))[:])
+ chk(err)
+ }
+}
+
+func (obj *ToSrvModChanLeave) deserialize(r io.Reader) {
+ var local7 []uint8
+ var local8 uint16
+ {
+ p := &local8
+ *p = read16(r)
+ }
+ (local7) = make([]uint8, local8)
+ {
+ _, err := io.ReadFull(r, (local7)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Channel string
+ }))(obj)).Channel) = string(local7)
+}
+
+func (obj *ToSrvModChanMsg) serialize(w io.Writer) {
+ if len(([]byte((*(*(struct {
+ Channel string
+ Msg string
+ }))(obj)).Channel))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Channel string
+ Msg string
+ }))(obj)).Channel))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Channel string
+ Msg string
+ }))(obj)).Channel))[:])
+ chk(err)
+ }
+ if len(([]byte((*(*(struct {
+ Channel string
+ Msg string
+ }))(obj)).Msg))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Channel string
+ Msg string
+ }))(obj)).Msg))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Channel string
+ Msg string
+ }))(obj)).Msg))[:])
+ chk(err)
+ }
+}
+
+func (obj *ToSrvModChanMsg) deserialize(r io.Reader) {
+ var local9 []uint8
+ var local10 uint16
+ {
+ p := &local10
+ *p = read16(r)
+ }
+ (local9) = make([]uint8, local10)
+ {
+ _, err := io.ReadFull(r, (local9)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Channel string
+ Msg string
+ }))(obj)).Channel) = string(local9)
+ var local11 []uint8
+ var local12 uint16
+ {
+ p := &local12
+ *p = read16(r)
+ }
+ (local11) = make([]uint8, local12)
+ {
+ _, err := io.ReadFull(r, (local11)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Channel string
+ Msg string
+ }))(obj)).Msg) = string(local11)
+}
+
+func (obj *ToSrvPlayerPos) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Pos PlayerPos
+ }))(obj)).Pos).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.PlayerPos", err))
+ }
+}
+
+func (obj *ToSrvPlayerPos) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Pos PlayerPos
+ }))(obj)).Pos).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.PlayerPos", err))
+ }
+}
+
+func (obj *ToSrvGotBlks) serialize(w io.Writer) {
+ if len(((*(*(struct {
+ //mt:len8
+ Blks [][3]int16
+ }))(obj)).Blks)) > math.MaxUint8 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint8(len(((*(*(struct {
+ //mt:len8
+ Blks [][3]int16
+ }))(obj)).Blks)))
+ write8(w, uint8(x))
+ }
+ for local13 := range (*(*(struct {
+ //mt:len8
+ Blks [][3]int16
+ }))(obj)).Blks {
+ for local14 := range ((*(*(struct {
+ //mt:len8
+ Blks [][3]int16
+ }))(obj)).Blks)[local13] {
+ {
+ x := (((*(*(struct {
+ //mt:len8
+ Blks [][3]int16
+ }))(obj)).Blks)[local13])[local14]
+ write16(w, uint16(x))
+ }
+ }
+ }
+}
+
+func (obj *ToSrvGotBlks) deserialize(r io.Reader) {
+ var local15 uint8
+ {
+ p := &local15
+ *p = read8(r)
+ }
+ ((*(*(struct {
+ //mt:len8
+ Blks [][3]int16
+ }))(obj)).Blks) = make([][3]int16, local15)
+ for local16 := range (*(*(struct {
+ //mt:len8
+ Blks [][3]int16
+ }))(obj)).Blks {
+ for local17 := range ((*(*(struct {
+ //mt:len8
+ Blks [][3]int16
+ }))(obj)).Blks)[local16] {
+ {
+ p := &(((*(*(struct {
+ //mt:len8
+ Blks [][3]int16
+ }))(obj)).Blks)[local16])[local17]
+ *p = int16(read16(r))
+ }
+ }
+ }
+}
+
+func (obj *ToSrvDeletedBlks) serialize(w io.Writer) {
+ if len(((*(*(struct {
+ //mt:len8
+ Blks [][3]int16
+ }))(obj)).Blks)) > math.MaxUint8 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint8(len(((*(*(struct {
+ //mt:len8
+ Blks [][3]int16
+ }))(obj)).Blks)))
+ write8(w, uint8(x))
+ }
+ for local18 := range (*(*(struct {
+ //mt:len8
+ Blks [][3]int16
+ }))(obj)).Blks {
+ for local19 := range ((*(*(struct {
+ //mt:len8
+ Blks [][3]int16
+ }))(obj)).Blks)[local18] {
+ {
+ x := (((*(*(struct {
+ //mt:len8
+ Blks [][3]int16
+ }))(obj)).Blks)[local18])[local19]
+ write16(w, uint16(x))
+ }
+ }
+ }
+}
+
+func (obj *ToSrvDeletedBlks) deserialize(r io.Reader) {
+ var local20 uint8
+ {
+ p := &local20
+ *p = read8(r)
+ }
+ ((*(*(struct {
+ //mt:len8
+ Blks [][3]int16
+ }))(obj)).Blks) = make([][3]int16, local20)
+ for local21 := range (*(*(struct {
+ //mt:len8
+ Blks [][3]int16
+ }))(obj)).Blks {
+ for local22 := range ((*(*(struct {
+ //mt:len8
+ Blks [][3]int16
+ }))(obj)).Blks)[local21] {
+ {
+ p := &(((*(*(struct {
+ //mt:len8
+ Blks [][3]int16
+ }))(obj)).Blks)[local21])[local22]
+ *p = int16(read16(r))
+ }
+ }
+ }
+}
+
+func (obj *ToSrvInvAction) serialize(w io.Writer) {
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ //mt:raw
+ Action string
+ }))(obj)).Action))[:])
+ chk(err)
+ }
+}
+
+func (obj *ToSrvInvAction) deserialize(r io.Reader) {
+ var local23 []uint8
+ for {
+ var local24 uint8
+ err := pcall(func() {
+ {
+ p := &local24
+ *p = read8(r)
+ }
+ })
+ if err == io.EOF {
+ break
+ }
+ (local23) = append((local23), local24)
+ chk(err)
+ }
+ ((*(*(struct {
+ //mt:raw
+ Action string
+ }))(obj)).Action) = string(local23)
+}
+
+func (obj *ToSrvChatMsg) serialize(w io.Writer) {
+ if len((utf16.Encode([]rune((*(*(struct {
+ //mt:utf16
+ Msg string
+ }))(obj)).Msg)))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len((utf16.Encode([]rune((*(*(struct {
+ //mt:utf16
+ Msg string
+ }))(obj)).Msg)))))
+ write16(w, uint16(x))
+ }
+ for local25 := range utf16.Encode([]rune((*(*(struct {
+ //mt:utf16
+ Msg string
+ }))(obj)).Msg)) {
+ {
+ x := (utf16.Encode([]rune((*(*(struct {
+ //mt:utf16
+ Msg string
+ }))(obj)).Msg)))[local25]
+ write16(w, uint16(x))
+ }
+ }
+}
+
+func (obj *ToSrvChatMsg) deserialize(r io.Reader) {
+ var local26 []uint16
+ var local27 uint16
+ {
+ p := &local27
+ *p = read16(r)
+ }
+ (local26) = make([]uint16, local27)
+ for local28 := range local26 {
+ {
+ p := &(local26)[local28]
+ *p = read16(r)
+ }
+ }
+ (*(*(struct {
+ //mt:utf16
+ Msg string
+ }))(obj)).Msg = string(utf16.Decode(local26))
+}
+
+func (obj *ToSrvFallDmg) serialize(w io.Writer) {
+ {
+ x := (*(*(struct {
+ Amount uint16
+ }))(obj)).Amount
+ write16(w, uint16(x))
+ }
+}
+
+func (obj *ToSrvFallDmg) deserialize(r io.Reader) {
+ {
+ p := &(*(*(struct {
+ Amount uint16
+ }))(obj)).Amount
+ *p = read16(r)
+ }
+}
+
+func (obj *ToSrvSelectItem) serialize(w io.Writer) {
+ {
+ x := (*(*(struct {
+ Slot uint16
+ }))(obj)).Slot
+ write16(w, uint16(x))
+ }
+}
+
+func (obj *ToSrvSelectItem) deserialize(r io.Reader) {
+ {
+ p := &(*(*(struct {
+ Slot uint16
+ }))(obj)).Slot
+ *p = read16(r)
+ }
+}
+
+func (obj *ToSrvRespawn) serialize(w io.Writer) {
+}
+
+func (obj *ToSrvRespawn) deserialize(r io.Reader) {
+}
+
+func (obj *ToSrvInteract) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Action Interaction
+ ItemSlot uint16
+ //mt:lenhdr 32
+ Pointed PointedThing
+ //mt:end
+ Pos PlayerPos
+ }))(obj)).Action).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Interaction", err))
+ }
+ {
+ x := (*(*(struct {
+ Action Interaction
+ ItemSlot uint16
+ //mt:lenhdr 32
+ Pointed PointedThing
+ //mt:end
+ Pos PlayerPos
+ }))(obj)).ItemSlot
+ write16(w, uint16(x))
+ }
+ {
+ ow := w
+ w := new(bytes.Buffer)
+ {
+ x := (*(*(struct {
+ Action Interaction
+ ItemSlot uint16
+ //mt:lenhdr 32
+ Pointed PointedThing
+ //mt:end
+ Pos PlayerPos
+ }))(obj)).Pointed
+ chk(writePointedThing(w, x))
+ }
+ {
+ buf := w
+ w := ow
+ if len((buf.Bytes())) > math.MaxUint32 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint32(len((buf.Bytes())))
+ write32(w, uint32(x))
+ }
+ {
+ _, err := w.Write((buf.Bytes())[:])
+ chk(err)
+ }
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Action Interaction
+ ItemSlot uint16
+ //mt:lenhdr 32
+ Pointed PointedThing
+ //mt:end
+ Pos PlayerPos
+ }))(obj)).Pos).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.PlayerPos", err))
+ }
+}
+
+func (obj *ToSrvInteract) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Action Interaction
+ ItemSlot uint16
+ //mt:lenhdr 32
+ Pointed PointedThing
+ //mt:end
+ Pos PlayerPos
+ }))(obj)).Action).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Interaction", err))
+ }
+ {
+ p := &(*(*(struct {
+ Action Interaction
+ ItemSlot uint16
+ //mt:lenhdr 32
+ Pointed PointedThing
+ //mt:end
+ Pos PlayerPos
+ }))(obj)).ItemSlot
+ *p = read16(r)
+ }
+ {
+ var n uint32
+ {
+ p := &n
+ *p = read32(r)
+ }
+ r := &io.LimitedReader{r, int64(n)}
+ {
+ p := &(*(*(struct {
+ Action Interaction
+ ItemSlot uint16
+ //mt:lenhdr 32
+ Pointed PointedThing
+ //mt:end
+ Pos PlayerPos
+ }))(obj)).Pointed
+ {
+ var err error
+ *p, err = readPointedThing(r)
+ chk(err)
+ }
+ }
+ if r.N > 0 {
+ chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Action Interaction
+ ItemSlot uint16
+ //mt:lenhdr 32
+ Pointed PointedThing
+ //mt:end
+ Pos PlayerPos
+ }))(obj)).Pos).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.PlayerPos", err))
+ }
+}
+
+func (obj *ToSrvRemovedSounds) serialize(w io.Writer) {
+ if len(((*(*(struct {
+ IDs []SoundID
+ }))(obj)).IDs)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ IDs []SoundID
+ }))(obj)).IDs)))
+ write16(w, uint16(x))
+ }
+ for local29 := range (*(*(struct {
+ IDs []SoundID
+ }))(obj)).IDs {
+ if err := pcall(func() {
+ (((*(*(struct {
+ IDs []SoundID
+ }))(obj)).IDs)[local29]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.SoundID", err))
+ }
+ }
+}
+
+func (obj *ToSrvRemovedSounds) deserialize(r io.Reader) {
+ var local30 uint16
+ {
+ p := &local30
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ IDs []SoundID
+ }))(obj)).IDs) = make([]SoundID, local30)
+ for local31 := range (*(*(struct {
+ IDs []SoundID
+ }))(obj)).IDs {
+ if err := pcall(func() {
+ (((*(*(struct {
+ IDs []SoundID
+ }))(obj)).IDs)[local31]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.SoundID", err))
+ }
+ }
+}
+
+func (obj *ToSrvNodeMetaFields) serialize(w io.Writer) {
+ for local32 := range (*(*(struct {
+ Pos [3]int16
+ Formname string
+ Fields []Field
+ }))(obj)).Pos {
+ {
+ x := ((*(*(struct {
+ Pos [3]int16
+ Formname string
+ Fields []Field
+ }))(obj)).Pos)[local32]
+ write16(w, uint16(x))
+ }
+ }
+ if len(([]byte((*(*(struct {
+ Pos [3]int16
+ Formname string
+ Fields []Field
+ }))(obj)).Formname))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Pos [3]int16
+ Formname string
+ Fields []Field
+ }))(obj)).Formname))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Pos [3]int16
+ Formname string
+ Fields []Field
+ }))(obj)).Formname))[:])
+ chk(err)
+ }
+ if len(((*(*(struct {
+ Pos [3]int16
+ Formname string
+ Fields []Field
+ }))(obj)).Fields)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Pos [3]int16
+ Formname string
+ Fields []Field
+ }))(obj)).Fields)))
+ write16(w, uint16(x))
+ }
+ for local33 := range (*(*(struct {
+ Pos [3]int16
+ Formname string
+ Fields []Field
+ }))(obj)).Fields {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Pos [3]int16
+ Formname string
+ Fields []Field
+ }))(obj)).Fields)[local33]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Field", err))
+ }
+ }
+}
+
+func (obj *ToSrvNodeMetaFields) deserialize(r io.Reader) {
+ for local34 := range (*(*(struct {
+ Pos [3]int16
+ Formname string
+ Fields []Field
+ }))(obj)).Pos {
+ {
+ p := &((*(*(struct {
+ Pos [3]int16
+ Formname string
+ Fields []Field
+ }))(obj)).Pos)[local34]
+ *p = int16(read16(r))
+ }
+ }
+ var local35 []uint8
+ var local36 uint16
+ {
+ p := &local36
+ *p = read16(r)
+ }
+ (local35) = make([]uint8, local36)
+ {
+ _, err := io.ReadFull(r, (local35)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Pos [3]int16
+ Formname string
+ Fields []Field
+ }))(obj)).Formname) = string(local35)
+ var local37 uint16
+ {
+ p := &local37
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Pos [3]int16
+ Formname string
+ Fields []Field
+ }))(obj)).Fields) = make([]Field, local37)
+ for local38 := range (*(*(struct {
+ Pos [3]int16
+ Formname string
+ Fields []Field
+ }))(obj)).Fields {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Pos [3]int16
+ Formname string
+ Fields []Field
+ }))(obj)).Fields)[local38]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Field", err))
+ }
+ }
+}
+
+func (obj *ToSrvInvFields) serialize(w io.Writer) {
+ if len(([]byte((*(*(struct {
+ Formname string
+ Fields []Field
+ }))(obj)).Formname))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Formname string
+ Fields []Field
+ }))(obj)).Formname))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Formname string
+ Fields []Field
+ }))(obj)).Formname))[:])
+ chk(err)
+ }
+ if len(((*(*(struct {
+ Formname string
+ Fields []Field
+ }))(obj)).Fields)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Formname string
+ Fields []Field
+ }))(obj)).Fields)))
+ write16(w, uint16(x))
+ }
+ for local39 := range (*(*(struct {
+ Formname string
+ Fields []Field
+ }))(obj)).Fields {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Formname string
+ Fields []Field
+ }))(obj)).Fields)[local39]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Field", err))
+ }
+ }
+}
+
+func (obj *ToSrvInvFields) deserialize(r io.Reader) {
+ var local40 []uint8
+ var local41 uint16
+ {
+ p := &local41
+ *p = read16(r)
+ }
+ (local40) = make([]uint8, local41)
+ {
+ _, err := io.ReadFull(r, (local40)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Formname string
+ Fields []Field
+ }))(obj)).Formname) = string(local40)
+ var local42 uint16
+ {
+ p := &local42
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Formname string
+ Fields []Field
+ }))(obj)).Fields) = make([]Field, local42)
+ for local43 := range (*(*(struct {
+ Formname string
+ Fields []Field
+ }))(obj)).Fields {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Formname string
+ Fields []Field
+ }))(obj)).Fields)[local43]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Field", err))
+ }
+ }
+}
+
+func (obj *ToSrvReqMedia) serialize(w io.Writer) {
+ if len(((*(*(struct {
+ Filenames []string
+ }))(obj)).Filenames)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Filenames []string
+ }))(obj)).Filenames)))
+ write16(w, uint16(x))
+ }
+ for local44 := range (*(*(struct {
+ Filenames []string
+ }))(obj)).Filenames {
+ if len(([]byte(((*(*(struct {
+ Filenames []string
+ }))(obj)).Filenames)[local44]))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte(((*(*(struct {
+ Filenames []string
+ }))(obj)).Filenames)[local44]))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte(((*(*(struct {
+ Filenames []string
+ }))(obj)).Filenames)[local44]))[:])
+ chk(err)
+ }
+ }
+}
+
+func (obj *ToSrvReqMedia) deserialize(r io.Reader) {
+ var local45 uint16
+ {
+ p := &local45
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Filenames []string
+ }))(obj)).Filenames) = make([]string, local45)
+ for local46 := range (*(*(struct {
+ Filenames []string
+ }))(obj)).Filenames {
+ var local47 []uint8
+ var local48 uint16
+ {
+ p := &local48
+ *p = read16(r)
+ }
+ (local47) = make([]uint8, local48)
+ {
+ _, err := io.ReadFull(r, (local47)[:])
+ chk(err)
+ }
+ (((*(*(struct {
+ Filenames []string
+ }))(obj)).Filenames)[local46]) = string(local47)
+ }
+}
+
+func (obj *ToSrvCltReady) serialize(w io.Writer) {
+ {
+ x := (*(*(struct {
+ // Version information.
+ Major, Minor, Patch uint8
+ Reserved uint8
+ Version string
+ Formspec uint16
+ }))(obj)).Major
+ write8(w, uint8(x))
+ }
+ {
+ x := (*(*(struct {
+ // Version information.
+ Major, Minor, Patch uint8
+ Reserved uint8
+ Version string
+ Formspec uint16
+ }))(obj)).Minor
+ write8(w, uint8(x))
+ }
+ {
+ x := (*(*(struct {
+ // Version information.
+ Major, Minor, Patch uint8
+ Reserved uint8
+ Version string
+ Formspec uint16
+ }))(obj)).Patch
+ write8(w, uint8(x))
+ }
+ {
+ x := (*(*(struct {
+ // Version information.
+ Major, Minor, Patch uint8
+ Reserved uint8
+ Version string
+ Formspec uint16
+ }))(obj)).Reserved
+ write8(w, uint8(x))
+ }
+ if len(([]byte((*(*(struct {
+ // Version information.
+ Major, Minor, Patch uint8
+ Reserved uint8
+ Version string
+ Formspec uint16
+ }))(obj)).Version))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ // Version information.
+ Major, Minor, Patch uint8
+ Reserved uint8
+ Version string
+ Formspec uint16
+ }))(obj)).Version))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ // Version information.
+ Major, Minor, Patch uint8
+ Reserved uint8
+ Version string
+ Formspec uint16
+ }))(obj)).Version))[:])
+ chk(err)
+ }
+ {
+ x := (*(*(struct {
+ // Version information.
+ Major, Minor, Patch uint8
+ Reserved uint8
+ Version string
+ Formspec uint16
+ }))(obj)).Formspec
+ write16(w, uint16(x))
+ }
+}
+
+func (obj *ToSrvCltReady) deserialize(r io.Reader) {
+ {
+ p := &(*(*(struct {
+ // Version information.
+ Major, Minor, Patch uint8
+ Reserved uint8
+ Version string
+ Formspec uint16
+ }))(obj)).Major
+ *p = read8(r)
+ }
+ {
+ p := &(*(*(struct {
+ // Version information.
+ Major, Minor, Patch uint8
+ Reserved uint8
+ Version string
+ Formspec uint16
+ }))(obj)).Minor
+ *p = read8(r)
+ }
+ {
+ p := &(*(*(struct {
+ // Version information.
+ Major, Minor, Patch uint8
+ Reserved uint8
+ Version string
+ Formspec uint16
+ }))(obj)).Patch
+ *p = read8(r)
+ }
+ {
+ p := &(*(*(struct {
+ // Version information.
+ Major, Minor, Patch uint8
+ Reserved uint8
+ Version string
+ Formspec uint16
+ }))(obj)).Reserved
+ *p = read8(r)
+ }
+ var local49 []uint8
+ var local50 uint16
+ {
+ p := &local50
+ *p = read16(r)
+ }
+ (local49) = make([]uint8, local50)
+ {
+ _, err := io.ReadFull(r, (local49)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ // Version information.
+ Major, Minor, Patch uint8
+ Reserved uint8
+ Version string
+ Formspec uint16
+ }))(obj)).Version) = string(local49)
+ {
+ p := &(*(*(struct {
+ // Version information.
+ Major, Minor, Patch uint8
+ Reserved uint8
+ Version string
+ Formspec uint16
+ }))(obj)).Formspec
+ *p = read16(r)
+ }
+}
+
+func (obj *ToSrvFirstSRP) serialize(w io.Writer) {
+ if len(((*(*(struct {
+ Salt []byte
+ Verifier []byte
+ EmptyPasswd bool
+ }))(obj)).Salt)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Salt []byte
+ Verifier []byte
+ EmptyPasswd bool
+ }))(obj)).Salt)))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(((*(*(struct {
+ Salt []byte
+ Verifier []byte
+ EmptyPasswd bool
+ }))(obj)).Salt)[:])
+ chk(err)
+ }
+ if len(((*(*(struct {
+ Salt []byte
+ Verifier []byte
+ EmptyPasswd bool
+ }))(obj)).Verifier)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Salt []byte
+ Verifier []byte
+ EmptyPasswd bool
+ }))(obj)).Verifier)))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(((*(*(struct {
+ Salt []byte
+ Verifier []byte
+ EmptyPasswd bool
+ }))(obj)).Verifier)[:])
+ chk(err)
+ }
+ {
+ x := (*(*(struct {
+ Salt []byte
+ Verifier []byte
+ EmptyPasswd bool
+ }))(obj)).EmptyPasswd
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+}
+
+func (obj *ToSrvFirstSRP) deserialize(r io.Reader) {
+ var local51 uint16
+ {
+ p := &local51
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Salt []byte
+ Verifier []byte
+ EmptyPasswd bool
+ }))(obj)).Salt) = make([]byte, local51)
+ {
+ _, err := io.ReadFull(r, ((*(*(struct {
+ Salt []byte
+ Verifier []byte
+ EmptyPasswd bool
+ }))(obj)).Salt)[:])
+ chk(err)
+ }
+ var local52 uint16
+ {
+ p := &local52
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Salt []byte
+ Verifier []byte
+ EmptyPasswd bool
+ }))(obj)).Verifier) = make([]byte, local52)
+ {
+ _, err := io.ReadFull(r, ((*(*(struct {
+ Salt []byte
+ Verifier []byte
+ EmptyPasswd bool
+ }))(obj)).Verifier)[:])
+ chk(err)
+ }
+ {
+ p := &(*(*(struct {
+ Salt []byte
+ Verifier []byte
+ EmptyPasswd bool
+ }))(obj)).EmptyPasswd
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+}
+
+func (obj *ToSrvSRPBytesA) serialize(w io.Writer) {
+ if len(((*(*(struct {
+ A []byte
+ NoSHA1 bool
+ }))(obj)).A)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ A []byte
+ NoSHA1 bool
+ }))(obj)).A)))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(((*(*(struct {
+ A []byte
+ NoSHA1 bool
+ }))(obj)).A)[:])
+ chk(err)
+ }
+ {
+ x := (*(*(struct {
+ A []byte
+ NoSHA1 bool
+ }))(obj)).NoSHA1
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+}
+
+func (obj *ToSrvSRPBytesA) deserialize(r io.Reader) {
+ var local53 uint16
+ {
+ p := &local53
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ A []byte
+ NoSHA1 bool
+ }))(obj)).A) = make([]byte, local53)
+ {
+ _, err := io.ReadFull(r, ((*(*(struct {
+ A []byte
+ NoSHA1 bool
+ }))(obj)).A)[:])
+ chk(err)
+ }
+ {
+ p := &(*(*(struct {
+ A []byte
+ NoSHA1 bool
+ }))(obj)).NoSHA1
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+}
+
+func (obj *ToSrvSRPBytesM) serialize(w io.Writer) {
+ if len(((*(*(struct {
+ M []byte
+ }))(obj)).M)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ M []byte
+ }))(obj)).M)))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(((*(*(struct {
+ M []byte
+ }))(obj)).M)[:])
+ chk(err)
+ }
+}
+
+func (obj *ToSrvSRPBytesM) deserialize(r io.Reader) {
+ var local54 uint16
+ {
+ p := &local54
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ M []byte
+ }))(obj)).M) = make([]byte, local54)
+ {
+ _, err := io.ReadFull(r, ((*(*(struct {
+ M []byte
+ }))(obj)).M)[:])
+ chk(err)
+ }
+}
+
+func (obj *ToCltHello) serialize(w io.Writer) {
+ {
+ x := (*(*(struct {
+ SerializeVer uint8
+ Compression CompressionModes
+ ProtoVer uint16
+ AuthMethods
+ Username string
+ }))(obj)).SerializeVer
+ write8(w, uint8(x))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ SerializeVer uint8
+ Compression CompressionModes
+ ProtoVer uint16
+ AuthMethods
+ Username string
+ }))(obj)).Compression).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.CompressionModes", err))
+ }
+ {
+ x := (*(*(struct {
+ SerializeVer uint8
+ Compression CompressionModes
+ ProtoVer uint16
+ AuthMethods
+ Username string
+ }))(obj)).ProtoVer
+ write16(w, uint16(x))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ SerializeVer uint8
+ Compression CompressionModes
+ ProtoVer uint16
+ AuthMethods
+ Username string
+ }))(obj)).AuthMethods).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AuthMethods", err))
+ }
+ if len(([]byte((*(*(struct {
+ SerializeVer uint8
+ Compression CompressionModes
+ ProtoVer uint16
+ AuthMethods
+ Username string
+ }))(obj)).Username))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ SerializeVer uint8
+ Compression CompressionModes
+ ProtoVer uint16
+ AuthMethods
+ Username string
+ }))(obj)).Username))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ SerializeVer uint8
+ Compression CompressionModes
+ ProtoVer uint16
+ AuthMethods
+ Username string
+ }))(obj)).Username))[:])
+ chk(err)
+ }
+}
+
+func (obj *ToCltHello) deserialize(r io.Reader) {
+ {
+ p := &(*(*(struct {
+ SerializeVer uint8
+ Compression CompressionModes
+ ProtoVer uint16
+ AuthMethods
+ Username string
+ }))(obj)).SerializeVer
+ *p = read8(r)
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ SerializeVer uint8
+ Compression CompressionModes
+ ProtoVer uint16
+ AuthMethods
+ Username string
+ }))(obj)).Compression).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.CompressionModes", err))
+ }
+ {
+ p := &(*(*(struct {
+ SerializeVer uint8
+ Compression CompressionModes
+ ProtoVer uint16
+ AuthMethods
+ Username string
+ }))(obj)).ProtoVer
+ *p = read16(r)
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ SerializeVer uint8
+ Compression CompressionModes
+ ProtoVer uint16
+ AuthMethods
+ Username string
+ }))(obj)).AuthMethods).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AuthMethods", err))
+ }
+ var local55 []uint8
+ var local56 uint16
+ {
+ p := &local56
+ *p = read16(r)
+ }
+ (local55) = make([]uint8, local56)
+ {
+ _, err := io.ReadFull(r, (local55)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ SerializeVer uint8
+ Compression CompressionModes
+ ProtoVer uint16
+ AuthMethods
+ Username string
+ }))(obj)).Username) = string(local55)
+}
+
+func (obj *ToCltAcceptAuth) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ // The client does the equivalent of
+ // PlayerPos[1] -= 5
+ // before using PlayerPos.
+ PlayerPos Pos
+
+ MapSeed uint64
+ SendInterval float32
+ SudoAuthMethods AuthMethods
+ }))(obj)).PlayerPos).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Pos", err))
+ }
+ {
+ x := (*(*(struct {
+ // The client does the equivalent of
+ // PlayerPos[1] -= 5
+ // before using PlayerPos.
+ PlayerPos Pos
+
+ MapSeed uint64
+ SendInterval float32
+ SudoAuthMethods AuthMethods
+ }))(obj)).MapSeed
+ write64(w, uint64(x))
+ }
+ {
+ x := (*(*(struct {
+ // The client does the equivalent of
+ // PlayerPos[1] -= 5
+ // before using PlayerPos.
+ PlayerPos Pos
+
+ MapSeed uint64
+ SendInterval float32
+ SudoAuthMethods AuthMethods
+ }))(obj)).SendInterval
+ write32(w, math.Float32bits(x))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ // The client does the equivalent of
+ // PlayerPos[1] -= 5
+ // before using PlayerPos.
+ PlayerPos Pos
+
+ MapSeed uint64
+ SendInterval float32
+ SudoAuthMethods AuthMethods
+ }))(obj)).SudoAuthMethods).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AuthMethods", err))
+ }
+}
+
+func (obj *ToCltAcceptAuth) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ // The client does the equivalent of
+ // PlayerPos[1] -= 5
+ // before using PlayerPos.
+ PlayerPos Pos
+
+ MapSeed uint64
+ SendInterval float32
+ SudoAuthMethods AuthMethods
+ }))(obj)).PlayerPos).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Pos", err))
+ }
+ {
+ p := &(*(*(struct {
+ // The client does the equivalent of
+ // PlayerPos[1] -= 5
+ // before using PlayerPos.
+ PlayerPos Pos
+
+ MapSeed uint64
+ SendInterval float32
+ SudoAuthMethods AuthMethods
+ }))(obj)).MapSeed
+ *p = read64(r)
+ }
+ {
+ p := &(*(*(struct {
+ // The client does the equivalent of
+ // PlayerPos[1] -= 5
+ // before using PlayerPos.
+ PlayerPos Pos
+
+ MapSeed uint64
+ SendInterval float32
+ SudoAuthMethods AuthMethods
+ }))(obj)).SendInterval
+ *p = math.Float32frombits(read32(r))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ // The client does the equivalent of
+ // PlayerPos[1] -= 5
+ // before using PlayerPos.
+ PlayerPos Pos
+
+ MapSeed uint64
+ SendInterval float32
+ SudoAuthMethods AuthMethods
+ }))(obj)).SudoAuthMethods).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AuthMethods", err))
+ }
+}
+
+func (obj *ToCltAcceptSudoMode) serialize(w io.Writer) {
+}
+
+func (obj *ToCltAcceptSudoMode) deserialize(r io.Reader) {
+}
+
+func (obj *ToCltDenySudoMode) serialize(w io.Writer) {
+}
+
+func (obj *ToCltDenySudoMode) deserialize(r io.Reader) {
+}
+
+func (obj *ToCltDisco) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Reason DiscoReason
+
+ //mt:if dr := %s.Reason; dr == Custom || dr == Shutdown || dr == Crash
+ Custom string
+
+ //mt:if dr := %s.Reason; dr == Shutdown || dr == Crash
+ Reconnect bool
+ }))(obj)).Reason).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.DiscoReason", err))
+ }
+ if !((*(*(struct {
+ Reason DiscoReason
+
+ //mt:if dr := %s.Reason; dr == Custom || dr == Shutdown || dr == Crash
+ Custom string
+
+ //mt:if dr := %s.Reason; dr == Shutdown || dr == Crash
+ Reconnect bool
+ }))(obj)).Reason < maxDiscoReason) {
+ chk(errors.New("assertion failed: %s.Reason < maxDiscoReason"))
+ }
+ if dr := (*(*(struct {
+ Reason DiscoReason
+
+ //mt:if dr := %s.Reason; dr == Custom || dr == Shutdown || dr == Crash
+ Custom string
+
+ //mt:if dr := %s.Reason; dr == Shutdown || dr == Crash
+ Reconnect bool
+ }))(obj)).Reason; dr == Custom || dr == Shutdown || dr == Crash {
+ if len(([]byte((*(*(struct {
+ Reason DiscoReason
+
+ //mt:if dr := %s.Reason; dr == Custom || dr == Shutdown || dr == Crash
+ Custom string
+
+ //mt:if dr := %s.Reason; dr == Shutdown || dr == Crash
+ Reconnect bool
+ }))(obj)).Custom))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Reason DiscoReason
+
+ //mt:if dr := %s.Reason; dr == Custom || dr == Shutdown || dr == Crash
+ Custom string
+
+ //mt:if dr := %s.Reason; dr == Shutdown || dr == Crash
+ Reconnect bool
+ }))(obj)).Custom))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Reason DiscoReason
+
+ //mt:if dr := %s.Reason; dr == Custom || dr == Shutdown || dr == Crash
+ Custom string
+
+ //mt:if dr := %s.Reason; dr == Shutdown || dr == Crash
+ Reconnect bool
+ }))(obj)).Custom))[:])
+ chk(err)
+ }
+ }
+ if dr := (*(*(struct {
+ Reason DiscoReason
+
+ //mt:if dr := %s.Reason; dr == Custom || dr == Shutdown || dr == Crash
+ Custom string
+
+ //mt:if dr := %s.Reason; dr == Shutdown || dr == Crash
+ Reconnect bool
+ }))(obj)).Reason; dr == Shutdown || dr == Crash {
+ {
+ x := (*(*(struct {
+ Reason DiscoReason
+
+ //mt:if dr := %s.Reason; dr == Custom || dr == Shutdown || dr == Crash
+ Custom string
+
+ //mt:if dr := %s.Reason; dr == Shutdown || dr == Crash
+ Reconnect bool
+ }))(obj)).Reconnect
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ }
+}
+
+func (obj *ToCltDisco) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Reason DiscoReason
+
+ //mt:if dr := %s.Reason; dr == Custom || dr == Shutdown || dr == Crash
+ Custom string
+
+ //mt:if dr := %s.Reason; dr == Shutdown || dr == Crash
+ Reconnect bool
+ }))(obj)).Reason).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.DiscoReason", err))
+ }
+ if !((*(*(struct {
+ Reason DiscoReason
+
+ //mt:if dr := %s.Reason; dr == Custom || dr == Shutdown || dr == Crash
+ Custom string
+
+ //mt:if dr := %s.Reason; dr == Shutdown || dr == Crash
+ Reconnect bool
+ }))(obj)).Reason < maxDiscoReason) {
+ chk(errors.New("assertion failed: %s.Reason < maxDiscoReason"))
+ }
+ if dr := (*(*(struct {
+ Reason DiscoReason
+
+ //mt:if dr := %s.Reason; dr == Custom || dr == Shutdown || dr == Crash
+ Custom string
+
+ //mt:if dr := %s.Reason; dr == Shutdown || dr == Crash
+ Reconnect bool
+ }))(obj)).Reason; dr == Custom || dr == Shutdown || dr == Crash {
+ var local57 []uint8
+ var local58 uint16
+ {
+ p := &local58
+ *p = read16(r)
+ }
+ (local57) = make([]uint8, local58)
+ {
+ _, err := io.ReadFull(r, (local57)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Reason DiscoReason
+
+ //mt:if dr := %s.Reason; dr == Custom || dr == Shutdown || dr == Crash
+ Custom string
+
+ //mt:if dr := %s.Reason; dr == Shutdown || dr == Crash
+ Reconnect bool
+ }))(obj)).Custom) = string(local57)
+ }
+ if dr := (*(*(struct {
+ Reason DiscoReason
+
+ //mt:if dr := %s.Reason; dr == Custom || dr == Shutdown || dr == Crash
+ Custom string
+
+ //mt:if dr := %s.Reason; dr == Shutdown || dr == Crash
+ Reconnect bool
+ }))(obj)).Reason; dr == Shutdown || dr == Crash {
+ {
+ p := &(*(*(struct {
+ Reason DiscoReason
+
+ //mt:if dr := %s.Reason; dr == Custom || dr == Shutdown || dr == Crash
+ Custom string
+
+ //mt:if dr := %s.Reason; dr == Shutdown || dr == Crash
+ Reconnect bool
+ }))(obj)).Reconnect
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ }
+}
+
+func (obj *ToCltBlkData) serialize(w io.Writer) {
+ for local59 := range (*(*(struct {
+ Blkpos [3]int16
+ Blk MapBlk
+ }))(obj)).Blkpos {
+ {
+ x := ((*(*(struct {
+ Blkpos [3]int16
+ Blk MapBlk
+ }))(obj)).Blkpos)[local59]
+ write16(w, uint16(x))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Blkpos [3]int16
+ Blk MapBlk
+ }))(obj)).Blk).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.MapBlk", err))
+ }
+}
+
+func (obj *ToCltBlkData) deserialize(r io.Reader) {
+ for local60 := range (*(*(struct {
+ Blkpos [3]int16
+ Blk MapBlk
+ }))(obj)).Blkpos {
+ {
+ p := &((*(*(struct {
+ Blkpos [3]int16
+ Blk MapBlk
+ }))(obj)).Blkpos)[local60]
+ *p = int16(read16(r))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Blkpos [3]int16
+ Blk MapBlk
+ }))(obj)).Blk).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.MapBlk", err))
+ }
+}
+
+func (obj *ToCltAddNode) serialize(w io.Writer) {
+ for local61 := range (*(*(struct {
+ Pos [3]int16
+ Node
+ KeepMeta bool
+ }))(obj)).Pos {
+ {
+ x := ((*(*(struct {
+ Pos [3]int16
+ Node
+ KeepMeta bool
+ }))(obj)).Pos)[local61]
+ write16(w, uint16(x))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Pos [3]int16
+ Node
+ KeepMeta bool
+ }))(obj)).Node).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Node", err))
+ }
+ {
+ x := (*(*(struct {
+ Pos [3]int16
+ Node
+ KeepMeta bool
+ }))(obj)).KeepMeta
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+}
+
+func (obj *ToCltAddNode) deserialize(r io.Reader) {
+ for local62 := range (*(*(struct {
+ Pos [3]int16
+ Node
+ KeepMeta bool
+ }))(obj)).Pos {
+ {
+ p := &((*(*(struct {
+ Pos [3]int16
+ Node
+ KeepMeta bool
+ }))(obj)).Pos)[local62]
+ *p = int16(read16(r))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Pos [3]int16
+ Node
+ KeepMeta bool
+ }))(obj)).Node).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Node", err))
+ }
+ {
+ p := &(*(*(struct {
+ Pos [3]int16
+ Node
+ KeepMeta bool
+ }))(obj)).KeepMeta
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+}
+
+func (obj *ToCltRemoveNode) serialize(w io.Writer) {
+ for local63 := range (*(*(struct {
+ Pos [3]int16
+ }))(obj)).Pos {
+ {
+ x := ((*(*(struct {
+ Pos [3]int16
+ }))(obj)).Pos)[local63]
+ write16(w, uint16(x))
+ }
+ }
+}
+
+func (obj *ToCltRemoveNode) deserialize(r io.Reader) {
+ for local64 := range (*(*(struct {
+ Pos [3]int16
+ }))(obj)).Pos {
+ {
+ p := &((*(*(struct {
+ Pos [3]int16
+ }))(obj)).Pos)[local64]
+ *p = int16(read16(r))
+ }
+ }
+}
+
+func (obj *ToCltInv) serialize(w io.Writer) {
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ //mt:raw
+ Inv string
+ }))(obj)).Inv))[:])
+ chk(err)
+ }
+}
+
+func (obj *ToCltInv) deserialize(r io.Reader) {
+ var local65 []uint8
+ for {
+ var local66 uint8
+ err := pcall(func() {
+ {
+ p := &local66
+ *p = read8(r)
+ }
+ })
+ if err == io.EOF {
+ break
+ }
+ (local65) = append((local65), local66)
+ chk(err)
+ }
+ ((*(*(struct {
+ //mt:raw
+ Inv string
+ }))(obj)).Inv) = string(local65)
+}
+
+func (obj *ToCltTimeOfDay) serialize(w io.Writer) {
+ {
+ x := (*(*(struct {
+ Time uint16 // %24000
+ Speed float32 // Speed times faster than real time
+ }))(obj)).Time
+ write16(w, uint16(x))
+ }
+ {
+ x := (*(*(struct {
+ Time uint16 // %24000
+ Speed float32 // Speed times faster than real time
+ }))(obj)).Speed
+ write32(w, math.Float32bits(x))
+ }
+}
+
+func (obj *ToCltTimeOfDay) deserialize(r io.Reader) {
+ {
+ p := &(*(*(struct {
+ Time uint16 // %24000
+ Speed float32 // Speed times faster than real time
+ }))(obj)).Time
+ *p = read16(r)
+ }
+ {
+ p := &(*(*(struct {
+ Time uint16 // %24000
+ Speed float32 // Speed times faster than real time
+ }))(obj)).Speed
+ *p = math.Float32frombits(read32(r))
+ }
+}
+
+func (obj *ToCltCSMRestrictionFlags) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Flags CSMRestrictionFlags
+
+ // MapRange is the maximum distance from the player CSMs can read the map
+ // if Flags&LimitMapRange != 0.
+ MapRange uint32
+ }))(obj)).Flags).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.CSMRestrictionFlags", err))
+ }
+ {
+ x := (*(*(struct {
+ Flags CSMRestrictionFlags
+
+ // MapRange is the maximum distance from the player CSMs can read the map
+ // if Flags&LimitMapRange != 0.
+ MapRange uint32
+ }))(obj)).MapRange
+ write32(w, uint32(x))
+ }
+}
+
+func (obj *ToCltCSMRestrictionFlags) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Flags CSMRestrictionFlags
+
+ // MapRange is the maximum distance from the player CSMs can read the map
+ // if Flags&LimitMapRange != 0.
+ MapRange uint32
+ }))(obj)).Flags).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.CSMRestrictionFlags", err))
+ }
+ {
+ p := &(*(*(struct {
+ Flags CSMRestrictionFlags
+
+ // MapRange is the maximum distance from the player CSMs can read the map
+ // if Flags&LimitMapRange != 0.
+ MapRange uint32
+ }))(obj)).MapRange
+ *p = read32(r)
+ }
+}
+
+func (obj *ToCltAddPlayerVel) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Vel Vec
+ }))(obj)).Vel).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Vec", err))
+ }
+}
+
+func (obj *ToCltAddPlayerVel) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Vel Vec
+ }))(obj)).Vel).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Vec", err))
+ }
+}
+
+func (obj *ToCltMediaPush) serialize(w io.Writer) {
+ {
+ local67 := uint16(sha1.Size)
+ {
+ x := local67
+ write16(w, uint16(x))
+ }
+ }
+ {
+ _, err := w.Write(((*(*(struct {
+ //mt:const uint16(sha1.Size)
+ SHA1 [sha1.Size]byte
+ Filename string
+ ShouldCache bool
+
+ //mt:len32
+ Data []byte
+ }))(obj)).SHA1)[:])
+ chk(err)
+ }
+ if len(([]byte((*(*(struct {
+ //mt:const uint16(sha1.Size)
+ SHA1 [sha1.Size]byte
+ Filename string
+ ShouldCache bool
+
+ //mt:len32
+ Data []byte
+ }))(obj)).Filename))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ //mt:const uint16(sha1.Size)
+ SHA1 [sha1.Size]byte
+ Filename string
+ ShouldCache bool
+
+ //mt:len32
+ Data []byte
+ }))(obj)).Filename))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ //mt:const uint16(sha1.Size)
+ SHA1 [sha1.Size]byte
+ Filename string
+ ShouldCache bool
+
+ //mt:len32
+ Data []byte
+ }))(obj)).Filename))[:])
+ chk(err)
+ }
+ {
+ x := (*(*(struct {
+ //mt:const uint16(sha1.Size)
+ SHA1 [sha1.Size]byte
+ Filename string
+ ShouldCache bool
+
+ //mt:len32
+ Data []byte
+ }))(obj)).ShouldCache
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ if len(((*(*(struct {
+ //mt:const uint16(sha1.Size)
+ SHA1 [sha1.Size]byte
+ Filename string
+ ShouldCache bool
+
+ //mt:len32
+ Data []byte
+ }))(obj)).Data)) > math.MaxUint32 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint32(len(((*(*(struct {
+ //mt:const uint16(sha1.Size)
+ SHA1 [sha1.Size]byte
+ Filename string
+ ShouldCache bool
+
+ //mt:len32
+ Data []byte
+ }))(obj)).Data)))
+ write32(w, uint32(x))
+ }
+ {
+ _, err := w.Write(((*(*(struct {
+ //mt:const uint16(sha1.Size)
+ SHA1 [sha1.Size]byte
+ Filename string
+ ShouldCache bool
+
+ //mt:len32
+ Data []byte
+ }))(obj)).Data)[:])
+ chk(err)
+ }
+}
+
+func (obj *ToCltMediaPush) deserialize(r io.Reader) {
+ {
+ var local68 uint16
+ {
+ p := &local68
+ *p = read16(r)
+ }
+ if local68 != (20) {
+ chk(fmt.Errorf("const %v: %v", 20, local68))
+ }
+ }
+ {
+ _, err := io.ReadFull(r, ((*(*(struct {
+ //mt:const uint16(sha1.Size)
+ SHA1 [sha1.Size]byte
+ Filename string
+ ShouldCache bool
+
+ //mt:len32
+ Data []byte
+ }))(obj)).SHA1)[:])
+ chk(err)
+ }
+ var local69 []uint8
+ var local70 uint16
+ {
+ p := &local70
+ *p = read16(r)
+ }
+ (local69) = make([]uint8, local70)
+ {
+ _, err := io.ReadFull(r, (local69)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ //mt:const uint16(sha1.Size)
+ SHA1 [sha1.Size]byte
+ Filename string
+ ShouldCache bool
+
+ //mt:len32
+ Data []byte
+ }))(obj)).Filename) = string(local69)
+ {
+ p := &(*(*(struct {
+ //mt:const uint16(sha1.Size)
+ SHA1 [sha1.Size]byte
+ Filename string
+ ShouldCache bool
+
+ //mt:len32
+ Data []byte
+ }))(obj)).ShouldCache
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ var local71 uint32
+ {
+ p := &local71
+ *p = read32(r)
+ }
+ ((*(*(struct {
+ //mt:const uint16(sha1.Size)
+ SHA1 [sha1.Size]byte
+ Filename string
+ ShouldCache bool
+
+ //mt:len32
+ Data []byte
+ }))(obj)).Data) = make([]byte, local71)
+ {
+ _, err := io.ReadFull(r, ((*(*(struct {
+ //mt:const uint16(sha1.Size)
+ SHA1 [sha1.Size]byte
+ Filename string
+ ShouldCache bool
+
+ //mt:len32
+ Data []byte
+ }))(obj)).Data)[:])
+ chk(err)
+ }
+}
+
+func (obj *ToCltChatMsg) serialize(w io.Writer) {
+ {
+ local72 := uint8(1)
+ {
+ x := local72
+ write8(w, uint8(x))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type ChatMsgType
+
+ //mt:utf16
+ Sender, Text string
+
+ Timestamp int64 // Unix time.
+ }))(obj)).Type).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.ChatMsgType", err))
+ }
+ if len((utf16.Encode([]rune((*(*(struct {
+ Type ChatMsgType
+
+ //mt:utf16
+ Sender, Text string
+
+ Timestamp int64 // Unix time.
+ }))(obj)).Sender)))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len((utf16.Encode([]rune((*(*(struct {
+ Type ChatMsgType
+
+ //mt:utf16
+ Sender, Text string
+
+ Timestamp int64 // Unix time.
+ }))(obj)).Sender)))))
+ write16(w, uint16(x))
+ }
+ for local73 := range utf16.Encode([]rune((*(*(struct {
+ Type ChatMsgType
+
+ //mt:utf16
+ Sender, Text string
+
+ Timestamp int64 // Unix time.
+ }))(obj)).Sender)) {
+ {
+ x := (utf16.Encode([]rune((*(*(struct {
+ Type ChatMsgType
+
+ //mt:utf16
+ Sender, Text string
+
+ Timestamp int64 // Unix time.
+ }))(obj)).Sender)))[local73]
+ write16(w, uint16(x))
+ }
+ }
+ if len((utf16.Encode([]rune((*(*(struct {
+ Type ChatMsgType
+
+ //mt:utf16
+ Sender, Text string
+
+ Timestamp int64 // Unix time.
+ }))(obj)).Text)))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len((utf16.Encode([]rune((*(*(struct {
+ Type ChatMsgType
+
+ //mt:utf16
+ Sender, Text string
+
+ Timestamp int64 // Unix time.
+ }))(obj)).Text)))))
+ write16(w, uint16(x))
+ }
+ for local74 := range utf16.Encode([]rune((*(*(struct {
+ Type ChatMsgType
+
+ //mt:utf16
+ Sender, Text string
+
+ Timestamp int64 // Unix time.
+ }))(obj)).Text)) {
+ {
+ x := (utf16.Encode([]rune((*(*(struct {
+ Type ChatMsgType
+
+ //mt:utf16
+ Sender, Text string
+
+ Timestamp int64 // Unix time.
+ }))(obj)).Text)))[local74]
+ write16(w, uint16(x))
+ }
+ }
+ {
+ x := (*(*(struct {
+ Type ChatMsgType
+
+ //mt:utf16
+ Sender, Text string
+
+ Timestamp int64 // Unix time.
+ }))(obj)).Timestamp
+ write64(w, uint64(x))
+ }
+}
+
+func (obj *ToCltChatMsg) deserialize(r io.Reader) {
+ {
+ var local75 uint8
+ {
+ p := &local75
+ *p = read8(r)
+ }
+ if local75 != (1) {
+ chk(fmt.Errorf("const %v: %v", 1, local75))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type ChatMsgType
+
+ //mt:utf16
+ Sender, Text string
+
+ Timestamp int64 // Unix time.
+ }))(obj)).Type).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.ChatMsgType", err))
+ }
+ var local76 []uint16
+ var local77 uint16
+ {
+ p := &local77
+ *p = read16(r)
+ }
+ (local76) = make([]uint16, local77)
+ for local78 := range local76 {
+ {
+ p := &(local76)[local78]
+ *p = read16(r)
+ }
+ }
+ (*(*(struct {
+ Type ChatMsgType
+
+ //mt:utf16
+ Sender, Text string
+
+ Timestamp int64 // Unix time.
+ }))(obj)).Sender = string(utf16.Decode(local76))
+ var local79 []uint16
+ var local80 uint16
+ {
+ p := &local80
+ *p = read16(r)
+ }
+ (local79) = make([]uint16, local80)
+ for local81 := range local79 {
+ {
+ p := &(local79)[local81]
+ *p = read16(r)
+ }
+ }
+ (*(*(struct {
+ Type ChatMsgType
+
+ //mt:utf16
+ Sender, Text string
+
+ Timestamp int64 // Unix time.
+ }))(obj)).Text = string(utf16.Decode(local79))
+ {
+ p := &(*(*(struct {
+ Type ChatMsgType
+
+ //mt:utf16
+ Sender, Text string
+
+ Timestamp int64 // Unix time.
+ }))(obj)).Timestamp
+ *p = int64(read64(r))
+ }
+}
+
+func (obj *ToCltAORmAdd) serialize(w io.Writer) {
+ if len(((*(*(struct {
+ Remove []AOID
+ Add []struct {
+ ID AOID
+ //mt:const genericCAO
+ //mt:lenhdr 32
+ InitData AOInitData
+ }
+ }))(obj)).Remove)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Remove []AOID
+ Add []struct {
+ ID AOID
+ //mt:const genericCAO
+ //mt:lenhdr 32
+ InitData AOInitData
+ }
+ }))(obj)).Remove)))
+ write16(w, uint16(x))
+ }
+ for local82 := range (*(*(struct {
+ Remove []AOID
+ Add []struct {
+ ID AOID
+ //mt:const genericCAO
+ //mt:lenhdr 32
+ InitData AOInitData
+ }
+ }))(obj)).Remove {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Remove []AOID
+ Add []struct {
+ ID AOID
+ //mt:const genericCAO
+ //mt:lenhdr 32
+ InitData AOInitData
+ }
+ }))(obj)).Remove)[local82]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOID", err))
+ }
+ }
+ if len(((*(*(struct {
+ Remove []AOID
+ Add []struct {
+ ID AOID
+ //mt:const genericCAO
+ //mt:lenhdr 32
+ InitData AOInitData
+ }
+ }))(obj)).Add)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Remove []AOID
+ Add []struct {
+ ID AOID
+ //mt:const genericCAO
+ //mt:lenhdr 32
+ InitData AOInitData
+ }
+ }))(obj)).Add)))
+ write16(w, uint16(x))
+ }
+ for local83 := range (*(*(struct {
+ Remove []AOID
+ Add []struct {
+ ID AOID
+ //mt:const genericCAO
+ //mt:lenhdr 32
+ InitData AOInitData
+ }
+ }))(obj)).Add {
+ if err := pcall(func() {
+ ((((*(*(struct {
+ Remove []AOID
+ Add []struct {
+ ID AOID
+ //mt:const genericCAO
+ //mt:lenhdr 32
+ InitData AOInitData
+ }
+ }))(obj)).Add)[local83]).ID).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOID", err))
+ }
+ {
+ local84 := genericCAO
+ if err := pcall(func() {
+ (local84).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.aoType", err))
+ }
+ }
+ {
+ ow := w
+ w := new(bytes.Buffer)
+ if err := pcall(func() {
+ ((((*(*(struct {
+ Remove []AOID
+ Add []struct {
+ ID AOID
+ //mt:const genericCAO
+ //mt:lenhdr 32
+ InitData AOInitData
+ }
+ }))(obj)).Add)[local83]).InitData).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOInitData", err))
+ }
+ {
+ buf := w
+ w := ow
+ if len((buf.Bytes())) > math.MaxUint32 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint32(len((buf.Bytes())))
+ write32(w, uint32(x))
+ }
+ {
+ _, err := w.Write((buf.Bytes())[:])
+ chk(err)
+ }
+ }
+ }
+ }
+}
+
+func (obj *ToCltAORmAdd) deserialize(r io.Reader) {
+ var local85 uint16
+ {
+ p := &local85
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Remove []AOID
+ Add []struct {
+ ID AOID
+ //mt:const genericCAO
+ //mt:lenhdr 32
+ InitData AOInitData
+ }
+ }))(obj)).Remove) = make([]AOID, local85)
+ for local86 := range (*(*(struct {
+ Remove []AOID
+ Add []struct {
+ ID AOID
+ //mt:const genericCAO
+ //mt:lenhdr 32
+ InitData AOInitData
+ }
+ }))(obj)).Remove {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Remove []AOID
+ Add []struct {
+ ID AOID
+ //mt:const genericCAO
+ //mt:lenhdr 32
+ InitData AOInitData
+ }
+ }))(obj)).Remove)[local86]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOID", err))
+ }
+ }
+ var local87 uint16
+ {
+ p := &local87
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Remove []AOID
+ Add []struct {
+ ID AOID
+ //mt:const genericCAO
+ //mt:lenhdr 32
+ InitData AOInitData
+ }
+ }))(obj)).Add) = make([]struct {
+ ID AOID
+ InitData AOInitData
+ }, local87)
+ for local88 := range (*(*(struct {
+ Remove []AOID
+ Add []struct {
+ ID AOID
+ //mt:const genericCAO
+ //mt:lenhdr 32
+ InitData AOInitData
+ }
+ }))(obj)).Add {
+ if err := pcall(func() {
+ ((((*(*(struct {
+ Remove []AOID
+ Add []struct {
+ ID AOID
+ //mt:const genericCAO
+ //mt:lenhdr 32
+ InitData AOInitData
+ }
+ }))(obj)).Add)[local88]).ID).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOID", err))
+ }
+ {
+ var local89 aoType
+ if err := pcall(func() {
+ (local89).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.aoType", err))
+ }
+ if local89 != (101) {
+ chk(fmt.Errorf("const %v: %v", 101, local89))
+ }
+ }
+ {
+ var n uint32
+ {
+ p := &n
+ *p = read32(r)
+ }
+ r := &io.LimitedReader{r, int64(n)}
+ if err := pcall(func() {
+ ((((*(*(struct {
+ Remove []AOID
+ Add []struct {
+ ID AOID
+ //mt:const genericCAO
+ //mt:lenhdr 32
+ InitData AOInitData
+ }
+ }))(obj)).Add)[local88]).InitData).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOInitData", err))
+ }
+ if r.N > 0 {
+ chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ }
+ }
+ }
+}
+
+func (obj *ToCltAOMsgs) serialize(w io.Writer) {
+ for local90 := range (*(*(struct {
+ //mt:raw
+ Msgs []IDAOMsg
+ }))(obj)).Msgs {
+ if err := pcall(func() {
+ (((*(*(struct {
+ //mt:raw
+ Msgs []IDAOMsg
+ }))(obj)).Msgs)[local90]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.IDAOMsg", err))
+ }
+ }
+}
+
+func (obj *ToCltAOMsgs) deserialize(r io.Reader) {
+ for {
+ var local91 IDAOMsg
+ err := pcall(func() {
+ if err := pcall(func() {
+ (local91).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.IDAOMsg", err))
+ }
+ })
+ if err == io.EOF {
+ break
+ }
+ ((*(*(struct {
+ //mt:raw
+ Msgs []IDAOMsg
+ }))(obj)).Msgs) = append(((*(*(struct {
+ //mt:raw
+ Msgs []IDAOMsg
+ }))(obj)).Msgs), local91)
+ chk(err)
+ }
+}
+
+func (obj *ToCltHP) serialize(w io.Writer) {
+ {
+ x := (*(*(struct {
+ HP uint16
+ }))(obj)).HP
+ write16(w, uint16(x))
+ }
+}
+
+func (obj *ToCltHP) deserialize(r io.Reader) {
+ {
+ p := &(*(*(struct {
+ HP uint16
+ }))(obj)).HP
+ *p = read16(r)
+ }
+}
+
+func (obj *ToCltMovePlayer) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Pos
+ Pitch, Yaw float32
+ }))(obj)).Pos).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Pos", err))
+ }
+ {
+ x := (*(*(struct {
+ Pos
+ Pitch, Yaw float32
+ }))(obj)).Pitch
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ Pos
+ Pitch, Yaw float32
+ }))(obj)).Yaw
+ write32(w, math.Float32bits(x))
+ }
+}
+
+func (obj *ToCltMovePlayer) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Pos
+ Pitch, Yaw float32
+ }))(obj)).Pos).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Pos", err))
+ }
+ {
+ p := &(*(*(struct {
+ Pos
+ Pitch, Yaw float32
+ }))(obj)).Pitch
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ Pos
+ Pitch, Yaw float32
+ }))(obj)).Yaw
+ *p = math.Float32frombits(read32(r))
+ }
+}
+
+func (obj *ToCltDiscoLegacy) serialize(w io.Writer) {
+ if len((utf16.Encode([]rune((*(*(struct {
+ //mt:utf16
+ Reason string
+ }))(obj)).Reason)))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len((utf16.Encode([]rune((*(*(struct {
+ //mt:utf16
+ Reason string
+ }))(obj)).Reason)))))
+ write16(w, uint16(x))
+ }
+ for local92 := range utf16.Encode([]rune((*(*(struct {
+ //mt:utf16
+ Reason string
+ }))(obj)).Reason)) {
+ {
+ x := (utf16.Encode([]rune((*(*(struct {
+ //mt:utf16
+ Reason string
+ }))(obj)).Reason)))[local92]
+ write16(w, uint16(x))
+ }
+ }
+}
+
+func (obj *ToCltDiscoLegacy) deserialize(r io.Reader) {
+ var local93 []uint16
+ var local94 uint16
+ {
+ p := &local94
+ *p = read16(r)
+ }
+ (local93) = make([]uint16, local94)
+ for local95 := range local93 {
+ {
+ p := &(local93)[local95]
+ *p = read16(r)
+ }
+ }
+ (*(*(struct {
+ //mt:utf16
+ Reason string
+ }))(obj)).Reason = string(utf16.Decode(local93))
+}
+
+func (obj *ToCltFOV) serialize(w io.Writer) {
+ {
+ x := (*(*(struct {
+ FOV float32
+ Multiplier bool
+ TransitionTime float32
+ }))(obj)).FOV
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ FOV float32
+ Multiplier bool
+ TransitionTime float32
+ }))(obj)).Multiplier
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ FOV float32
+ Multiplier bool
+ TransitionTime float32
+ }))(obj)).TransitionTime
+ write32(w, math.Float32bits(x))
+ }
+}
+
+func (obj *ToCltFOV) deserialize(r io.Reader) {
+ {
+ p := &(*(*(struct {
+ FOV float32
+ Multiplier bool
+ TransitionTime float32
+ }))(obj)).FOV
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ FOV float32
+ Multiplier bool
+ TransitionTime float32
+ }))(obj)).Multiplier
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ FOV float32
+ Multiplier bool
+ TransitionTime float32
+ }))(obj)).TransitionTime
+ *p = math.Float32frombits(read32(r))
+ }
+}
+
+func (obj *ToCltDeathScreen) serialize(w io.Writer) {
+ {
+ x := (*(*(struct {
+ PointCam bool
+ PointAt Pos
+ }))(obj)).PointCam
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ PointCam bool
+ PointAt Pos
+ }))(obj)).PointAt).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Pos", err))
+ }
+}
+
+func (obj *ToCltDeathScreen) deserialize(r io.Reader) {
+ {
+ p := &(*(*(struct {
+ PointCam bool
+ PointAt Pos
+ }))(obj)).PointCam
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ PointCam bool
+ PointAt Pos
+ }))(obj)).PointAt).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Pos", err))
+ }
+}
+
+func (obj *ToCltMedia) serialize(w io.Writer) {
+ {
+ x := (*(*(struct {
+ // N is the total number of ToCltMedia packets.
+ // I is the index of this packet.
+ N, I uint16
+
+ //mt:len32
+ Files []struct {
+ Name string
+
+ //mt:len32
+ Data []byte
+ }
+ }))(obj)).N
+ write16(w, uint16(x))
+ }
+ {
+ x := (*(*(struct {
+ // N is the total number of ToCltMedia packets.
+ // I is the index of this packet.
+ N, I uint16
+
+ //mt:len32
+ Files []struct {
+ Name string
+
+ //mt:len32
+ Data []byte
+ }
+ }))(obj)).I
+ write16(w, uint16(x))
+ }
+ if len(((*(*(struct {
+ // N is the total number of ToCltMedia packets.
+ // I is the index of this packet.
+ N, I uint16
+
+ //mt:len32
+ Files []struct {
+ Name string
+
+ //mt:len32
+ Data []byte
+ }
+ }))(obj)).Files)) > math.MaxUint32 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint32(len(((*(*(struct {
+ // N is the total number of ToCltMedia packets.
+ // I is the index of this packet.
+ N, I uint16
+
+ //mt:len32
+ Files []struct {
+ Name string
+
+ //mt:len32
+ Data []byte
+ }
+ }))(obj)).Files)))
+ write32(w, uint32(x))
+ }
+ for local96 := range (*(*(struct {
+ // N is the total number of ToCltMedia packets.
+ // I is the index of this packet.
+ N, I uint16
+
+ //mt:len32
+ Files []struct {
+ Name string
+
+ //mt:len32
+ Data []byte
+ }
+ }))(obj)).Files {
+ if len(([]byte((((*(*(struct {
+ // N is the total number of ToCltMedia packets.
+ // I is the index of this packet.
+ N, I uint16
+
+ //mt:len32
+ Files []struct {
+ Name string
+
+ //mt:len32
+ Data []byte
+ }
+ }))(obj)).Files)[local96]).Name))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((((*(*(struct {
+ // N is the total number of ToCltMedia packets.
+ // I is the index of this packet.
+ N, I uint16
+
+ //mt:len32
+ Files []struct {
+ Name string
+
+ //mt:len32
+ Data []byte
+ }
+ }))(obj)).Files)[local96]).Name))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((((*(*(struct {
+ // N is the total number of ToCltMedia packets.
+ // I is the index of this packet.
+ N, I uint16
+
+ //mt:len32
+ Files []struct {
+ Name string
+
+ //mt:len32
+ Data []byte
+ }
+ }))(obj)).Files)[local96]).Name))[:])
+ chk(err)
+ }
+ if len(((((*(*(struct {
+ // N is the total number of ToCltMedia packets.
+ // I is the index of this packet.
+ N, I uint16
+
+ //mt:len32
+ Files []struct {
+ Name string
+
+ //mt:len32
+ Data []byte
+ }
+ }))(obj)).Files)[local96]).Data)) > math.MaxUint32 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint32(len(((((*(*(struct {
+ // N is the total number of ToCltMedia packets.
+ // I is the index of this packet.
+ N, I uint16
+
+ //mt:len32
+ Files []struct {
+ Name string
+
+ //mt:len32
+ Data []byte
+ }
+ }))(obj)).Files)[local96]).Data)))
+ write32(w, uint32(x))
+ }
+ {
+ _, err := w.Write(((((*(*(struct {
+ // N is the total number of ToCltMedia packets.
+ // I is the index of this packet.
+ N, I uint16
+
+ //mt:len32
+ Files []struct {
+ Name string
+
+ //mt:len32
+ Data []byte
+ }
+ }))(obj)).Files)[local96]).Data)[:])
+ chk(err)
+ }
+ }
+}
+
+func (obj *ToCltMedia) deserialize(r io.Reader) {
+ {
+ p := &(*(*(struct {
+ // N is the total number of ToCltMedia packets.
+ // I is the index of this packet.
+ N, I uint16
+
+ //mt:len32
+ Files []struct {
+ Name string
+
+ //mt:len32
+ Data []byte
+ }
+ }))(obj)).N
+ *p = read16(r)
+ }
+ {
+ p := &(*(*(struct {
+ // N is the total number of ToCltMedia packets.
+ // I is the index of this packet.
+ N, I uint16
+
+ //mt:len32
+ Files []struct {
+ Name string
+
+ //mt:len32
+ Data []byte
+ }
+ }))(obj)).I
+ *p = read16(r)
+ }
+ var local97 uint32
+ {
+ p := &local97
+ *p = read32(r)
+ }
+ ((*(*(struct {
+ // N is the total number of ToCltMedia packets.
+ // I is the index of this packet.
+ N, I uint16
+
+ //mt:len32
+ Files []struct {
+ Name string
+
+ //mt:len32
+ Data []byte
+ }
+ }))(obj)).Files) = make([]struct {
+ Name string
+ Data []byte
+ }, local97)
+ for local98 := range (*(*(struct {
+ // N is the total number of ToCltMedia packets.
+ // I is the index of this packet.
+ N, I uint16
+
+ //mt:len32
+ Files []struct {
+ Name string
+
+ //mt:len32
+ Data []byte
+ }
+ }))(obj)).Files {
+ var local99 []uint8
+ var local100 uint16
+ {
+ p := &local100
+ *p = read16(r)
+ }
+ (local99) = make([]uint8, local100)
+ {
+ _, err := io.ReadFull(r, (local99)[:])
+ chk(err)
+ }
+ ((((*(*(struct {
+ // N is the total number of ToCltMedia packets.
+ // I is the index of this packet.
+ N, I uint16
+
+ //mt:len32
+ Files []struct {
+ Name string
+
+ //mt:len32
+ Data []byte
+ }
+ }))(obj)).Files)[local98]).Name) = string(local99)
+ var local101 uint32
+ {
+ p := &local101
+ *p = read32(r)
+ }
+ ((((*(*(struct {
+ // N is the total number of ToCltMedia packets.
+ // I is the index of this packet.
+ N, I uint16
+
+ //mt:len32
+ Files []struct {
+ Name string
+
+ //mt:len32
+ Data []byte
+ }
+ }))(obj)).Files)[local98]).Data) = make([]byte, local101)
+ {
+ _, err := io.ReadFull(r, ((((*(*(struct {
+ // N is the total number of ToCltMedia packets.
+ // I is the index of this packet.
+ N, I uint16
+
+ //mt:len32
+ Files []struct {
+ Name string
+
+ //mt:len32
+ Data []byte
+ }
+ }))(obj)).Files)[local98]).Data)[:])
+ chk(err)
+ }
+ }
+}
+
+func (obj *ToCltNodeDefs) serialize(w io.Writer) {
+ {
+ ow := w
+ w := new(bytes.Buffer)
+ {
+ w := zlib.NewWriter(w)
+ {
+ local102 := uint8(1)
+ {
+ x := local102
+ write8(w, uint8(x))
+ }
+ }
+ {
+ x := (*(*(struct {
+
+ // See (de)serialize.fmt.
+ Defs []NodeDef
+ }))(obj)).Defs
+ { // For ToCltNodeDefs.Defs
+ if len(x) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ write16(w, uint16(len(x)))
+ var b bytes.Buffer
+ for i := range x {
+ x[i].serialize(&b)
+ }
+ if b.Len() > math.MaxUint32 {
+ chk(ErrTooLong)
+ }
+ write32(w, uint32(b.Len()))
+ _, err := b.WriteTo(w)
+ chk(err)
+ }
+ }
+ chk(w.Close())
+ }
+ {
+ buf := w
+ w := ow
+ if len((buf.Bytes())) > math.MaxUint32 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint32(len((buf.Bytes())))
+ write32(w, uint32(x))
+ }
+ {
+ _, err := w.Write((buf.Bytes())[:])
+ chk(err)
+ }
+ }
+ }
+}
+
+func (obj *ToCltNodeDefs) deserialize(r io.Reader) {
+ {
+ var n uint32
+ {
+ p := &n
+ *p = read32(r)
+ }
+ r := &io.LimitedReader{r, int64(n)}
+ {
+ r, err := zlib.NewReader(byteReader{r})
+ chk(err)
+ {
+ var local103 uint8
+ {
+ p := &local103
+ *p = read8(r)
+ }
+ if local103 != (1) {
+ chk(fmt.Errorf("const %v: %v", 1, local103))
+ }
+ }
+ {
+ p := &(*(*(struct {
+
+ // See (de)serialize.fmt.
+ Defs []NodeDef
+ }))(obj)).Defs
+ { // For ToCltNodeDefs.Defs.
+ *p = make([]NodeDef, read16(r))
+ r := &io.LimitedReader{r, int64(read32(r))}
+ for i := range *p {
+ (*p)[i].deserialize(r)
+ }
+ if r.N > 0 {
+ chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ }
+ }
+ }
+ chk(r.Close())
+ }
+ if r.N > 0 {
+ chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ }
+ }
+}
+
+func (obj *ToCltAnnounceMedia) serialize(w io.Writer) {
+ if len(((*(*(struct {
+ Files []struct {
+ Name string
+ Base64SHA1 string
+ }
+ URL string
+ }))(obj)).Files)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Files []struct {
+ Name string
+ Base64SHA1 string
+ }
+ URL string
+ }))(obj)).Files)))
+ write16(w, uint16(x))
+ }
+ for local104 := range (*(*(struct {
+ Files []struct {
+ Name string
+ Base64SHA1 string
+ }
+ URL string
+ }))(obj)).Files {
+ if len(([]byte((((*(*(struct {
+ Files []struct {
+ Name string
+ Base64SHA1 string
+ }
+ URL string
+ }))(obj)).Files)[local104]).Name))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((((*(*(struct {
+ Files []struct {
+ Name string
+ Base64SHA1 string
+ }
+ URL string
+ }))(obj)).Files)[local104]).Name))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((((*(*(struct {
+ Files []struct {
+ Name string
+ Base64SHA1 string
+ }
+ URL string
+ }))(obj)).Files)[local104]).Name))[:])
+ chk(err)
+ }
+ if len(([]byte((((*(*(struct {
+ Files []struct {
+ Name string
+ Base64SHA1 string
+ }
+ URL string
+ }))(obj)).Files)[local104]).Base64SHA1))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((((*(*(struct {
+ Files []struct {
+ Name string
+ Base64SHA1 string
+ }
+ URL string
+ }))(obj)).Files)[local104]).Base64SHA1))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((((*(*(struct {
+ Files []struct {
+ Name string
+ Base64SHA1 string
+ }
+ URL string
+ }))(obj)).Files)[local104]).Base64SHA1))[:])
+ chk(err)
+ }
+ }
+ if len(([]byte((*(*(struct {
+ Files []struct {
+ Name string
+ Base64SHA1 string
+ }
+ URL string
+ }))(obj)).URL))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Files []struct {
+ Name string
+ Base64SHA1 string
+ }
+ URL string
+ }))(obj)).URL))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Files []struct {
+ Name string
+ Base64SHA1 string
+ }
+ URL string
+ }))(obj)).URL))[:])
+ chk(err)
+ }
+}
+
+func (obj *ToCltAnnounceMedia) deserialize(r io.Reader) {
+ var local105 uint16
+ {
+ p := &local105
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Files []struct {
+ Name string
+ Base64SHA1 string
+ }
+ URL string
+ }))(obj)).Files) = make([]struct {
+ Name string
+ Base64SHA1 string
+ }, local105)
+ for local106 := range (*(*(struct {
+ Files []struct {
+ Name string
+ Base64SHA1 string
+ }
+ URL string
+ }))(obj)).Files {
+ var local107 []uint8
+ var local108 uint16
+ {
+ p := &local108
+ *p = read16(r)
+ }
+ (local107) = make([]uint8, local108)
+ {
+ _, err := io.ReadFull(r, (local107)[:])
+ chk(err)
+ }
+ ((((*(*(struct {
+ Files []struct {
+ Name string
+ Base64SHA1 string
+ }
+ URL string
+ }))(obj)).Files)[local106]).Name) = string(local107)
+ var local109 []uint8
+ var local110 uint16
+ {
+ p := &local110
+ *p = read16(r)
+ }
+ (local109) = make([]uint8, local110)
+ {
+ _, err := io.ReadFull(r, (local109)[:])
+ chk(err)
+ }
+ ((((*(*(struct {
+ Files []struct {
+ Name string
+ Base64SHA1 string
+ }
+ URL string
+ }))(obj)).Files)[local106]).Base64SHA1) = string(local109)
+ }
+ var local111 []uint8
+ var local112 uint16
+ {
+ p := &local112
+ *p = read16(r)
+ }
+ (local111) = make([]uint8, local112)
+ {
+ _, err := io.ReadFull(r, (local111)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Files []struct {
+ Name string
+ Base64SHA1 string
+ }
+ URL string
+ }))(obj)).URL) = string(local111)
+}
+
+func (obj *ToCltItemDefs) serialize(w io.Writer) {
+ {
+ ow := w
+ w := new(bytes.Buffer)
+ {
+ w := zlib.NewWriter(w)
+ {
+ local113 := uint8(0)
+ {
+ x := local113
+ write8(w, uint8(x))
+ }
+ }
+ if len(((*(*(struct {
+ Defs []ItemDef
+ Aliases []struct{ Alias, Orig string }
+ }))(obj)).Defs)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Defs []ItemDef
+ Aliases []struct{ Alias, Orig string }
+ }))(obj)).Defs)))
+ write16(w, uint16(x))
+ }
+ for local114 := range (*(*(struct {
+ Defs []ItemDef
+ Aliases []struct{ Alias, Orig string }
+ }))(obj)).Defs {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Defs []ItemDef
+ Aliases []struct{ Alias, Orig string }
+ }))(obj)).Defs)[local114]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.ItemDef", err))
+ }
+ }
+ if len(((*(*(struct {
+ Defs []ItemDef
+ Aliases []struct{ Alias, Orig string }
+ }))(obj)).Aliases)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Defs []ItemDef
+ Aliases []struct{ Alias, Orig string }
+ }))(obj)).Aliases)))
+ write16(w, uint16(x))
+ }
+ for local115 := range (*(*(struct {
+ Defs []ItemDef
+ Aliases []struct{ Alias, Orig string }
+ }))(obj)).Aliases {
+ if len(([]byte((((*(*(struct {
+ Defs []ItemDef
+ Aliases []struct{ Alias, Orig string }
+ }))(obj)).Aliases)[local115]).Alias))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((((*(*(struct {
+ Defs []ItemDef
+ Aliases []struct{ Alias, Orig string }
+ }))(obj)).Aliases)[local115]).Alias))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((((*(*(struct {
+ Defs []ItemDef
+ Aliases []struct{ Alias, Orig string }
+ }))(obj)).Aliases)[local115]).Alias))[:])
+ chk(err)
+ }
+ if len(([]byte((((*(*(struct {
+ Defs []ItemDef
+ Aliases []struct{ Alias, Orig string }
+ }))(obj)).Aliases)[local115]).Orig))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((((*(*(struct {
+ Defs []ItemDef
+ Aliases []struct{ Alias, Orig string }
+ }))(obj)).Aliases)[local115]).Orig))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((((*(*(struct {
+ Defs []ItemDef
+ Aliases []struct{ Alias, Orig string }
+ }))(obj)).Aliases)[local115]).Orig))[:])
+ chk(err)
+ }
+ }
+ chk(w.Close())
+ }
+ {
+ buf := w
+ w := ow
+ if len((buf.Bytes())) > math.MaxUint32 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint32(len((buf.Bytes())))
+ write32(w, uint32(x))
+ }
+ {
+ _, err := w.Write((buf.Bytes())[:])
+ chk(err)
+ }
+ }
+ }
+}
+
+func (obj *ToCltItemDefs) deserialize(r io.Reader) {
+ {
+ var n uint32
+ {
+ p := &n
+ *p = read32(r)
+ }
+ r := &io.LimitedReader{r, int64(n)}
+ {
+ r, err := zlib.NewReader(byteReader{r})
+ chk(err)
+ {
+ var local116 uint8
+ {
+ p := &local116
+ *p = read8(r)
+ }
+ if local116 != (0) {
+ chk(fmt.Errorf("const %v: %v", 0, local116))
+ }
+ }
+ var local117 uint16
+ {
+ p := &local117
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Defs []ItemDef
+ Aliases []struct{ Alias, Orig string }
+ }))(obj)).Defs) = make([]ItemDef, local117)
+ for local118 := range (*(*(struct {
+ Defs []ItemDef
+ Aliases []struct{ Alias, Orig string }
+ }))(obj)).Defs {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Defs []ItemDef
+ Aliases []struct{ Alias, Orig string }
+ }))(obj)).Defs)[local118]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.ItemDef", err))
+ }
+ }
+ var local119 uint16
+ {
+ p := &local119
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Defs []ItemDef
+ Aliases []struct{ Alias, Orig string }
+ }))(obj)).Aliases) = make([]struct {
+ Alias string
+ Orig string
+ }, local119)
+ for local120 := range (*(*(struct {
+ Defs []ItemDef
+ Aliases []struct{ Alias, Orig string }
+ }))(obj)).Aliases {
+ var local121 []uint8
+ var local122 uint16
+ {
+ p := &local122
+ *p = read16(r)
+ }
+ (local121) = make([]uint8, local122)
+ {
+ _, err := io.ReadFull(r, (local121)[:])
+ chk(err)
+ }
+ ((((*(*(struct {
+ Defs []ItemDef
+ Aliases []struct{ Alias, Orig string }
+ }))(obj)).Aliases)[local120]).Alias) = string(local121)
+ var local123 []uint8
+ var local124 uint16
+ {
+ p := &local124
+ *p = read16(r)
+ }
+ (local123) = make([]uint8, local124)
+ {
+ _, err := io.ReadFull(r, (local123)[:])
+ chk(err)
+ }
+ ((((*(*(struct {
+ Defs []ItemDef
+ Aliases []struct{ Alias, Orig string }
+ }))(obj)).Aliases)[local120]).Orig) = string(local123)
+ }
+ chk(r.Close())
+ }
+ if r.N > 0 {
+ chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ }
+ }
+}
+
+func (obj *ToCltPlaySound) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID SoundID
+ Name string
+ Gain float32
+ SrcType SoundSrcType
+ Pos
+ SrcAOID AOID
+ Loop bool
+ Fade float32
+ Pitch float32
+ Ephemeral bool
+ }))(obj)).ID).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.SoundID", err))
+ }
+ if len(([]byte((*(*(struct {
+ ID SoundID
+ Name string
+ Gain float32
+ SrcType SoundSrcType
+ Pos
+ SrcAOID AOID
+ Loop bool
+ Fade float32
+ Pitch float32
+ Ephemeral bool
+ }))(obj)).Name))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ ID SoundID
+ Name string
+ Gain float32
+ SrcType SoundSrcType
+ Pos
+ SrcAOID AOID
+ Loop bool
+ Fade float32
+ Pitch float32
+ Ephemeral bool
+ }))(obj)).Name))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ ID SoundID
+ Name string
+ Gain float32
+ SrcType SoundSrcType
+ Pos
+ SrcAOID AOID
+ Loop bool
+ Fade float32
+ Pitch float32
+ Ephemeral bool
+ }))(obj)).Name))[:])
+ chk(err)
+ }
+ {
+ x := (*(*(struct {
+ ID SoundID
+ Name string
+ Gain float32
+ SrcType SoundSrcType
+ Pos
+ SrcAOID AOID
+ Loop bool
+ Fade float32
+ Pitch float32
+ Ephemeral bool
+ }))(obj)).Gain
+ write32(w, math.Float32bits(x))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID SoundID
+ Name string
+ Gain float32
+ SrcType SoundSrcType
+ Pos
+ SrcAOID AOID
+ Loop bool
+ Fade float32
+ Pitch float32
+ Ephemeral bool
+ }))(obj)).SrcType).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.SoundSrcType", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID SoundID
+ Name string
+ Gain float32
+ SrcType SoundSrcType
+ Pos
+ SrcAOID AOID
+ Loop bool
+ Fade float32
+ Pitch float32
+ Ephemeral bool
+ }))(obj)).Pos).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Pos", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID SoundID
+ Name string
+ Gain float32
+ SrcType SoundSrcType
+ Pos
+ SrcAOID AOID
+ Loop bool
+ Fade float32
+ Pitch float32
+ Ephemeral bool
+ }))(obj)).SrcAOID).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOID", err))
+ }
+ {
+ x := (*(*(struct {
+ ID SoundID
+ Name string
+ Gain float32
+ SrcType SoundSrcType
+ Pos
+ SrcAOID AOID
+ Loop bool
+ Fade float32
+ Pitch float32
+ Ephemeral bool
+ }))(obj)).Loop
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ ID SoundID
+ Name string
+ Gain float32
+ SrcType SoundSrcType
+ Pos
+ SrcAOID AOID
+ Loop bool
+ Fade float32
+ Pitch float32
+ Ephemeral bool
+ }))(obj)).Fade
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ ID SoundID
+ Name string
+ Gain float32
+ SrcType SoundSrcType
+ Pos
+ SrcAOID AOID
+ Loop bool
+ Fade float32
+ Pitch float32
+ Ephemeral bool
+ }))(obj)).Pitch
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ ID SoundID
+ Name string
+ Gain float32
+ SrcType SoundSrcType
+ Pos
+ SrcAOID AOID
+ Loop bool
+ Fade float32
+ Pitch float32
+ Ephemeral bool
+ }))(obj)).Ephemeral
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+}
+
+func (obj *ToCltPlaySound) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID SoundID
+ Name string
+ Gain float32
+ SrcType SoundSrcType
+ Pos
+ SrcAOID AOID
+ Loop bool
+ Fade float32
+ Pitch float32
+ Ephemeral bool
+ }))(obj)).ID).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.SoundID", err))
+ }
+ var local125 []uint8
+ var local126 uint16
+ {
+ p := &local126
+ *p = read16(r)
+ }
+ (local125) = make([]uint8, local126)
+ {
+ _, err := io.ReadFull(r, (local125)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ ID SoundID
+ Name string
+ Gain float32
+ SrcType SoundSrcType
+ Pos
+ SrcAOID AOID
+ Loop bool
+ Fade float32
+ Pitch float32
+ Ephemeral bool
+ }))(obj)).Name) = string(local125)
+ {
+ p := &(*(*(struct {
+ ID SoundID
+ Name string
+ Gain float32
+ SrcType SoundSrcType
+ Pos
+ SrcAOID AOID
+ Loop bool
+ Fade float32
+ Pitch float32
+ Ephemeral bool
+ }))(obj)).Gain
+ *p = math.Float32frombits(read32(r))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID SoundID
+ Name string
+ Gain float32
+ SrcType SoundSrcType
+ Pos
+ SrcAOID AOID
+ Loop bool
+ Fade float32
+ Pitch float32
+ Ephemeral bool
+ }))(obj)).SrcType).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.SoundSrcType", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID SoundID
+ Name string
+ Gain float32
+ SrcType SoundSrcType
+ Pos
+ SrcAOID AOID
+ Loop bool
+ Fade float32
+ Pitch float32
+ Ephemeral bool
+ }))(obj)).Pos).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Pos", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID SoundID
+ Name string
+ Gain float32
+ SrcType SoundSrcType
+ Pos
+ SrcAOID AOID
+ Loop bool
+ Fade float32
+ Pitch float32
+ Ephemeral bool
+ }))(obj)).SrcAOID).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOID", err))
+ }
+ {
+ p := &(*(*(struct {
+ ID SoundID
+ Name string
+ Gain float32
+ SrcType SoundSrcType
+ Pos
+ SrcAOID AOID
+ Loop bool
+ Fade float32
+ Pitch float32
+ Ephemeral bool
+ }))(obj)).Loop
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ ID SoundID
+ Name string
+ Gain float32
+ SrcType SoundSrcType
+ Pos
+ SrcAOID AOID
+ Loop bool
+ Fade float32
+ Pitch float32
+ Ephemeral bool
+ }))(obj)).Fade
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ ID SoundID
+ Name string
+ Gain float32
+ SrcType SoundSrcType
+ Pos
+ SrcAOID AOID
+ Loop bool
+ Fade float32
+ Pitch float32
+ Ephemeral bool
+ }))(obj)).Pitch
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ ID SoundID
+ Name string
+ Gain float32
+ SrcType SoundSrcType
+ Pos
+ SrcAOID AOID
+ Loop bool
+ Fade float32
+ Pitch float32
+ Ephemeral bool
+ }))(obj)).Ephemeral
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+}
+
+func (obj *ToCltStopSound) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID SoundID
+ }))(obj)).ID).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.SoundID", err))
+ }
+}
+
+func (obj *ToCltStopSound) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID SoundID
+ }))(obj)).ID).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.SoundID", err))
+ }
+}
+
+func (obj *ToCltPrivs) serialize(w io.Writer) {
+ if len(((*(*(struct {
+ Privs []string
+ }))(obj)).Privs)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Privs []string
+ }))(obj)).Privs)))
+ write16(w, uint16(x))
+ }
+ for local127 := range (*(*(struct {
+ Privs []string
+ }))(obj)).Privs {
+ if len(([]byte(((*(*(struct {
+ Privs []string
+ }))(obj)).Privs)[local127]))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte(((*(*(struct {
+ Privs []string
+ }))(obj)).Privs)[local127]))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte(((*(*(struct {
+ Privs []string
+ }))(obj)).Privs)[local127]))[:])
+ chk(err)
+ }
+ }
+}
+
+func (obj *ToCltPrivs) deserialize(r io.Reader) {
+ var local128 uint16
+ {
+ p := &local128
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Privs []string
+ }))(obj)).Privs) = make([]string, local128)
+ for local129 := range (*(*(struct {
+ Privs []string
+ }))(obj)).Privs {
+ var local130 []uint8
+ var local131 uint16
+ {
+ p := &local131
+ *p = read16(r)
+ }
+ (local130) = make([]uint8, local131)
+ {
+ _, err := io.ReadFull(r, (local130)[:])
+ chk(err)
+ }
+ (((*(*(struct {
+ Privs []string
+ }))(obj)).Privs)[local129]) = string(local130)
+ }
+}
+
+func (obj *ToCltInvFormspec) serialize(w io.Writer) {
+ if len(([]byte((*(*(struct {
+ //mt:len32
+ Formspec string
+ }))(obj)).Formspec))) > math.MaxUint32 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint32(len(([]byte((*(*(struct {
+ //mt:len32
+ Formspec string
+ }))(obj)).Formspec))))
+ write32(w, uint32(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ //mt:len32
+ Formspec string
+ }))(obj)).Formspec))[:])
+ chk(err)
+ }
+}
+
+func (obj *ToCltInvFormspec) deserialize(r io.Reader) {
+ var local132 []uint8
+ var local133 uint32
+ {
+ p := &local133
+ *p = read32(r)
+ }
+ (local132) = make([]uint8, local133)
+ {
+ _, err := io.ReadFull(r, (local132)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ //mt:len32
+ Formspec string
+ }))(obj)).Formspec) = string(local132)
+}
+
+func (obj *ToCltDetachedInv) serialize(w io.Writer) {
+ if len(([]byte((*(*(struct {
+ Name string
+ Keep bool
+ Len uint16 // deprecated
+
+ //mt:raw
+ Inv string
+ }))(obj)).Name))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Name string
+ Keep bool
+ Len uint16 // deprecated
+
+ //mt:raw
+ Inv string
+ }))(obj)).Name))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Name string
+ Keep bool
+ Len uint16 // deprecated
+
+ //mt:raw
+ Inv string
+ }))(obj)).Name))[:])
+ chk(err)
+ }
+ {
+ x := (*(*(struct {
+ Name string
+ Keep bool
+ Len uint16 // deprecated
+
+ //mt:raw
+ Inv string
+ }))(obj)).Keep
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ Name string
+ Keep bool
+ Len uint16 // deprecated
+
+ //mt:raw
+ Inv string
+ }))(obj)).Len
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Name string
+ Keep bool
+ Len uint16 // deprecated
+
+ //mt:raw
+ Inv string
+ }))(obj)).Inv))[:])
+ chk(err)
+ }
+}
+
+func (obj *ToCltDetachedInv) deserialize(r io.Reader) {
+ var local134 []uint8
+ var local135 uint16
+ {
+ p := &local135
+ *p = read16(r)
+ }
+ (local134) = make([]uint8, local135)
+ {
+ _, err := io.ReadFull(r, (local134)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Name string
+ Keep bool
+ Len uint16 // deprecated
+
+ //mt:raw
+ Inv string
+ }))(obj)).Name) = string(local134)
+ {
+ p := &(*(*(struct {
+ Name string
+ Keep bool
+ Len uint16 // deprecated
+
+ //mt:raw
+ Inv string
+ }))(obj)).Keep
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Name string
+ Keep bool
+ Len uint16 // deprecated
+
+ //mt:raw
+ Inv string
+ }))(obj)).Len
+ *p = read16(r)
+ }
+ var local136 []uint8
+ for {
+ var local137 uint8
+ err := pcall(func() {
+ {
+ p := &local137
+ *p = read8(r)
+ }
+ })
+ if err == io.EOF {
+ break
+ }
+ (local136) = append((local136), local137)
+ chk(err)
+ }
+ ((*(*(struct {
+ Name string
+ Keep bool
+ Len uint16 // deprecated
+
+ //mt:raw
+ Inv string
+ }))(obj)).Inv) = string(local136)
+}
+
+func (obj *ToCltShowFormspec) serialize(w io.Writer) {
+ if len(([]byte((*(*(struct {
+ //mt:len32
+ Formspec string
+
+ Formname string
+ }))(obj)).Formspec))) > math.MaxUint32 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint32(len(([]byte((*(*(struct {
+ //mt:len32
+ Formspec string
+
+ Formname string
+ }))(obj)).Formspec))))
+ write32(w, uint32(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ //mt:len32
+ Formspec string
+
+ Formname string
+ }))(obj)).Formspec))[:])
+ chk(err)
+ }
+ if len(([]byte((*(*(struct {
+ //mt:len32
+ Formspec string
+
+ Formname string
+ }))(obj)).Formname))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ //mt:len32
+ Formspec string
+
+ Formname string
+ }))(obj)).Formname))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ //mt:len32
+ Formspec string
+
+ Formname string
+ }))(obj)).Formname))[:])
+ chk(err)
+ }
+}
+
+func (obj *ToCltShowFormspec) deserialize(r io.Reader) {
+ var local138 []uint8
+ var local139 uint32
+ {
+ p := &local139
+ *p = read32(r)
+ }
+ (local138) = make([]uint8, local139)
+ {
+ _, err := io.ReadFull(r, (local138)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ //mt:len32
+ Formspec string
+
+ Formname string
+ }))(obj)).Formspec) = string(local138)
+ var local140 []uint8
+ var local141 uint16
+ {
+ p := &local141
+ *p = read16(r)
+ }
+ (local140) = make([]uint8, local141)
+ {
+ _, err := io.ReadFull(r, (local140)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ //mt:len32
+ Formspec string
+
+ Formname string
+ }))(obj)).Formname) = string(local140)
+}
+
+func (obj *ToCltMovement) serialize(w io.Writer) {
+ {
+ x := (*(*(struct {
+ DefaultAccel, AirAccel, FastAccel,
+ WalkSpeed, CrouchSpeed, FastSpeed, ClimbSpeed, JumpSpeed,
+ Fluidity, Smoothing, Sink,
+ Gravity float32
+ }))(obj)).DefaultAccel
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ DefaultAccel, AirAccel, FastAccel,
+ WalkSpeed, CrouchSpeed, FastSpeed, ClimbSpeed, JumpSpeed,
+ Fluidity, Smoothing, Sink,
+ Gravity float32
+ }))(obj)).AirAccel
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ DefaultAccel, AirAccel, FastAccel,
+ WalkSpeed, CrouchSpeed, FastSpeed, ClimbSpeed, JumpSpeed,
+ Fluidity, Smoothing, Sink,
+ Gravity float32
+ }))(obj)).FastAccel
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ DefaultAccel, AirAccel, FastAccel,
+ WalkSpeed, CrouchSpeed, FastSpeed, ClimbSpeed, JumpSpeed,
+ Fluidity, Smoothing, Sink,
+ Gravity float32
+ }))(obj)).WalkSpeed
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ DefaultAccel, AirAccel, FastAccel,
+ WalkSpeed, CrouchSpeed, FastSpeed, ClimbSpeed, JumpSpeed,
+ Fluidity, Smoothing, Sink,
+ Gravity float32
+ }))(obj)).CrouchSpeed
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ DefaultAccel, AirAccel, FastAccel,
+ WalkSpeed, CrouchSpeed, FastSpeed, ClimbSpeed, JumpSpeed,
+ Fluidity, Smoothing, Sink,
+ Gravity float32
+ }))(obj)).FastSpeed
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ DefaultAccel, AirAccel, FastAccel,
+ WalkSpeed, CrouchSpeed, FastSpeed, ClimbSpeed, JumpSpeed,
+ Fluidity, Smoothing, Sink,
+ Gravity float32
+ }))(obj)).ClimbSpeed
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ DefaultAccel, AirAccel, FastAccel,
+ WalkSpeed, CrouchSpeed, FastSpeed, ClimbSpeed, JumpSpeed,
+ Fluidity, Smoothing, Sink,
+ Gravity float32
+ }))(obj)).JumpSpeed
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ DefaultAccel, AirAccel, FastAccel,
+ WalkSpeed, CrouchSpeed, FastSpeed, ClimbSpeed, JumpSpeed,
+ Fluidity, Smoothing, Sink,
+ Gravity float32
+ }))(obj)).Fluidity
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ DefaultAccel, AirAccel, FastAccel,
+ WalkSpeed, CrouchSpeed, FastSpeed, ClimbSpeed, JumpSpeed,
+ Fluidity, Smoothing, Sink,
+ Gravity float32
+ }))(obj)).Smoothing
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ DefaultAccel, AirAccel, FastAccel,
+ WalkSpeed, CrouchSpeed, FastSpeed, ClimbSpeed, JumpSpeed,
+ Fluidity, Smoothing, Sink,
+ Gravity float32
+ }))(obj)).Sink
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ DefaultAccel, AirAccel, FastAccel,
+ WalkSpeed, CrouchSpeed, FastSpeed, ClimbSpeed, JumpSpeed,
+ Fluidity, Smoothing, Sink,
+ Gravity float32
+ }))(obj)).Gravity
+ write32(w, math.Float32bits(x))
+ }
+}
+
+func (obj *ToCltMovement) deserialize(r io.Reader) {
+ {
+ p := &(*(*(struct {
+ DefaultAccel, AirAccel, FastAccel,
+ WalkSpeed, CrouchSpeed, FastSpeed, ClimbSpeed, JumpSpeed,
+ Fluidity, Smoothing, Sink,
+ Gravity float32
+ }))(obj)).DefaultAccel
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ DefaultAccel, AirAccel, FastAccel,
+ WalkSpeed, CrouchSpeed, FastSpeed, ClimbSpeed, JumpSpeed,
+ Fluidity, Smoothing, Sink,
+ Gravity float32
+ }))(obj)).AirAccel
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ DefaultAccel, AirAccel, FastAccel,
+ WalkSpeed, CrouchSpeed, FastSpeed, ClimbSpeed, JumpSpeed,
+ Fluidity, Smoothing, Sink,
+ Gravity float32
+ }))(obj)).FastAccel
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ DefaultAccel, AirAccel, FastAccel,
+ WalkSpeed, CrouchSpeed, FastSpeed, ClimbSpeed, JumpSpeed,
+ Fluidity, Smoothing, Sink,
+ Gravity float32
+ }))(obj)).WalkSpeed
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ DefaultAccel, AirAccel, FastAccel,
+ WalkSpeed, CrouchSpeed, FastSpeed, ClimbSpeed, JumpSpeed,
+ Fluidity, Smoothing, Sink,
+ Gravity float32
+ }))(obj)).CrouchSpeed
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ DefaultAccel, AirAccel, FastAccel,
+ WalkSpeed, CrouchSpeed, FastSpeed, ClimbSpeed, JumpSpeed,
+ Fluidity, Smoothing, Sink,
+ Gravity float32
+ }))(obj)).FastSpeed
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ DefaultAccel, AirAccel, FastAccel,
+ WalkSpeed, CrouchSpeed, FastSpeed, ClimbSpeed, JumpSpeed,
+ Fluidity, Smoothing, Sink,
+ Gravity float32
+ }))(obj)).ClimbSpeed
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ DefaultAccel, AirAccel, FastAccel,
+ WalkSpeed, CrouchSpeed, FastSpeed, ClimbSpeed, JumpSpeed,
+ Fluidity, Smoothing, Sink,
+ Gravity float32
+ }))(obj)).JumpSpeed
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ DefaultAccel, AirAccel, FastAccel,
+ WalkSpeed, CrouchSpeed, FastSpeed, ClimbSpeed, JumpSpeed,
+ Fluidity, Smoothing, Sink,
+ Gravity float32
+ }))(obj)).Fluidity
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ DefaultAccel, AirAccel, FastAccel,
+ WalkSpeed, CrouchSpeed, FastSpeed, ClimbSpeed, JumpSpeed,
+ Fluidity, Smoothing, Sink,
+ Gravity float32
+ }))(obj)).Smoothing
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ DefaultAccel, AirAccel, FastAccel,
+ WalkSpeed, CrouchSpeed, FastSpeed, ClimbSpeed, JumpSpeed,
+ Fluidity, Smoothing, Sink,
+ Gravity float32
+ }))(obj)).Sink
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ DefaultAccel, AirAccel, FastAccel,
+ WalkSpeed, CrouchSpeed, FastSpeed, ClimbSpeed, JumpSpeed,
+ Fluidity, Smoothing, Sink,
+ Gravity float32
+ }))(obj)).Gravity
+ *p = math.Float32frombits(read32(r))
+ }
+}
+
+func (obj *ToCltSpawnParticle) serialize(w io.Writer) {
+ for local142 := range (*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Pos {
+ {
+ x := ((*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Pos)[local142]
+ write32(w, math.Float32bits(x))
+ }
+ }
+ for local143 := range (*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Vel {
+ {
+ x := ((*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Vel)[local143]
+ write32(w, math.Float32bits(x))
+ }
+ }
+ for local144 := range (*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Acc {
+ {
+ x := ((*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Acc)[local144]
+ write32(w, math.Float32bits(x))
+ }
+ }
+ {
+ x := (*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).ExpirationTime
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Size
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Collide
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ if len(([]byte(*(*string)(&((*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Texture))))) > math.MaxUint32 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint32(len(([]byte(*(*string)(&((*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Texture))))))
+ write32(w, uint32(x))
+ }
+ {
+ _, err := w.Write(([]byte(*(*string)(&((*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Texture))))[:])
+ chk(err)
+ }
+ {
+ x := (*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Vertical
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).CollisionRm
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).AnimParams).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.TileAnim", err))
+ }
+ {
+ x := (*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Glow
+ write8(w, uint8(x))
+ }
+ {
+ x := (*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).AOCollision
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).NodeParam0).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Content", err))
+ }
+ {
+ x := (*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).NodeParam2
+ write8(w, uint8(x))
+ }
+ {
+ x := (*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).NodeTile
+ write8(w, uint8(x))
+ }
+}
+
+func (obj *ToCltSpawnParticle) deserialize(r io.Reader) {
+ for local145 := range (*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Pos {
+ {
+ p := &((*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Pos)[local145]
+ *p = math.Float32frombits(read32(r))
+ }
+ }
+ for local146 := range (*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Vel {
+ {
+ p := &((*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Vel)[local146]
+ *p = math.Float32frombits(read32(r))
+ }
+ }
+ for local147 := range (*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Acc {
+ {
+ p := &((*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Acc)[local147]
+ *p = math.Float32frombits(read32(r))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).ExpirationTime
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Size
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Collide
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ var local148 []uint8
+ var local149 uint32
+ {
+ p := &local149
+ *p = read32(r)
+ }
+ (local148) = make([]uint8, local149)
+ {
+ _, err := io.ReadFull(r, (local148)[:])
+ chk(err)
+ }
+ (*(*string)(&((*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Texture))) = string(local148)
+ {
+ p := &(*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Vertical
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).CollisionRm
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).AnimParams).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.TileAnim", err))
+ }
+ {
+ p := &(*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Glow
+ *p = read8(r)
+ }
+ {
+ p := &(*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).AOCollision
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).NodeParam0).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Content", err))
+ }
+ {
+ p := &(*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).NodeParam2
+ *p = read8(r)
+ }
+ {
+ p := &(*(*(struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).NodeTile
+ *p = read8(r)
+ }
+}
+
+func (obj *ToCltAddParticleSpawner) serialize(w io.Writer) {
+ {
+ x := (*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Amount
+ write16(w, uint16(x))
+ }
+ {
+ x := (*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Duration
+ write32(w, math.Float32bits(x))
+ }
+ for local150 := range (*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Pos {
+ for local151 := range ((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Pos)[local150] {
+ {
+ x := (((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Pos)[local150])[local151]
+ write32(w, math.Float32bits(x))
+ }
+ }
+ }
+ for local152 := range (*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Vel {
+ for local153 := range ((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Vel)[local152] {
+ {
+ x := (((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Vel)[local152])[local153]
+ write32(w, math.Float32bits(x))
+ }
+ }
+ }
+ for local154 := range (*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Acc {
+ for local155 := range ((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Acc)[local154] {
+ {
+ x := (((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Acc)[local154])[local155]
+ write32(w, math.Float32bits(x))
+ }
+ }
+ }
+ for local156 := range (*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).ExpirationTime {
+ {
+ x := ((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).ExpirationTime)[local156]
+ write32(w, math.Float32bits(x))
+ }
+ }
+ for local157 := range (*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Size {
+ {
+ x := ((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Size)[local157]
+ write32(w, math.Float32bits(x))
+ }
+ }
+ {
+ x := (*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Collide
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ if len(([]byte(*(*string)(&((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Texture))))) > math.MaxUint32 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint32(len(([]byte(*(*string)(&((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Texture))))))
+ write32(w, uint32(x))
+ }
+ {
+ _, err := w.Write(([]byte(*(*string)(&((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Texture))))[:])
+ chk(err)
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).ID).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.ParticleSpawnerID", err))
+ }
+ {
+ x := (*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Vertical
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).CollisionRm
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).AttachedAOID).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOID", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).AnimParams).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.TileAnim", err))
+ }
+ {
+ x := (*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Glow
+ write8(w, uint8(x))
+ }
+ {
+ x := (*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).AOCollision
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).NodeParam0).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Content", err))
+ }
+ {
+ x := (*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).NodeParam2
+ write8(w, uint8(x))
+ }
+ {
+ x := (*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).NodeTile
+ write8(w, uint8(x))
+ }
+}
+
+func (obj *ToCltAddParticleSpawner) deserialize(r io.Reader) {
+ {
+ p := &(*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Amount
+ *p = read16(r)
+ }
+ {
+ p := &(*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Duration
+ *p = math.Float32frombits(read32(r))
+ }
+ for local158 := range (*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Pos {
+ for local159 := range ((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Pos)[local158] {
+ {
+ p := &(((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Pos)[local158])[local159]
+ *p = math.Float32frombits(read32(r))
+ }
+ }
+ }
+ for local160 := range (*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Vel {
+ for local161 := range ((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Vel)[local160] {
+ {
+ p := &(((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Vel)[local160])[local161]
+ *p = math.Float32frombits(read32(r))
+ }
+ }
+ }
+ for local162 := range (*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Acc {
+ for local163 := range ((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Acc)[local162] {
+ {
+ p := &(((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Acc)[local162])[local163]
+ *p = math.Float32frombits(read32(r))
+ }
+ }
+ }
+ for local164 := range (*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).ExpirationTime {
+ {
+ p := &((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).ExpirationTime)[local164]
+ *p = math.Float32frombits(read32(r))
+ }
+ }
+ for local165 := range (*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Size {
+ {
+ p := &((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Size)[local165]
+ *p = math.Float32frombits(read32(r))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Collide
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ var local166 []uint8
+ var local167 uint32
+ {
+ p := &local167
+ *p = read32(r)
+ }
+ (local166) = make([]uint8, local167)
+ {
+ _, err := io.ReadFull(r, (local166)[:])
+ chk(err)
+ }
+ (*(*string)(&((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Texture))) = string(local166)
+ if err := pcall(func() {
+ ((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).ID).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.ParticleSpawnerID", err))
+ }
+ {
+ p := &(*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Vertical
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).CollisionRm
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).AttachedAOID).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOID", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).AnimParams).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.TileAnim", err))
+ }
+ {
+ p := &(*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).Glow
+ *p = read8(r)
+ }
+ {
+ p := &(*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).AOCollision
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).NodeParam0).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Content", err))
+ }
+ {
+ p := &(*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).NodeParam2
+ *p = read8(r)
+ }
+ {
+ p := &(*(*(struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+ }))(obj)).NodeTile
+ *p = read8(r)
+ }
+}
+
+func (obj *ToCltAddHUD) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).ID).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.HUDID", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Type).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.HUDType", err))
+ }
+ for local168 := range (*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Pos {
+ {
+ x := ((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Pos)[local168]
+ write32(w, math.Float32bits(x))
+ }
+ }
+ if len(([]byte((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Name))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Name))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Name))[:])
+ chk(err)
+ }
+ for local169 := range (*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Scale {
+ {
+ x := ((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Scale)[local169]
+ write32(w, math.Float32bits(x))
+ }
+ }
+ if len(([]byte((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Text))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Text))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Text))[:])
+ chk(err)
+ }
+ {
+ x := (*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Number
+ write32(w, uint32(x))
+ }
+ {
+ x := (*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Item
+ write32(w, uint32(x))
+ }
+ {
+ x := (*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Dir
+ write32(w, uint32(x))
+ }
+ for local170 := range (*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Align {
+ {
+ x := ((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Align)[local170]
+ write32(w, math.Float32bits(x))
+ }
+ }
+ for local171 := range (*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Offset {
+ {
+ x := ((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Offset)[local171]
+ write32(w, math.Float32bits(x))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).WorldPos).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Pos", err))
+ }
+ for local172 := range (*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Size {
+ {
+ x := ((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Size)[local172]
+ write32(w, uint32(x))
+ }
+ }
+ {
+ x := (*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).ZIndex
+ write16(w, uint16(x))
+ }
+ if len(([]byte((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Text2))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Text2))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Text2))[:])
+ chk(err)
+ }
+}
+
+func (obj *ToCltAddHUD) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).ID).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.HUDID", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Type).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.HUDType", err))
+ }
+ for local173 := range (*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Pos {
+ {
+ p := &((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Pos)[local173]
+ *p = math.Float32frombits(read32(r))
+ }
+ }
+ var local174 []uint8
+ var local175 uint16
+ {
+ p := &local175
+ *p = read16(r)
+ }
+ (local174) = make([]uint8, local175)
+ {
+ _, err := io.ReadFull(r, (local174)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Name) = string(local174)
+ for local176 := range (*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Scale {
+ {
+ p := &((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Scale)[local176]
+ *p = math.Float32frombits(read32(r))
+ }
+ }
+ var local177 []uint8
+ var local178 uint16
+ {
+ p := &local178
+ *p = read16(r)
+ }
+ (local177) = make([]uint8, local178)
+ {
+ _, err := io.ReadFull(r, (local177)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Text) = string(local177)
+ {
+ p := &(*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Number
+ *p = read32(r)
+ }
+ {
+ p := &(*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Item
+ *p = read32(r)
+ }
+ {
+ p := &(*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Dir
+ *p = read32(r)
+ }
+ for local179 := range (*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Align {
+ {
+ p := &((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Align)[local179]
+ *p = math.Float32frombits(read32(r))
+ }
+ }
+ for local180 := range (*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Offset {
+ {
+ p := &((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Offset)[local180]
+ *p = math.Float32frombits(read32(r))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).WorldPos).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Pos", err))
+ }
+ for local181 := range (*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Size {
+ {
+ p := &((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Size)[local181]
+ *p = int32(read32(r))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).ZIndex
+ *p = int16(read16(r))
+ }
+ var local182 []uint8
+ var local183 uint16
+ {
+ p := &local183
+ *p = read16(r)
+ }
+ (local182) = make([]uint8, local183)
+ {
+ _, err := io.ReadFull(r, (local182)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+ }))(obj)).Text2) = string(local182)
+}
+
+func (obj *ToCltRmHUD) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID HUDID
+ }))(obj)).ID).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.HUDID", err))
+ }
+}
+
+func (obj *ToCltRmHUD) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID HUDID
+ }))(obj)).ID).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.HUDID", err))
+ }
+}
+
+func (obj *ToCltChangeHUD) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).ID).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.HUDID", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.HUDField", err))
+ }
+ if !((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field < hudMax) {
+ chk(errors.New("assertion failed: %s.Field < hudMax"))
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDPos {
+ for local184 := range (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Pos {
+ {
+ x := ((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Pos)[local184]
+ write32(w, math.Float32bits(x))
+ }
+ }
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDName {
+ if len(([]byte((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Name))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Name))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Name))[:])
+ chk(err)
+ }
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDScale {
+ for local185 := range (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Scale {
+ {
+ x := ((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Scale)[local185]
+ write32(w, math.Float32bits(x))
+ }
+ }
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDText {
+ if len(([]byte((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Text))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Text))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Text))[:])
+ chk(err)
+ }
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDNumber {
+ {
+ x := (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Number
+ write32(w, uint32(x))
+ }
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDItem {
+ {
+ x := (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Item
+ write32(w, uint32(x))
+ }
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDDir {
+ {
+ x := (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Dir
+ write32(w, uint32(x))
+ }
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDAlign {
+ for local186 := range (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Align {
+ {
+ x := ((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Align)[local186]
+ write32(w, math.Float32bits(x))
+ }
+ }
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDOffset {
+ for local187 := range (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Offset {
+ {
+ x := ((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Offset)[local187]
+ write32(w, math.Float32bits(x))
+ }
+ }
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDWorldPos {
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).WorldPos).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Pos", err))
+ }
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDSize {
+ for local188 := range (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Size {
+ {
+ x := ((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Size)[local188]
+ write32(w, uint32(x))
+ }
+ }
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDZIndex {
+ {
+ x := (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).ZIndex
+ write32(w, uint32(x))
+ }
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDText2 {
+ if len(([]byte((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Text2))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Text2))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Text2))[:])
+ chk(err)
+ }
+ }
+}
+
+func (obj *ToCltChangeHUD) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).ID).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.HUDID", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.HUDField", err))
+ }
+ if !((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field < hudMax) {
+ chk(errors.New("assertion failed: %s.Field < hudMax"))
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDPos {
+ for local189 := range (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Pos {
+ {
+ p := &((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Pos)[local189]
+ *p = math.Float32frombits(read32(r))
+ }
+ }
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDName {
+ var local190 []uint8
+ var local191 uint16
+ {
+ p := &local191
+ *p = read16(r)
+ }
+ (local190) = make([]uint8, local191)
+ {
+ _, err := io.ReadFull(r, (local190)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Name) = string(local190)
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDScale {
+ for local192 := range (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Scale {
+ {
+ p := &((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Scale)[local192]
+ *p = math.Float32frombits(read32(r))
+ }
+ }
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDText {
+ var local193 []uint8
+ var local194 uint16
+ {
+ p := &local194
+ *p = read16(r)
+ }
+ (local193) = make([]uint8, local194)
+ {
+ _, err := io.ReadFull(r, (local193)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Text) = string(local193)
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDNumber {
+ {
+ p := &(*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Number
+ *p = read32(r)
+ }
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDItem {
+ {
+ p := &(*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Item
+ *p = read32(r)
+ }
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDDir {
+ {
+ p := &(*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Dir
+ *p = read32(r)
+ }
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDAlign {
+ for local195 := range (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Align {
+ {
+ p := &((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Align)[local195]
+ *p = math.Float32frombits(read32(r))
+ }
+ }
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDOffset {
+ for local196 := range (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Offset {
+ {
+ p := &((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Offset)[local196]
+ *p = math.Float32frombits(read32(r))
+ }
+ }
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDWorldPos {
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).WorldPos).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Pos", err))
+ }
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDSize {
+ for local197 := range (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Size {
+ {
+ p := &((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Size)[local197]
+ *p = int32(read32(r))
+ }
+ }
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDZIndex {
+ {
+ p := &(*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).ZIndex
+ *p = read32(r)
+ }
+ }
+ if (*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Field == HUDText2 {
+ var local198 []uint8
+ var local199 uint16
+ {
+ p := &local199
+ *p = read16(r)
+ }
+ (local198) = make([]uint8, local199)
+ {
+ _, err := io.ReadFull(r, (local198)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+
+ //mt:if %s.Field == HUDName
+ Name string
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+
+ //mt:if %s.Field == HUDText
+ Text string
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ }))(obj)).Text2) = string(local198)
+ }
+}
+
+func (obj *ToCltHUDFlags) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ // &^= Mask
+ // |= Flags
+ Flags, Mask HUDFlags
+ }))(obj)).Flags).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.HUDFlags", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ // &^= Mask
+ // |= Flags
+ Flags, Mask HUDFlags
+ }))(obj)).Mask).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.HUDFlags", err))
+ }
+}
+
+func (obj *ToCltHUDFlags) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ // &^= Mask
+ // |= Flags
+ Flags, Mask HUDFlags
+ }))(obj)).Flags).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.HUDFlags", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ // &^= Mask
+ // |= Flags
+ Flags, Mask HUDFlags
+ }))(obj)).Mask).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.HUDFlags", err))
+ }
+}
+
+func (obj *ToCltSetHotbarParam) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param HotbarParam
+
+ //mt:if %s.Param == HotbarSize
+ //mt:const uint16(4) // Size of Size field.
+ Size int32
+
+ //mt:if %s.Param != HotbarSize
+ Img Texture
+ }))(obj)).Param).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.HotbarParam", err))
+ }
+ if (*(*(struct {
+ Param HotbarParam
+
+ //mt:if %s.Param == HotbarSize
+ //mt:const uint16(4) // Size of Size field.
+ Size int32
+
+ //mt:if %s.Param != HotbarSize
+ Img Texture
+ }))(obj)).Param == HotbarSize {
+ {
+ local200 := uint16(4) // Size of Size field.
+ {
+ x := local200
+ write16(w, uint16(x))
+ }
+ }
+ {
+ x := (*(*(struct {
+ Param HotbarParam
+
+ //mt:if %s.Param == HotbarSize
+ //mt:const uint16(4) // Size of Size field.
+ Size int32
+
+ //mt:if %s.Param != HotbarSize
+ Img Texture
+ }))(obj)).Size
+ write32(w, uint32(x))
+ }
+ }
+ if (*(*(struct {
+ Param HotbarParam
+
+ //mt:if %s.Param == HotbarSize
+ //mt:const uint16(4) // Size of Size field.
+ Size int32
+
+ //mt:if %s.Param != HotbarSize
+ Img Texture
+ }))(obj)).Param != HotbarSize {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param HotbarParam
+
+ //mt:if %s.Param == HotbarSize
+ //mt:const uint16(4) // Size of Size field.
+ Size int32
+
+ //mt:if %s.Param != HotbarSize
+ Img Texture
+ }))(obj)).Img).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ }
+}
+
+func (obj *ToCltSetHotbarParam) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param HotbarParam
+
+ //mt:if %s.Param == HotbarSize
+ //mt:const uint16(4) // Size of Size field.
+ Size int32
+
+ //mt:if %s.Param != HotbarSize
+ Img Texture
+ }))(obj)).Param).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.HotbarParam", err))
+ }
+ if (*(*(struct {
+ Param HotbarParam
+
+ //mt:if %s.Param == HotbarSize
+ //mt:const uint16(4) // Size of Size field.
+ Size int32
+
+ //mt:if %s.Param != HotbarSize
+ Img Texture
+ }))(obj)).Param == HotbarSize {
+ {
+ var local201 uint16
+ {
+ p := &local201
+ *p = read16(r)
+ }
+ if local201 != (4) {
+ chk(fmt.Errorf("const %v: %v", 4, local201))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Param HotbarParam
+
+ //mt:if %s.Param == HotbarSize
+ //mt:const uint16(4) // Size of Size field.
+ Size int32
+
+ //mt:if %s.Param != HotbarSize
+ Img Texture
+ }))(obj)).Size
+ *p = int32(read32(r))
+ }
+ }
+ if (*(*(struct {
+ Param HotbarParam
+
+ //mt:if %s.Param == HotbarSize
+ //mt:const uint16(4) // Size of Size field.
+ Size int32
+
+ //mt:if %s.Param != HotbarSize
+ Img Texture
+ }))(obj)).Param != HotbarSize {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param HotbarParam
+
+ //mt:if %s.Param == HotbarSize
+ //mt:const uint16(4) // Size of Size field.
+ Size int32
+
+ //mt:if %s.Param != HotbarSize
+ Img Texture
+ }))(obj)).Img).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ }
+}
+
+func (obj *ToCltBreath) serialize(w io.Writer) {
+ {
+ x := (*(*(struct {
+ Breath uint16
+ }))(obj)).Breath
+ write16(w, uint16(x))
+ }
+}
+
+func (obj *ToCltBreath) deserialize(r io.Reader) {
+ {
+ p := &(*(*(struct {
+ Breath uint16
+ }))(obj)).Breath
+ *p = read16(r)
+ }
+}
+
+func (obj *ToCltSkyParams) serialize(w io.Writer) {
+ {
+ x := (*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).BgColor
+ w.Write([]byte{x.A, x.R, x.G, x.B})
+ }
+ if len(([]byte((*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).Type))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).Type))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).Type))[:])
+ chk(err)
+ }
+ {
+ x := (*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).Clouds
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).SunFogTint
+ w.Write([]byte{x.A, x.R, x.G, x.B})
+ }
+ {
+ x := (*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).MoonFogTint
+ w.Write([]byte{x.A, x.R, x.G, x.B})
+ }
+ if len(([]byte((*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).FogTintType))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).FogTintType))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).FogTintType))[:])
+ chk(err)
+ }
+ if (*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).Type == "skybox" {
+ if len(((*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).Textures)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).Textures)))
+ write16(w, uint16(x))
+ }
+ for local202 := range (*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).Textures {
+ if err := pcall(func() {
+ (((*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).Textures)[local202]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ }
+ }
+ if (*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).Type == "regular" {
+ {
+ x := (*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).DaySky
+ w.Write([]byte{x.A, x.R, x.G, x.B})
+ }
+ {
+ x := (*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).DayHorizon
+ w.Write([]byte{x.A, x.R, x.G, x.B})
+ }
+ {
+ x := (*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).DawnSky
+ w.Write([]byte{x.A, x.R, x.G, x.B})
+ }
+ {
+ x := (*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).DawnHorizon
+ w.Write([]byte{x.A, x.R, x.G, x.B})
+ }
+ {
+ x := (*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).NightSky
+ w.Write([]byte{x.A, x.R, x.G, x.B})
+ }
+ {
+ x := (*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).NightHorizon
+ w.Write([]byte{x.A, x.R, x.G, x.B})
+ }
+ {
+ x := (*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).Indoor
+ w.Write([]byte{x.A, x.R, x.G, x.B})
+ }
+ }
+}
+
+func (obj *ToCltSkyParams) deserialize(r io.Reader) {
+ {
+ p := &(*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).BgColor
+ *p = color.NRGBA{A: read8(r), R: read8(r), G: read8(r), B: read8(r)}
+ }
+ var local203 []uint8
+ var local204 uint16
+ {
+ p := &local204
+ *p = read16(r)
+ }
+ (local203) = make([]uint8, local204)
+ {
+ _, err := io.ReadFull(r, (local203)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).Type) = string(local203)
+ {
+ p := &(*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).Clouds
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).SunFogTint
+ *p = color.NRGBA{A: read8(r), R: read8(r), G: read8(r), B: read8(r)}
+ }
+ {
+ p := &(*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).MoonFogTint
+ *p = color.NRGBA{A: read8(r), R: read8(r), G: read8(r), B: read8(r)}
+ }
+ var local205 []uint8
+ var local206 uint16
+ {
+ p := &local206
+ *p = read16(r)
+ }
+ (local205) = make([]uint8, local206)
+ {
+ _, err := io.ReadFull(r, (local205)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).FogTintType) = string(local205)
+ if (*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).Type == "skybox" {
+ var local207 uint16
+ {
+ p := &local207
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).Textures) = make([]Texture, local207)
+ for local208 := range (*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).Textures {
+ if err := pcall(func() {
+ (((*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).Textures)[local208]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ }
+ }
+ if (*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).Type == "regular" {
+ {
+ p := &(*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).DaySky
+ *p = color.NRGBA{A: read8(r), R: read8(r), G: read8(r), B: read8(r)}
+ }
+ {
+ p := &(*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).DayHorizon
+ *p = color.NRGBA{A: read8(r), R: read8(r), G: read8(r), B: read8(r)}
+ }
+ {
+ p := &(*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).DawnSky
+ *p = color.NRGBA{A: read8(r), R: read8(r), G: read8(r), B: read8(r)}
+ }
+ {
+ p := &(*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).DawnHorizon
+ *p = color.NRGBA{A: read8(r), R: read8(r), G: read8(r), B: read8(r)}
+ }
+ {
+ p := &(*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).NightSky
+ *p = color.NRGBA{A: read8(r), R: read8(r), G: read8(r), B: read8(r)}
+ }
+ {
+ p := &(*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).NightHorizon
+ *p = color.NRGBA{A: read8(r), R: read8(r), G: read8(r), B: read8(r)}
+ }
+ {
+ p := &(*(*(struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ }))(obj)).Indoor
+ *p = color.NRGBA{A: read8(r), R: read8(r), G: read8(r), B: read8(r)}
+ }
+ }
+}
+
+func (obj *ToCltOverrideDayNightRatio) serialize(w io.Writer) {
+ {
+ x := (*(*(struct {
+ Override bool
+ Ratio uint16
+ }))(obj)).Override
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ Override bool
+ Ratio uint16
+ }))(obj)).Ratio
+ write16(w, uint16(x))
+ }
+}
+
+func (obj *ToCltOverrideDayNightRatio) deserialize(r io.Reader) {
+ {
+ p := &(*(*(struct {
+ Override bool
+ Ratio uint16
+ }))(obj)).Override
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Override bool
+ Ratio uint16
+ }))(obj)).Ratio
+ *p = read16(r)
+ }
+}
+
+func (obj *ToCltLocalPlayerAnim) serialize(w io.Writer) {
+ for local209 := range (*(*(struct {
+ Idle, Walk, Dig, WalkDig [2]int32
+ Speed float32
+ }))(obj)).Idle {
+ {
+ x := ((*(*(struct {
+ Idle, Walk, Dig, WalkDig [2]int32
+ Speed float32
+ }))(obj)).Idle)[local209]
+ write32(w, uint32(x))
+ }
+ }
+ for local210 := range (*(*(struct {
+ Idle, Walk, Dig, WalkDig [2]int32
+ Speed float32
+ }))(obj)).Walk {
+ {
+ x := ((*(*(struct {
+ Idle, Walk, Dig, WalkDig [2]int32
+ Speed float32
+ }))(obj)).Walk)[local210]
+ write32(w, uint32(x))
+ }
+ }
+ for local211 := range (*(*(struct {
+ Idle, Walk, Dig, WalkDig [2]int32
+ Speed float32
+ }))(obj)).Dig {
+ {
+ x := ((*(*(struct {
+ Idle, Walk, Dig, WalkDig [2]int32
+ Speed float32
+ }))(obj)).Dig)[local211]
+ write32(w, uint32(x))
+ }
+ }
+ for local212 := range (*(*(struct {
+ Idle, Walk, Dig, WalkDig [2]int32
+ Speed float32
+ }))(obj)).WalkDig {
+ {
+ x := ((*(*(struct {
+ Idle, Walk, Dig, WalkDig [2]int32
+ Speed float32
+ }))(obj)).WalkDig)[local212]
+ write32(w, uint32(x))
+ }
+ }
+ {
+ x := (*(*(struct {
+ Idle, Walk, Dig, WalkDig [2]int32
+ Speed float32
+ }))(obj)).Speed
+ write32(w, math.Float32bits(x))
+ }
+}
+
+func (obj *ToCltLocalPlayerAnim) deserialize(r io.Reader) {
+ for local213 := range (*(*(struct {
+ Idle, Walk, Dig, WalkDig [2]int32
+ Speed float32
+ }))(obj)).Idle {
+ {
+ p := &((*(*(struct {
+ Idle, Walk, Dig, WalkDig [2]int32
+ Speed float32
+ }))(obj)).Idle)[local213]
+ *p = int32(read32(r))
+ }
+ }
+ for local214 := range (*(*(struct {
+ Idle, Walk, Dig, WalkDig [2]int32
+ Speed float32
+ }))(obj)).Walk {
+ {
+ p := &((*(*(struct {
+ Idle, Walk, Dig, WalkDig [2]int32
+ Speed float32
+ }))(obj)).Walk)[local214]
+ *p = int32(read32(r))
+ }
+ }
+ for local215 := range (*(*(struct {
+ Idle, Walk, Dig, WalkDig [2]int32
+ Speed float32
+ }))(obj)).Dig {
+ {
+ p := &((*(*(struct {
+ Idle, Walk, Dig, WalkDig [2]int32
+ Speed float32
+ }))(obj)).Dig)[local215]
+ *p = int32(read32(r))
+ }
+ }
+ for local216 := range (*(*(struct {
+ Idle, Walk, Dig, WalkDig [2]int32
+ Speed float32
+ }))(obj)).WalkDig {
+ {
+ p := &((*(*(struct {
+ Idle, Walk, Dig, WalkDig [2]int32
+ Speed float32
+ }))(obj)).WalkDig)[local216]
+ *p = int32(read32(r))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Idle, Walk, Dig, WalkDig [2]int32
+ Speed float32
+ }))(obj)).Speed
+ *p = math.Float32frombits(read32(r))
+ }
+}
+
+func (obj *ToCltEyeOffset) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ First, Third Vec
+ }))(obj)).First).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Vec", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ First, Third Vec
+ }))(obj)).Third).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Vec", err))
+ }
+}
+
+func (obj *ToCltEyeOffset) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ First, Third Vec
+ }))(obj)).First).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Vec", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ First, Third Vec
+ }))(obj)).Third).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Vec", err))
+ }
+}
+
+func (obj *ToCltDelParticleSpawner) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID ParticleSpawnerID
+ }))(obj)).ID).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.ParticleSpawnerID", err))
+ }
+}
+
+func (obj *ToCltDelParticleSpawner) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID ParticleSpawnerID
+ }))(obj)).ID).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.ParticleSpawnerID", err))
+ }
+}
+
+func (obj *ToCltCloudParams) serialize(w io.Writer) {
+ {
+ x := (*(*(struct {
+ Density float32
+ DiffuseColor color.NRGBA
+ AmbientColor color.NRGBA
+ Height float32
+ Thickness float32
+ Speed [2]float32
+ }))(obj)).Density
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ Density float32
+ DiffuseColor color.NRGBA
+ AmbientColor color.NRGBA
+ Height float32
+ Thickness float32
+ Speed [2]float32
+ }))(obj)).DiffuseColor
+ w.Write([]byte{x.A, x.R, x.G, x.B})
+ }
+ {
+ x := (*(*(struct {
+ Density float32
+ DiffuseColor color.NRGBA
+ AmbientColor color.NRGBA
+ Height float32
+ Thickness float32
+ Speed [2]float32
+ }))(obj)).AmbientColor
+ w.Write([]byte{x.A, x.R, x.G, x.B})
+ }
+ {
+ x := (*(*(struct {
+ Density float32
+ DiffuseColor color.NRGBA
+ AmbientColor color.NRGBA
+ Height float32
+ Thickness float32
+ Speed [2]float32
+ }))(obj)).Height
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ Density float32
+ DiffuseColor color.NRGBA
+ AmbientColor color.NRGBA
+ Height float32
+ Thickness float32
+ Speed [2]float32
+ }))(obj)).Thickness
+ write32(w, math.Float32bits(x))
+ }
+ for local217 := range (*(*(struct {
+ Density float32
+ DiffuseColor color.NRGBA
+ AmbientColor color.NRGBA
+ Height float32
+ Thickness float32
+ Speed [2]float32
+ }))(obj)).Speed {
+ {
+ x := ((*(*(struct {
+ Density float32
+ DiffuseColor color.NRGBA
+ AmbientColor color.NRGBA
+ Height float32
+ Thickness float32
+ Speed [2]float32
+ }))(obj)).Speed)[local217]
+ write32(w, math.Float32bits(x))
+ }
+ }
+}
+
+func (obj *ToCltCloudParams) deserialize(r io.Reader) {
+ {
+ p := &(*(*(struct {
+ Density float32
+ DiffuseColor color.NRGBA
+ AmbientColor color.NRGBA
+ Height float32
+ Thickness float32
+ Speed [2]float32
+ }))(obj)).Density
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ Density float32
+ DiffuseColor color.NRGBA
+ AmbientColor color.NRGBA
+ Height float32
+ Thickness float32
+ Speed [2]float32
+ }))(obj)).DiffuseColor
+ *p = color.NRGBA{A: read8(r), R: read8(r), G: read8(r), B: read8(r)}
+ }
+ {
+ p := &(*(*(struct {
+ Density float32
+ DiffuseColor color.NRGBA
+ AmbientColor color.NRGBA
+ Height float32
+ Thickness float32
+ Speed [2]float32
+ }))(obj)).AmbientColor
+ *p = color.NRGBA{A: read8(r), R: read8(r), G: read8(r), B: read8(r)}
+ }
+ {
+ p := &(*(*(struct {
+ Density float32
+ DiffuseColor color.NRGBA
+ AmbientColor color.NRGBA
+ Height float32
+ Thickness float32
+ Speed [2]float32
+ }))(obj)).Height
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ Density float32
+ DiffuseColor color.NRGBA
+ AmbientColor color.NRGBA
+ Height float32
+ Thickness float32
+ Speed [2]float32
+ }))(obj)).Thickness
+ *p = math.Float32frombits(read32(r))
+ }
+ for local218 := range (*(*(struct {
+ Density float32
+ DiffuseColor color.NRGBA
+ AmbientColor color.NRGBA
+ Height float32
+ Thickness float32
+ Speed [2]float32
+ }))(obj)).Speed {
+ {
+ p := &((*(*(struct {
+ Density float32
+ DiffuseColor color.NRGBA
+ AmbientColor color.NRGBA
+ Height float32
+ Thickness float32
+ Speed [2]float32
+ }))(obj)).Speed)[local218]
+ *p = math.Float32frombits(read32(r))
+ }
+ }
+}
+
+func (obj *ToCltFadeSound) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID SoundID
+ Step float32
+ Gain float32
+ }))(obj)).ID).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.SoundID", err))
+ }
+ {
+ x := (*(*(struct {
+ ID SoundID
+ Step float32
+ Gain float32
+ }))(obj)).Step
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ ID SoundID
+ Step float32
+ Gain float32
+ }))(obj)).Gain
+ write32(w, math.Float32bits(x))
+ }
+}
+
+func (obj *ToCltFadeSound) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID SoundID
+ Step float32
+ Gain float32
+ }))(obj)).ID).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.SoundID", err))
+ }
+ {
+ p := &(*(*(struct {
+ ID SoundID
+ Step float32
+ Gain float32
+ }))(obj)).Step
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ ID SoundID
+ Step float32
+ Gain float32
+ }))(obj)).Gain
+ *p = math.Float32frombits(read32(r))
+ }
+}
+
+func (obj *ToCltUpdatePlayerList) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type PlayerListUpdateType
+ Players []string
+ }))(obj)).Type).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.PlayerListUpdateType", err))
+ }
+ if len(((*(*(struct {
+ Type PlayerListUpdateType
+ Players []string
+ }))(obj)).Players)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Type PlayerListUpdateType
+ Players []string
+ }))(obj)).Players)))
+ write16(w, uint16(x))
+ }
+ for local219 := range (*(*(struct {
+ Type PlayerListUpdateType
+ Players []string
+ }))(obj)).Players {
+ if len(([]byte(((*(*(struct {
+ Type PlayerListUpdateType
+ Players []string
+ }))(obj)).Players)[local219]))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte(((*(*(struct {
+ Type PlayerListUpdateType
+ Players []string
+ }))(obj)).Players)[local219]))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte(((*(*(struct {
+ Type PlayerListUpdateType
+ Players []string
+ }))(obj)).Players)[local219]))[:])
+ chk(err)
+ }
+ }
+}
+
+func (obj *ToCltUpdatePlayerList) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type PlayerListUpdateType
+ Players []string
+ }))(obj)).Type).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.PlayerListUpdateType", err))
+ }
+ var local220 uint16
+ {
+ p := &local220
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Type PlayerListUpdateType
+ Players []string
+ }))(obj)).Players) = make([]string, local220)
+ for local221 := range (*(*(struct {
+ Type PlayerListUpdateType
+ Players []string
+ }))(obj)).Players {
+ var local222 []uint8
+ var local223 uint16
+ {
+ p := &local223
+ *p = read16(r)
+ }
+ (local222) = make([]uint8, local223)
+ {
+ _, err := io.ReadFull(r, (local222)[:])
+ chk(err)
+ }
+ (((*(*(struct {
+ Type PlayerListUpdateType
+ Players []string
+ }))(obj)).Players)[local221]) = string(local222)
+ }
+}
+
+func (obj *ToCltModChanMsg) serialize(w io.Writer) {
+ if len(([]byte((*(*(struct {
+ Channel string
+ Sender string
+ Msg string
+ }))(obj)).Channel))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Channel string
+ Sender string
+ Msg string
+ }))(obj)).Channel))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Channel string
+ Sender string
+ Msg string
+ }))(obj)).Channel))[:])
+ chk(err)
+ }
+ if len(([]byte((*(*(struct {
+ Channel string
+ Sender string
+ Msg string
+ }))(obj)).Sender))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Channel string
+ Sender string
+ Msg string
+ }))(obj)).Sender))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Channel string
+ Sender string
+ Msg string
+ }))(obj)).Sender))[:])
+ chk(err)
+ }
+ if len(([]byte((*(*(struct {
+ Channel string
+ Sender string
+ Msg string
+ }))(obj)).Msg))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Channel string
+ Sender string
+ Msg string
+ }))(obj)).Msg))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Channel string
+ Sender string
+ Msg string
+ }))(obj)).Msg))[:])
+ chk(err)
+ }
+}
+
+func (obj *ToCltModChanMsg) deserialize(r io.Reader) {
+ var local224 []uint8
+ var local225 uint16
+ {
+ p := &local225
+ *p = read16(r)
+ }
+ (local224) = make([]uint8, local225)
+ {
+ _, err := io.ReadFull(r, (local224)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Channel string
+ Sender string
+ Msg string
+ }))(obj)).Channel) = string(local224)
+ var local226 []uint8
+ var local227 uint16
+ {
+ p := &local227
+ *p = read16(r)
+ }
+ (local226) = make([]uint8, local227)
+ {
+ _, err := io.ReadFull(r, (local226)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Channel string
+ Sender string
+ Msg string
+ }))(obj)).Sender) = string(local226)
+ var local228 []uint8
+ var local229 uint16
+ {
+ p := &local229
+ *p = read16(r)
+ }
+ (local228) = make([]uint8, local229)
+ {
+ _, err := io.ReadFull(r, (local228)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Channel string
+ Sender string
+ Msg string
+ }))(obj)).Msg) = string(local228)
+}
+
+func (obj *ToCltModChanSig) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Signal ModChanSig
+ Channel string
+ }))(obj)).Signal).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.ModChanSig", err))
+ }
+ if len(([]byte((*(*(struct {
+ Signal ModChanSig
+ Channel string
+ }))(obj)).Channel))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Signal ModChanSig
+ Channel string
+ }))(obj)).Channel))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Signal ModChanSig
+ Channel string
+ }))(obj)).Channel))[:])
+ chk(err)
+ }
+}
+
+func (obj *ToCltModChanSig) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Signal ModChanSig
+ Channel string
+ }))(obj)).Signal).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.ModChanSig", err))
+ }
+ var local230 []uint8
+ var local231 uint16
+ {
+ p := &local231
+ *p = read16(r)
+ }
+ (local230) = make([]uint8, local231)
+ {
+ _, err := io.ReadFull(r, (local230)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Signal ModChanSig
+ Channel string
+ }))(obj)).Channel) = string(local230)
+}
+
+func (obj *ToCltNodeMetasChanged) serialize(w io.Writer) {
+ {
+ ow := w
+ w := new(bytes.Buffer)
+ {
+ x := (*(*(struct {
+ //mt:lenhdr 32
+ Changed map[[3]int16]*NodeMeta
+ }))(obj)).Changed
+ {
+ w := zlib.NewWriter(w)
+ if x == nil {
+ write8(w, 0)
+ } else {
+ write8(w, 2)
+ if len(x) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ write16(w, uint16(len(x)))
+ keys := make([][3]int16, 0, len(x))
+ for key := range x {
+ keys = append(keys, key)
+ }
+ sort.Slice(keys, func(i, j int) bool {
+ p, q := keys[i], keys[j]
+ for i := range p {
+ switch {
+ case p[i] < q[i]:
+ return true
+ case p[i] > q[i]:
+ return false
+ }
+ }
+ return false
+ })
+ for _, key := range keys {
+ for _, n := range key {
+ write16(w, uint16(n))
+ }
+ chk(serialize(w, x[key]))
+ }
+ }
+ chk(w.Close())
+ }
+ }
+ {
+ buf := w
+ w := ow
+ if len((buf.Bytes())) > math.MaxUint32 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint32(len((buf.Bytes())))
+ write32(w, uint32(x))
+ }
+ {
+ _, err := w.Write((buf.Bytes())[:])
+ chk(err)
+ }
+ }
+ }
+}
+
+func (obj *ToCltNodeMetasChanged) deserialize(r io.Reader) {
+ {
+ var n uint32
+ {
+ p := &n
+ *p = read32(r)
+ }
+ r := &io.LimitedReader{r, int64(n)}
+ {
+ p := &(*(*(struct {
+ //mt:lenhdr 32
+ Changed map[[3]int16]*NodeMeta
+ }))(obj)).Changed
+ {
+ r, err := zlib.NewReader(byteReader{r})
+ chk(err)
+ switch ver := read8(r); ver {
+ case 0:
+ *p = nil
+ case 2:
+ n := read16(r)
+ *p = make(map[[3]int16]*NodeMeta, n)
+ for ; n > 0; n-- {
+ var pos [3]int16
+ for i := range pos {
+ pos[i] = int16(read16(r))
+ }
+ nm := new(NodeMeta)
+ chk(deserialize(r, nm))
+ (*p)[pos] = nm
+ }
+ default:
+ chk(fmt.Errorf("unsupported nodemetas version: %d", ver))
+ }
+ chk(r.Close())
+ }
+ }
+ if r.N > 0 {
+ chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ }
+ }
+}
+
+func (obj *ToCltSunParams) serialize(w io.Writer) {
+ {
+ x := (*(*(struct {
+ Visible bool
+ Texture
+ ToneMap Texture
+ Rise Texture
+ Rising bool
+ Size float32
+ }))(obj)).Visible
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Visible bool
+ Texture
+ ToneMap Texture
+ Rise Texture
+ Rising bool
+ Size float32
+ }))(obj)).Texture).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Visible bool
+ Texture
+ ToneMap Texture
+ Rise Texture
+ Rising bool
+ Size float32
+ }))(obj)).ToneMap).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Visible bool
+ Texture
+ ToneMap Texture
+ Rise Texture
+ Rising bool
+ Size float32
+ }))(obj)).Rise).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ {
+ x := (*(*(struct {
+ Visible bool
+ Texture
+ ToneMap Texture
+ Rise Texture
+ Rising bool
+ Size float32
+ }))(obj)).Rising
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ Visible bool
+ Texture
+ ToneMap Texture
+ Rise Texture
+ Rising bool
+ Size float32
+ }))(obj)).Size
+ write32(w, math.Float32bits(x))
+ }
+}
+
+func (obj *ToCltSunParams) deserialize(r io.Reader) {
+ {
+ p := &(*(*(struct {
+ Visible bool
+ Texture
+ ToneMap Texture
+ Rise Texture
+ Rising bool
+ Size float32
+ }))(obj)).Visible
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Visible bool
+ Texture
+ ToneMap Texture
+ Rise Texture
+ Rising bool
+ Size float32
+ }))(obj)).Texture).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Visible bool
+ Texture
+ ToneMap Texture
+ Rise Texture
+ Rising bool
+ Size float32
+ }))(obj)).ToneMap).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Visible bool
+ Texture
+ ToneMap Texture
+ Rise Texture
+ Rising bool
+ Size float32
+ }))(obj)).Rise).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ {
+ p := &(*(*(struct {
+ Visible bool
+ Texture
+ ToneMap Texture
+ Rise Texture
+ Rising bool
+ Size float32
+ }))(obj)).Rising
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Visible bool
+ Texture
+ ToneMap Texture
+ Rise Texture
+ Rising bool
+ Size float32
+ }))(obj)).Size
+ *p = math.Float32frombits(read32(r))
+ }
+}
+
+func (obj *ToCltMoonParams) serialize(w io.Writer) {
+ {
+ x := (*(*(struct {
+ Visible bool
+ Texture
+ ToneMap Texture
+ Size float32
+ }))(obj)).Visible
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Visible bool
+ Texture
+ ToneMap Texture
+ Size float32
+ }))(obj)).Texture).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Visible bool
+ Texture
+ ToneMap Texture
+ Size float32
+ }))(obj)).ToneMap).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ {
+ x := (*(*(struct {
+ Visible bool
+ Texture
+ ToneMap Texture
+ Size float32
+ }))(obj)).Size
+ write32(w, math.Float32bits(x))
+ }
+}
+
+func (obj *ToCltMoonParams) deserialize(r io.Reader) {
+ {
+ p := &(*(*(struct {
+ Visible bool
+ Texture
+ ToneMap Texture
+ Size float32
+ }))(obj)).Visible
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Visible bool
+ Texture
+ ToneMap Texture
+ Size float32
+ }))(obj)).Texture).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Visible bool
+ Texture
+ ToneMap Texture
+ Size float32
+ }))(obj)).ToneMap).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ {
+ p := &(*(*(struct {
+ Visible bool
+ Texture
+ ToneMap Texture
+ Size float32
+ }))(obj)).Size
+ *p = math.Float32frombits(read32(r))
+ }
+}
+
+func (obj *ToCltStarParams) serialize(w io.Writer) {
+ {
+ x := (*(*(struct {
+ Visible bool
+ Count uint32
+ Color color.NRGBA
+ Size float32
+ }))(obj)).Visible
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ Visible bool
+ Count uint32
+ Color color.NRGBA
+ Size float32
+ }))(obj)).Count
+ write32(w, uint32(x))
+ }
+ {
+ x := (*(*(struct {
+ Visible bool
+ Count uint32
+ Color color.NRGBA
+ Size float32
+ }))(obj)).Color
+ w.Write([]byte{x.A, x.R, x.G, x.B})
+ }
+ {
+ x := (*(*(struct {
+ Visible bool
+ Count uint32
+ Color color.NRGBA
+ Size float32
+ }))(obj)).Size
+ write32(w, math.Float32bits(x))
+ }
+}
+
+func (obj *ToCltStarParams) deserialize(r io.Reader) {
+ {
+ p := &(*(*(struct {
+ Visible bool
+ Count uint32
+ Color color.NRGBA
+ Size float32
+ }))(obj)).Visible
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Visible bool
+ Count uint32
+ Color color.NRGBA
+ Size float32
+ }))(obj)).Count
+ *p = read32(r)
+ }
+ {
+ p := &(*(*(struct {
+ Visible bool
+ Count uint32
+ Color color.NRGBA
+ Size float32
+ }))(obj)).Color
+ *p = color.NRGBA{A: read8(r), R: read8(r), G: read8(r), B: read8(r)}
+ }
+ {
+ p := &(*(*(struct {
+ Visible bool
+ Count uint32
+ Color color.NRGBA
+ Size float32
+ }))(obj)).Size
+ *p = math.Float32frombits(read32(r))
+ }
+}
+
+func (obj *ToCltSRPBytesSaltB) serialize(w io.Writer) {
+ if len(((*(*(struct {
+ Salt, B []byte
+ }))(obj)).Salt)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Salt, B []byte
+ }))(obj)).Salt)))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(((*(*(struct {
+ Salt, B []byte
+ }))(obj)).Salt)[:])
+ chk(err)
+ }
+ if len(((*(*(struct {
+ Salt, B []byte
+ }))(obj)).B)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Salt, B []byte
+ }))(obj)).B)))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(((*(*(struct {
+ Salt, B []byte
+ }))(obj)).B)[:])
+ chk(err)
+ }
+}
+
+func (obj *ToCltSRPBytesSaltB) deserialize(r io.Reader) {
+ var local232 uint16
+ {
+ p := &local232
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Salt, B []byte
+ }))(obj)).Salt) = make([]byte, local232)
+ {
+ _, err := io.ReadFull(r, ((*(*(struct {
+ Salt, B []byte
+ }))(obj)).Salt)[:])
+ chk(err)
+ }
+ var local233 uint16
+ {
+ p := &local233
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Salt, B []byte
+ }))(obj)).B) = make([]byte, local233)
+ {
+ _, err := io.ReadFull(r, ((*(*(struct {
+ Salt, B []byte
+ }))(obj)).B)[:])
+ chk(err)
+ }
+}
+
+func (obj *ToCltFormspecPrepend) serialize(w io.Writer) {
+ if len(([]byte((*(*(struct {
+ Prepend string
+ }))(obj)).Prepend))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Prepend string
+ }))(obj)).Prepend))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Prepend string
+ }))(obj)).Prepend))[:])
+ chk(err)
+ }
+}
+
+func (obj *ToCltFormspecPrepend) deserialize(r io.Reader) {
+ var local234 []uint8
+ var local235 uint16
+ {
+ p := &local235
+ *p = read16(r)
+ }
+ (local234) = make([]uint8, local235)
+ {
+ _, err := io.ReadFull(r, (local234)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Prepend string
+ }))(obj)).Prepend) = string(local234)
+}
+
+func (obj *AOCmdProps) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Props AOProps
+ }))(obj)).Props).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOProps", err))
+ }
+}
+
+func (obj *AOCmdProps) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Props AOProps
+ }))(obj)).Props).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOProps", err))
+ }
+}
+
+func (obj *AOCmdPos) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Pos AOPos
+ }))(obj)).Pos).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOPos", err))
+ }
+}
+
+func (obj *AOCmdPos) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Pos AOPos
+ }))(obj)).Pos).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOPos", err))
+ }
+}
+
+func (obj *AOCmdTextureMod) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Mod Texture // suffix
+ }))(obj)).Mod).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+}
+
+func (obj *AOCmdTextureMod) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Mod Texture // suffix
+ }))(obj)).Mod).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+}
+
+func (obj *AOCmdSprite) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Sprite AOSprite
+ }))(obj)).Sprite).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOSprite", err))
+ }
+}
+
+func (obj *AOCmdSprite) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Sprite AOSprite
+ }))(obj)).Sprite).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOSprite", err))
+ }
+}
+
+func (obj *AOCmdHP) serialize(w io.Writer) {
+ {
+ x := (*(*(struct {
+ HP uint16
+ }))(obj)).HP
+ write16(w, uint16(x))
+ }
+}
+
+func (obj *AOCmdHP) deserialize(r io.Reader) {
+ {
+ p := &(*(*(struct {
+ HP uint16
+ }))(obj)).HP
+ *p = read16(r)
+ }
+}
+
+func (obj *AOCmdArmorGroups) serialize(w io.Writer) {
+ if len(((*(*(struct {
+ Armor []Group
+ }))(obj)).Armor)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Armor []Group
+ }))(obj)).Armor)))
+ write16(w, uint16(x))
+ }
+ for local236 := range (*(*(struct {
+ Armor []Group
+ }))(obj)).Armor {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Armor []Group
+ }))(obj)).Armor)[local236]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Group", err))
+ }
+ }
+}
+
+func (obj *AOCmdArmorGroups) deserialize(r io.Reader) {
+ var local237 uint16
+ {
+ p := &local237
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Armor []Group
+ }))(obj)).Armor) = make([]Group, local237)
+ for local238 := range (*(*(struct {
+ Armor []Group
+ }))(obj)).Armor {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Armor []Group
+ }))(obj)).Armor)[local238]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Group", err))
+ }
+ }
+}
+
+func (obj *AOCmdAnim) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Anim AOAnim
+ }))(obj)).Anim).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOAnim", err))
+ }
+}
+
+func (obj *AOCmdAnim) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Anim AOAnim
+ }))(obj)).Anim).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOAnim", err))
+ }
+}
+
+func (obj *AOCmdBonePos) serialize(w io.Writer) {
+ if len(([]byte((*(*(struct {
+ Bone string
+ Pos AOBonePos
+ }))(obj)).Bone))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Bone string
+ Pos AOBonePos
+ }))(obj)).Bone))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Bone string
+ Pos AOBonePos
+ }))(obj)).Bone))[:])
+ chk(err)
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Bone string
+ Pos AOBonePos
+ }))(obj)).Pos).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOBonePos", err))
+ }
+}
+
+func (obj *AOCmdBonePos) deserialize(r io.Reader) {
+ var local239 []uint8
+ var local240 uint16
+ {
+ p := &local240
+ *p = read16(r)
+ }
+ (local239) = make([]uint8, local240)
+ {
+ _, err := io.ReadFull(r, (local239)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Bone string
+ Pos AOBonePos
+ }))(obj)).Bone) = string(local239)
+ if err := pcall(func() {
+ ((*(*(struct {
+ Bone string
+ Pos AOBonePos
+ }))(obj)).Pos).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOBonePos", err))
+ }
+}
+
+func (obj *AOCmdAttach) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Attach AOAttach
+ }))(obj)).Attach).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOAttach", err))
+ }
+}
+
+func (obj *AOCmdAttach) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Attach AOAttach
+ }))(obj)).Attach).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOAttach", err))
+ }
+}
+
+func (obj *AOCmdPhysOverride) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Phys AOPhysOverride
+ }))(obj)).Phys).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOPhysOverride", err))
+ }
+}
+
+func (obj *AOCmdPhysOverride) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Phys AOPhysOverride
+ }))(obj)).Phys).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOPhysOverride", err))
+ }
+}
+
+func (obj *AOCmdSpawnInfant) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID AOID
+ }))(obj)).ID).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOID", err))
+ }
+ {
+ local241 := genericCAO
+ if err := pcall(func() {
+ (local241).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.aoType", err))
+ }
+ }
+}
+
+func (obj *AOCmdSpawnInfant) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID AOID
+ }))(obj)).ID).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOID", err))
+ }
+ {
+ var local242 aoType
+ if err := pcall(func() {
+ (local242).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.aoType", err))
+ }
+ if local242 != (101) {
+ chk(fmt.Errorf("const %v: %v", 101, local242))
+ }
+ }
+}
+
+func (obj *AOCmdAnimSpeed) serialize(w io.Writer) {
+ {
+ x := (*(*(struct {
+ Speed float32
+ }))(obj)).Speed
+ write32(w, math.Float32bits(x))
+ }
+}
+
+func (obj *AOCmdAnimSpeed) deserialize(r io.Reader) {
+ {
+ p := &(*(*(struct {
+ Speed float32
+ }))(obj)).Speed
+ *p = math.Float32frombits(read32(r))
+ }
+}
+
+func (obj *NodeMeta) serialize(w io.Writer) {
+ if len(((*(*(struct {
+ //mt:len32
+ Fields []NodeMetaField
+
+ Inv Inv
+ }))(obj)).Fields)) > math.MaxUint32 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint32(len(((*(*(struct {
+ //mt:len32
+ Fields []NodeMetaField
+
+ Inv Inv
+ }))(obj)).Fields)))
+ write32(w, uint32(x))
+ }
+ for local243 := range (*(*(struct {
+ //mt:len32
+ Fields []NodeMetaField
+
+ Inv Inv
+ }))(obj)).Fields {
+ if err := pcall(func() {
+ (((*(*(struct {
+ //mt:len32
+ Fields []NodeMetaField
+
+ Inv Inv
+ }))(obj)).Fields)[local243]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.NodeMetaField", err))
+ }
+ }
+ chk(((*(*(struct {
+ //mt:len32
+ Fields []NodeMetaField
+
+ Inv Inv
+ }))(obj)).Inv).Serialize(w))
+}
+
+func (obj *NodeMeta) deserialize(r io.Reader) {
+ var local244 uint32
+ {
+ p := &local244
+ *p = read32(r)
+ }
+ ((*(*(struct {
+ //mt:len32
+ Fields []NodeMetaField
+
+ Inv Inv
+ }))(obj)).Fields) = make([]NodeMetaField, local244)
+ for local245 := range (*(*(struct {
+ //mt:len32
+ Fields []NodeMetaField
+
+ Inv Inv
+ }))(obj)).Fields {
+ if err := pcall(func() {
+ (((*(*(struct {
+ //mt:len32
+ Fields []NodeMetaField
+
+ Inv Inv
+ }))(obj)).Fields)[local245]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.NodeMetaField", err))
+ }
+ }
+ chk(((*(*(struct {
+ //mt:len32
+ Fields []NodeMetaField
+
+ Inv Inv
+ }))(obj)).Inv).Deserialize(r))
+}
+
+func (obj *MinimapMode) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type MinimapType
+ Label string
+ Size uint16
+ Texture
+ Scale uint16
+ }))(obj)).Type).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.MinimapType", err))
+ }
+ if len(([]byte((*(*(struct {
+ Type MinimapType
+ Label string
+ Size uint16
+ Texture
+ Scale uint16
+ }))(obj)).Label))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Type MinimapType
+ Label string
+ Size uint16
+ Texture
+ Scale uint16
+ }))(obj)).Label))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Type MinimapType
+ Label string
+ Size uint16
+ Texture
+ Scale uint16
+ }))(obj)).Label))[:])
+ chk(err)
+ }
+ {
+ x := (*(*(struct {
+ Type MinimapType
+ Label string
+ Size uint16
+ Texture
+ Scale uint16
+ }))(obj)).Size
+ write16(w, uint16(x))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type MinimapType
+ Label string
+ Size uint16
+ Texture
+ Scale uint16
+ }))(obj)).Texture).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ {
+ x := (*(*(struct {
+ Type MinimapType
+ Label string
+ Size uint16
+ Texture
+ Scale uint16
+ }))(obj)).Scale
+ write16(w, uint16(x))
+ }
+}
+
+func (obj *MinimapMode) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type MinimapType
+ Label string
+ Size uint16
+ Texture
+ Scale uint16
+ }))(obj)).Type).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.MinimapType", err))
+ }
+ var local246 []uint8
+ var local247 uint16
+ {
+ p := &local247
+ *p = read16(r)
+ }
+ (local246) = make([]uint8, local247)
+ {
+ _, err := io.ReadFull(r, (local246)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Type MinimapType
+ Label string
+ Size uint16
+ Texture
+ Scale uint16
+ }))(obj)).Label) = string(local246)
+ {
+ p := &(*(*(struct {
+ Type MinimapType
+ Label string
+ Size uint16
+ Texture
+ Scale uint16
+ }))(obj)).Size
+ *p = read16(r)
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type MinimapType
+ Label string
+ Size uint16
+ Texture
+ Scale uint16
+ }))(obj)).Texture).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ {
+ p := &(*(*(struct {
+ Type MinimapType
+ Label string
+ Size uint16
+ Texture
+ Scale uint16
+ }))(obj)).Scale
+ *p = read16(r)
+ }
+}
+
+func (obj *NodeDef) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Param0).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Content", err))
+ }
+ {
+ ow := w
+ w := new(bytes.Buffer)
+ {
+ local248 := uint8(13)
+ {
+ x := local248
+ write8(w, uint8(x))
+ }
+ }
+ if len(([]byte((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Name))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Name))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Name))[:])
+ chk(err)
+ }
+ if len(((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Groups)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Groups)))
+ write16(w, uint16(x))
+ }
+ for local249 := range (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Groups {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Groups)[local249]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Group", err))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).P1Type).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Param1Type", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).P2Type).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Param2Type", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).DrawType).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.DrawType", err))
+ }
+ if len(([]byte((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Mesh))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Mesh))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Mesh))[:])
+ chk(err)
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Scale
+ write32(w, math.Float32bits(x))
+ }
+ {
+ local250 := uint8(6)
+ {
+ x := local250
+ write8(w, uint8(x))
+ }
+ }
+ for local251 := range (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Tiles {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Tiles)[local251]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.TileDef", err))
+ }
+ }
+ for local252 := range (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).OverlayTiles {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).OverlayTiles)[local252]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.TileDef", err))
+ }
+ }
+ {
+ local253 := uint8(6)
+ {
+ x := local253
+ write8(w, uint8(x))
+ }
+ }
+ for local254 := range (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).SpecialTiles {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).SpecialTiles)[local254]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.TileDef", err))
+ }
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Color
+ w.Write([]byte{x.A, x.R, x.G, x.B})
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Palette).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Waving).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.WaveType", err))
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).ConnectSides
+ write8(w, uint8(x))
+ }
+ if len(((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).ConnectTo)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).ConnectTo)))
+ write16(w, uint16(x))
+ }
+ for local255 := range (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).ConnectTo {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).ConnectTo)[local255]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Content", err))
+ }
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).InsideTint
+ w.Write([]byte{x.A, x.R, x.G, x.B})
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Level
+ write8(w, uint8(x))
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Translucent
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Transparent
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).LightSrc
+ write8(w, uint8(x))
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).GndContent
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Collides
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Pointable
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Diggable
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Climbable
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Replaceable
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).OnRightClick
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).DmgPerSec
+ write32(w, uint32(x))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).LiquidType).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.LiquidType", err))
+ }
+ if len(([]byte((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).FlowingAlt))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).FlowingAlt))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).FlowingAlt))[:])
+ chk(err)
+ }
+ if len(([]byte((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).SrcAlt))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).SrcAlt))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).SrcAlt))[:])
+ chk(err)
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Viscosity
+ write8(w, uint8(x))
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).LiqRenewable
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).FlowRange
+ write8(w, uint8(x))
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).DrownDmg
+ write8(w, uint8(x))
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Floodable
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).DrawBox).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.NodeBox", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).ColBox).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.NodeBox", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).SelBox).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.NodeBox", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).FootstepSnd).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.SoundDef", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).DiggingSnd).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.SoundDef", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).DugSnd).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.SoundDef", err))
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).LegacyFaceDir
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).LegacyMounted
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ if len(([]byte((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).DigPredict))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).DigPredict))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).DigPredict))[:])
+ chk(err)
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).MaxLvl
+ write8(w, uint8(x))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).AlphaUse).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AlphaUse", err))
+ }
+ {
+ buf := w
+ w := ow
+ if len((buf.Bytes())) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len((buf.Bytes())))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write((buf.Bytes())[:])
+ chk(err)
+ }
+ }
+ }
+}
+
+func (obj *NodeDef) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Param0).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Content", err))
+ }
+ {
+ var n uint16
+ {
+ p := &n
+ *p = read16(r)
+ }
+ r := &io.LimitedReader{r, int64(n)}
+ {
+ var local256 uint8
+ {
+ p := &local256
+ *p = read8(r)
+ }
+ if local256 != (13) {
+ chk(fmt.Errorf("const %v: %v", 13, local256))
+ }
+ }
+ var local257 []uint8
+ var local258 uint16
+ {
+ p := &local258
+ *p = read16(r)
+ }
+ (local257) = make([]uint8, local258)
+ {
+ _, err := io.ReadFull(r, (local257)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Name) = string(local257)
+ var local259 uint16
+ {
+ p := &local259
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Groups) = make([]Group, local259)
+ for local260 := range (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Groups {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Groups)[local260]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Group", err))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).P1Type).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Param1Type", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).P2Type).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Param2Type", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).DrawType).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.DrawType", err))
+ }
+ var local261 []uint8
+ var local262 uint16
+ {
+ p := &local262
+ *p = read16(r)
+ }
+ (local261) = make([]uint8, local262)
+ {
+ _, err := io.ReadFull(r, (local261)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Mesh) = string(local261)
+ {
+ p := &(*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Scale
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ var local263 uint8
+ {
+ p := &local263
+ *p = read8(r)
+ }
+ if local263 != (6) {
+ chk(fmt.Errorf("const %v: %v", 6, local263))
+ }
+ }
+ for local264 := range (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Tiles {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Tiles)[local264]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.TileDef", err))
+ }
+ }
+ for local265 := range (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).OverlayTiles {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).OverlayTiles)[local265]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.TileDef", err))
+ }
+ }
+ {
+ var local266 uint8
+ {
+ p := &local266
+ *p = read8(r)
+ }
+ if local266 != (6) {
+ chk(fmt.Errorf("const %v: %v", 6, local266))
+ }
+ }
+ for local267 := range (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).SpecialTiles {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).SpecialTiles)[local267]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.TileDef", err))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Color
+ *p = color.NRGBA{A: read8(r), R: read8(r), G: read8(r), B: read8(r)}
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Palette).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Waving).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.WaveType", err))
+ }
+ {
+ p := &(*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).ConnectSides
+ *p = read8(r)
+ }
+ var local268 uint16
+ {
+ p := &local268
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).ConnectTo) = make([]Content, local268)
+ for local269 := range (*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).ConnectTo {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).ConnectTo)[local269]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Content", err))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).InsideTint
+ *p = color.NRGBA{A: read8(r), R: read8(r), G: read8(r), B: read8(r)}
+ }
+ {
+ p := &(*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Level
+ *p = read8(r)
+ }
+ {
+ p := &(*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Translucent
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Transparent
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).LightSrc
+ *p = read8(r)
+ }
+ {
+ p := &(*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).GndContent
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Collides
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Pointable
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Diggable
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Climbable
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Replaceable
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).OnRightClick
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).DmgPerSec
+ *p = int32(read32(r))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).LiquidType).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.LiquidType", err))
+ }
+ var local270 []uint8
+ var local271 uint16
+ {
+ p := &local271
+ *p = read16(r)
+ }
+ (local270) = make([]uint8, local271)
+ {
+ _, err := io.ReadFull(r, (local270)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).FlowingAlt) = string(local270)
+ var local272 []uint8
+ var local273 uint16
+ {
+ p := &local273
+ *p = read16(r)
+ }
+ (local272) = make([]uint8, local273)
+ {
+ _, err := io.ReadFull(r, (local272)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).SrcAlt) = string(local272)
+ {
+ p := &(*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Viscosity
+ *p = read8(r)
+ }
+ {
+ p := &(*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).LiqRenewable
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).FlowRange
+ *p = read8(r)
+ }
+ {
+ p := &(*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).DrownDmg
+ *p = read8(r)
+ }
+ {
+ p := &(*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).Floodable
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).DrawBox).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.NodeBox", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).ColBox).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.NodeBox", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).SelBox).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.NodeBox", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).FootstepSnd).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.SoundDef", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).DiggingSnd).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.SoundDef", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).DugSnd).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.SoundDef", err))
+ }
+ {
+ p := &(*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).LegacyFaceDir
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).LegacyMounted
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ var local274 []uint8
+ var local275 uint16
+ {
+ p := &local275
+ *p = read16(r)
+ }
+ (local274) = make([]uint8, local275)
+ {
+ _, err := io.ReadFull(r, (local274)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).DigPredict) = string(local274)
+ {
+ p := &(*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).MaxLvl
+ *p = read8(r)
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+
+ Name string
+ Groups []Group
+
+ P1Type Param1Type
+ P2Type Param2Type
+ DrawType DrawType
+
+ Mesh string
+ Scale float32
+ //mt:const uint8(6)
+ Tiles [6]TileDef
+ OverlayTiles [6]TileDef
+ //mt:const uint8(6)
+ SpecialTiles [6]TileDef
+
+ Color color.NRGBA
+ Palette Texture
+
+ Waving WaveType
+ ConnectSides uint8
+ ConnectTo []Content
+ InsideTint color.NRGBA
+ Level uint8 // Must be < 128.
+
+ Translucent bool // Sunlight is scattered and becomes normal light.
+ Transparent bool // Sunlight isn't scattered.
+ LightSrc uint8
+
+ GndContent bool
+ Collides bool
+ Pointable bool
+ Diggable bool
+ Climbable bool
+ Replaceable bool
+ OnRightClick bool
+
+ DmgPerSec int32
+
+ LiquidType LiquidType
+ FlowingAlt string
+ SrcAlt string
+ Viscosity uint8 // 0-7
+ LiqRenewable bool
+ FlowRange uint8
+ DrownDmg uint8
+ Floodable bool
+
+ DrawBox, ColBox, SelBox NodeBox
+
+ FootstepSnd, DiggingSnd, DugSnd SoundDef
+
+ LegacyFaceDir bool
+ LegacyMounted bool
+
+ DigPredict string
+
+ MaxLvl uint8
+
+ AlphaUse
+ }))(obj)).AlphaUse).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AlphaUse", err))
+ }
+ if r.N > 0 {
+ chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ }
+ }
+}
+
+func (obj *PointedNode) serialize(w io.Writer) {
+ for local276 := range (*(*(struct {
+ Under, Above [3]int16
+ }))(obj)).Under {
+ {
+ x := ((*(*(struct {
+ Under, Above [3]int16
+ }))(obj)).Under)[local276]
+ write16(w, uint16(x))
+ }
+ }
+ for local277 := range (*(*(struct {
+ Under, Above [3]int16
+ }))(obj)).Above {
+ {
+ x := ((*(*(struct {
+ Under, Above [3]int16
+ }))(obj)).Above)[local277]
+ write16(w, uint16(x))
+ }
+ }
+}
+
+func (obj *PointedNode) deserialize(r io.Reader) {
+ for local278 := range (*(*(struct {
+ Under, Above [3]int16
+ }))(obj)).Under {
+ {
+ p := &((*(*(struct {
+ Under, Above [3]int16
+ }))(obj)).Under)[local278]
+ *p = int16(read16(r))
+ }
+ }
+ for local279 := range (*(*(struct {
+ Under, Above [3]int16
+ }))(obj)).Above {
+ {
+ p := &((*(*(struct {
+ Under, Above [3]int16
+ }))(obj)).Above)[local279]
+ *p = int16(read16(r))
+ }
+ }
+}
+
+func (obj *PointedAO) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID AOID
+ }))(obj)).ID).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOID", err))
+ }
+}
+
+func (obj *PointedAO) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID AOID
+ }))(obj)).ID).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOID", err))
+ }
+}
+
+func (obj *CompressionModes) serialize(w io.Writer) {
+ {
+ x := *(*(uint16))(obj)
+ write16(w, uint16(x))
+ }
+}
+
+func (obj *CompressionModes) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint16))(obj)
+ *p = read16(r)
+ }
+}
+
+func (obj *PlayerPos) serialize(w io.Writer) {
+ for local280 := range (*(*(struct {
+ Pos100, Vel100 [3]int32
+ Pitch100, Yaw100 int32
+ Keys Keys
+ FOV80 uint8
+ WantedRange uint8 // in MapBlks.
+ }))(obj)).Pos100 {
+ {
+ x := ((*(*(struct {
+ Pos100, Vel100 [3]int32
+ Pitch100, Yaw100 int32
+ Keys Keys
+ FOV80 uint8
+ WantedRange uint8 // in MapBlks.
+ }))(obj)).Pos100)[local280]
+ write32(w, uint32(x))
+ }
+ }
+ for local281 := range (*(*(struct {
+ Pos100, Vel100 [3]int32
+ Pitch100, Yaw100 int32
+ Keys Keys
+ FOV80 uint8
+ WantedRange uint8 // in MapBlks.
+ }))(obj)).Vel100 {
+ {
+ x := ((*(*(struct {
+ Pos100, Vel100 [3]int32
+ Pitch100, Yaw100 int32
+ Keys Keys
+ FOV80 uint8
+ WantedRange uint8 // in MapBlks.
+ }))(obj)).Vel100)[local281]
+ write32(w, uint32(x))
+ }
+ }
+ {
+ x := (*(*(struct {
+ Pos100, Vel100 [3]int32
+ Pitch100, Yaw100 int32
+ Keys Keys
+ FOV80 uint8
+ WantedRange uint8 // in MapBlks.
+ }))(obj)).Pitch100
+ write32(w, uint32(x))
+ }
+ {
+ x := (*(*(struct {
+ Pos100, Vel100 [3]int32
+ Pitch100, Yaw100 int32
+ Keys Keys
+ FOV80 uint8
+ WantedRange uint8 // in MapBlks.
+ }))(obj)).Yaw100
+ write32(w, uint32(x))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Pos100, Vel100 [3]int32
+ Pitch100, Yaw100 int32
+ Keys Keys
+ FOV80 uint8
+ WantedRange uint8 // in MapBlks.
+ }))(obj)).Keys).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Keys", err))
+ }
+ {
+ x := (*(*(struct {
+ Pos100, Vel100 [3]int32
+ Pitch100, Yaw100 int32
+ Keys Keys
+ FOV80 uint8
+ WantedRange uint8 // in MapBlks.
+ }))(obj)).FOV80
+ write8(w, uint8(x))
+ }
+ {
+ x := (*(*(struct {
+ Pos100, Vel100 [3]int32
+ Pitch100, Yaw100 int32
+ Keys Keys
+ FOV80 uint8
+ WantedRange uint8 // in MapBlks.
+ }))(obj)).WantedRange
+ write8(w, uint8(x))
+ }
+}
+
+func (obj *PlayerPos) deserialize(r io.Reader) {
+ for local282 := range (*(*(struct {
+ Pos100, Vel100 [3]int32
+ Pitch100, Yaw100 int32
+ Keys Keys
+ FOV80 uint8
+ WantedRange uint8 // in MapBlks.
+ }))(obj)).Pos100 {
+ {
+ p := &((*(*(struct {
+ Pos100, Vel100 [3]int32
+ Pitch100, Yaw100 int32
+ Keys Keys
+ FOV80 uint8
+ WantedRange uint8 // in MapBlks.
+ }))(obj)).Pos100)[local282]
+ *p = int32(read32(r))
+ }
+ }
+ for local283 := range (*(*(struct {
+ Pos100, Vel100 [3]int32
+ Pitch100, Yaw100 int32
+ Keys Keys
+ FOV80 uint8
+ WantedRange uint8 // in MapBlks.
+ }))(obj)).Vel100 {
+ {
+ p := &((*(*(struct {
+ Pos100, Vel100 [3]int32
+ Pitch100, Yaw100 int32
+ Keys Keys
+ FOV80 uint8
+ WantedRange uint8 // in MapBlks.
+ }))(obj)).Vel100)[local283]
+ *p = int32(read32(r))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Pos100, Vel100 [3]int32
+ Pitch100, Yaw100 int32
+ Keys Keys
+ FOV80 uint8
+ WantedRange uint8 // in MapBlks.
+ }))(obj)).Pitch100
+ *p = int32(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ Pos100, Vel100 [3]int32
+ Pitch100, Yaw100 int32
+ Keys Keys
+ FOV80 uint8
+ WantedRange uint8 // in MapBlks.
+ }))(obj)).Yaw100
+ *p = int32(read32(r))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Pos100, Vel100 [3]int32
+ Pitch100, Yaw100 int32
+ Keys Keys
+ FOV80 uint8
+ WantedRange uint8 // in MapBlks.
+ }))(obj)).Keys).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Keys", err))
+ }
+ {
+ p := &(*(*(struct {
+ Pos100, Vel100 [3]int32
+ Pitch100, Yaw100 int32
+ Keys Keys
+ FOV80 uint8
+ WantedRange uint8 // in MapBlks.
+ }))(obj)).FOV80
+ *p = read8(r)
+ }
+ {
+ p := &(*(*(struct {
+ Pos100, Vel100 [3]int32
+ Pitch100, Yaw100 int32
+ Keys Keys
+ FOV80 uint8
+ WantedRange uint8 // in MapBlks.
+ }))(obj)).WantedRange
+ *p = read8(r)
+ }
+}
+
+func (obj *Interaction) serialize(w io.Writer) {
+ {
+ x := *(*(uint8))(obj)
+ write8(w, uint8(x))
+ }
+}
+
+func (obj *Interaction) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint8))(obj)
+ *p = read8(r)
+ }
+}
+
+func (obj *SoundID) serialize(w io.Writer) {
+ {
+ x := *(*(int32))(obj)
+ write32(w, uint32(x))
+ }
+}
+
+func (obj *SoundID) deserialize(r io.Reader) {
+ {
+ p := &*(*(int32))(obj)
+ *p = int32(read32(r))
+ }
+}
+
+func (obj *Field) serialize(w io.Writer) {
+ if len(([]byte((*(*(struct {
+ Name string
+
+ //mt:len32
+ Value string
+ }))(obj)).Name))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Name string
+
+ //mt:len32
+ Value string
+ }))(obj)).Name))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Name string
+
+ //mt:len32
+ Value string
+ }))(obj)).Name))[:])
+ chk(err)
+ }
+ if len(([]byte((*(*(struct {
+ Name string
+
+ //mt:len32
+ Value string
+ }))(obj)).Value))) > math.MaxUint32 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint32(len(([]byte((*(*(struct {
+ Name string
+
+ //mt:len32
+ Value string
+ }))(obj)).Value))))
+ write32(w, uint32(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Name string
+
+ //mt:len32
+ Value string
+ }))(obj)).Value))[:])
+ chk(err)
+ }
+}
+
+func (obj *Field) deserialize(r io.Reader) {
+ var local284 []uint8
+ var local285 uint16
+ {
+ p := &local285
+ *p = read16(r)
+ }
+ (local284) = make([]uint8, local285)
+ {
+ _, err := io.ReadFull(r, (local284)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Name string
+
+ //mt:len32
+ Value string
+ }))(obj)).Name) = string(local284)
+ var local286 []uint8
+ var local287 uint32
+ {
+ p := &local287
+ *p = read32(r)
+ }
+ (local286) = make([]uint8, local287)
+ {
+ _, err := io.ReadFull(r, (local286)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Name string
+
+ //mt:len32
+ Value string
+ }))(obj)).Value) = string(local286)
+}
+
+func (obj *AuthMethods) serialize(w io.Writer) {
+ {
+ x := *(*(uint32))(obj)
+ write32(w, uint32(x))
+ }
+}
+
+func (obj *AuthMethods) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint32))(obj)
+ *p = read32(r)
+ }
+}
+
+func (obj *Pos) serialize(w io.Writer) {
+ if err := pcall(func() {
+ (*(*(Vec))(obj)).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Vec", err))
+ }
+}
+
+func (obj *Pos) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ (*(*(Vec))(obj)).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Vec", err))
+ }
+}
+
+func (obj *DiscoReason) serialize(w io.Writer) {
+ {
+ x := *(*(uint8))(obj)
+ write8(w, uint8(x))
+ }
+}
+
+func (obj *DiscoReason) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint8))(obj)
+ *p = read8(r)
+ }
+}
+
+func (obj *MapBlk) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Flags MapBlkFlags
+ LitFrom LitFromBlks
+
+ //mt:zlib
+ Param0 [4096]Content
+ Param1 [4096]uint8
+ Param2 [4096]uint8
+
+ NodeMetas map[uint16]*NodeMeta
+ }))(obj)).Flags).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.MapBlkFlags", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Flags MapBlkFlags
+ LitFrom LitFromBlks
+
+ //mt:zlib
+ Param0 [4096]Content
+ Param1 [4096]uint8
+ Param2 [4096]uint8
+
+ NodeMetas map[uint16]*NodeMeta
+ }))(obj)).LitFrom).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.LitFromBlks", err))
+ }
+ {
+ local288 := uint8(2) // Size of param0 in bytes.
+ {
+ x := local288
+ write8(w, uint8(x))
+ }
+ }
+ {
+ local289 := uint8(1 + 1) // Size of param1 and param2 combined, in bytes.
+ {
+ x := local289
+ write8(w, uint8(x))
+ }
+ }
+ {
+ w := zlib.NewWriter(w)
+ for local290 := range (*(*(struct {
+ Flags MapBlkFlags
+ LitFrom LitFromBlks
+
+ //mt:zlib
+ Param0 [4096]Content
+ Param1 [4096]uint8
+ Param2 [4096]uint8
+
+ NodeMetas map[uint16]*NodeMeta
+ }))(obj)).Param0 {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Flags MapBlkFlags
+ LitFrom LitFromBlks
+
+ //mt:zlib
+ Param0 [4096]Content
+ Param1 [4096]uint8
+ Param2 [4096]uint8
+
+ NodeMetas map[uint16]*NodeMeta
+ }))(obj)).Param0)[local290]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Content", err))
+ }
+ }
+ {
+ _, err := w.Write(((*(*(struct {
+ Flags MapBlkFlags
+ LitFrom LitFromBlks
+
+ //mt:zlib
+ Param0 [4096]Content
+ Param1 [4096]uint8
+ Param2 [4096]uint8
+
+ NodeMetas map[uint16]*NodeMeta
+ }))(obj)).Param1)[:])
+ chk(err)
+ }
+ {
+ _, err := w.Write(((*(*(struct {
+ Flags MapBlkFlags
+ LitFrom LitFromBlks
+
+ //mt:zlib
+ Param0 [4096]Content
+ Param1 [4096]uint8
+ Param2 [4096]uint8
+
+ NodeMetas map[uint16]*NodeMeta
+ }))(obj)).Param2)[:])
+ chk(err)
+ }
+ chk(w.Close())
+ }
+ {
+ x := (*(*(struct {
+ Flags MapBlkFlags
+ LitFrom LitFromBlks
+
+ //mt:zlib
+ Param0 [4096]Content
+ Param1 [4096]uint8
+ Param2 [4096]uint8
+
+ NodeMetas map[uint16]*NodeMeta
+ }))(obj)).NodeMetas
+ {
+ w := zlib.NewWriter(w)
+ if x == nil {
+ write8(w, 0)
+ } else {
+ write8(w, 2)
+ if len(x) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ write16(w, uint16(len(x)))
+ keys := make([]uint16, 0, len(x))
+ for key := range x {
+ keys = append(keys, key)
+ }
+ sort.Slice(keys, func(i, j int) bool {
+ i2pos := func(i int) [3]int16 {
+ return Blkpos2Pos([3]int16{}, keys[i])
+ }
+ p, q := i2pos(i), i2pos(j)
+ for i := range p {
+ switch {
+ case p[i] < q[i]:
+ return true
+ case p[i] > q[i]:
+ return false
+ }
+ }
+ return false
+ })
+ for _, key := range keys {
+ write16(w, key)
+ chk(serialize(w, x[key]))
+ }
+ }
+ chk(w.Close())
+ }
+ }
+ {
+ local291 := uint8(2) // version
+ {
+ x := local291
+ write8(w, uint8(x))
+ }
+ }
+}
+
+func (obj *MapBlk) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Flags MapBlkFlags
+ LitFrom LitFromBlks
+
+ //mt:zlib
+ Param0 [4096]Content
+ Param1 [4096]uint8
+ Param2 [4096]uint8
+
+ NodeMetas map[uint16]*NodeMeta
+ }))(obj)).Flags).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.MapBlkFlags", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Flags MapBlkFlags
+ LitFrom LitFromBlks
+
+ //mt:zlib
+ Param0 [4096]Content
+ Param1 [4096]uint8
+ Param2 [4096]uint8
+
+ NodeMetas map[uint16]*NodeMeta
+ }))(obj)).LitFrom).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.LitFromBlks", err))
+ }
+ {
+ var local292 uint8
+ {
+ p := &local292
+ *p = read8(r)
+ }
+ if local292 != (2) {
+ chk(fmt.Errorf("const %v: %v", 2, local292))
+ }
+ }
+ {
+ var local293 uint8
+ {
+ p := &local293
+ *p = read8(r)
+ }
+ if local293 != (2) {
+ chk(fmt.Errorf("const %v: %v", 2, local293))
+ }
+ }
+ {
+ r, err := zlib.NewReader(byteReader{r})
+ chk(err)
+ for local294 := range (*(*(struct {
+ Flags MapBlkFlags
+ LitFrom LitFromBlks
+
+ //mt:zlib
+ Param0 [4096]Content
+ Param1 [4096]uint8
+ Param2 [4096]uint8
+
+ NodeMetas map[uint16]*NodeMeta
+ }))(obj)).Param0 {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Flags MapBlkFlags
+ LitFrom LitFromBlks
+
+ //mt:zlib
+ Param0 [4096]Content
+ Param1 [4096]uint8
+ Param2 [4096]uint8
+
+ NodeMetas map[uint16]*NodeMeta
+ }))(obj)).Param0)[local294]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Content", err))
+ }
+ }
+ {
+ _, err := io.ReadFull(r, ((*(*(struct {
+ Flags MapBlkFlags
+ LitFrom LitFromBlks
+
+ //mt:zlib
+ Param0 [4096]Content
+ Param1 [4096]uint8
+ Param2 [4096]uint8
+
+ NodeMetas map[uint16]*NodeMeta
+ }))(obj)).Param1)[:])
+ chk(err)
+ }
+ {
+ _, err := io.ReadFull(r, ((*(*(struct {
+ Flags MapBlkFlags
+ LitFrom LitFromBlks
+
+ //mt:zlib
+ Param0 [4096]Content
+ Param1 [4096]uint8
+ Param2 [4096]uint8
+
+ NodeMetas map[uint16]*NodeMeta
+ }))(obj)).Param2)[:])
+ chk(err)
+ }
+ chk(r.Close())
+ }
+ {
+ p := &(*(*(struct {
+ Flags MapBlkFlags
+ LitFrom LitFromBlks
+
+ //mt:zlib
+ Param0 [4096]Content
+ Param1 [4096]uint8
+ Param2 [4096]uint8
+
+ NodeMetas map[uint16]*NodeMeta
+ }))(obj)).NodeMetas
+ {
+ r, err := zlib.NewReader(byteReader{r})
+ chk(err)
+ switch ver := read8(r); ver {
+ case 0:
+ *p = nil
+ case 2:
+ n := read16(r)
+ *p = make(map[uint16]*NodeMeta, n)
+ for ; n > 0; n-- {
+ pos := read16(r)
+ nm := new(NodeMeta)
+ chk(deserialize(r, nm))
+ (*p)[pos] = nm
+ }
+ default:
+ chk(fmt.Errorf("unsupported nodemetas version: %d", ver))
+ }
+ chk(r.Close())
+ }
+ }
+ {
+ var local295 uint8
+ {
+ p := &local295
+ *p = read8(r)
+ }
+ if local295 != (2) {
+ chk(fmt.Errorf("const %v: %v", 2, local295))
+ }
+ }
+}
+
+func (obj *Node) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+ Param1, Param2 uint8
+ }))(obj)).Param0).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Content", err))
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+ Param1, Param2 uint8
+ }))(obj)).Param1
+ write8(w, uint8(x))
+ }
+ {
+ x := (*(*(struct {
+ Param0 Content
+ Param1, Param2 uint8
+ }))(obj)).Param2
+ write8(w, uint8(x))
+ }
+}
+
+func (obj *Node) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Param0 Content
+ Param1, Param2 uint8
+ }))(obj)).Param0).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Content", err))
+ }
+ {
+ p := &(*(*(struct {
+ Param0 Content
+ Param1, Param2 uint8
+ }))(obj)).Param1
+ *p = read8(r)
+ }
+ {
+ p := &(*(*(struct {
+ Param0 Content
+ Param1, Param2 uint8
+ }))(obj)).Param2
+ *p = read8(r)
+ }
+}
+
+func (obj *CSMRestrictionFlags) serialize(w io.Writer) {
+ {
+ x := *(*(uint64))(obj)
+ write64(w, uint64(x))
+ }
+}
+
+func (obj *CSMRestrictionFlags) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint64))(obj)
+ *p = read64(r)
+ }
+}
+
+func (obj *Vec) serialize(w io.Writer) {
+ for local296 := range *(*([3]float32))(obj) {
+ {
+ x := (*(*([3]float32))(obj))[local296]
+ write32(w, math.Float32bits(x))
+ }
+ }
+}
+
+func (obj *Vec) deserialize(r io.Reader) {
+ for local297 := range *(*([3]float32))(obj) {
+ {
+ p := &(*(*([3]float32))(obj))[local297]
+ *p = math.Float32frombits(read32(r))
+ }
+ }
+}
+
+func (obj *ChatMsgType) serialize(w io.Writer) {
+ {
+ x := *(*(uint8))(obj)
+ write8(w, uint8(x))
+ }
+}
+
+func (obj *ChatMsgType) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint8))(obj)
+ *p = read8(r)
+ }
+}
+
+func (obj *AOID) serialize(w io.Writer) {
+ {
+ x := *(*(uint16))(obj)
+ write16(w, uint16(x))
+ }
+}
+
+func (obj *AOID) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint16))(obj)
+ *p = read16(r)
+ }
+}
+
+func (obj *aoType) serialize(w io.Writer) {
+ {
+ x := *(*(uint8))(obj)
+ write8(w, uint8(x))
+ }
+}
+
+func (obj *aoType) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint8))(obj)
+ *p = read8(r)
+ }
+}
+
+func (obj *AOInitData) serialize(w io.Writer) {
+ {
+ local298 := uint8(1)
+ {
+ x := local298
+ write8(w, uint8(x))
+ }
+ }
+ if len(([]byte((*(*(struct {
+
+ // For players.
+ Name string
+ IsPlayer bool
+
+ ID AOID
+
+ Pos
+ Rot [3]float32
+
+ HP uint16
+
+ // See (de)serialize.fmt.
+ Msgs []AOMsg
+ }))(obj)).Name))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+
+ // For players.
+ Name string
+ IsPlayer bool
+
+ ID AOID
+
+ Pos
+ Rot [3]float32
+
+ HP uint16
+
+ // See (de)serialize.fmt.
+ Msgs []AOMsg
+ }))(obj)).Name))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+
+ // For players.
+ Name string
+ IsPlayer bool
+
+ ID AOID
+
+ Pos
+ Rot [3]float32
+
+ HP uint16
+
+ // See (de)serialize.fmt.
+ Msgs []AOMsg
+ }))(obj)).Name))[:])
+ chk(err)
+ }
+ {
+ x := (*(*(struct {
+
+ // For players.
+ Name string
+ IsPlayer bool
+
+ ID AOID
+
+ Pos
+ Rot [3]float32
+
+ HP uint16
+
+ // See (de)serialize.fmt.
+ Msgs []AOMsg
+ }))(obj)).IsPlayer
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+
+ // For players.
+ Name string
+ IsPlayer bool
+
+ ID AOID
+
+ Pos
+ Rot [3]float32
+
+ HP uint16
+
+ // See (de)serialize.fmt.
+ Msgs []AOMsg
+ }))(obj)).ID).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOID", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+
+ // For players.
+ Name string
+ IsPlayer bool
+
+ ID AOID
+
+ Pos
+ Rot [3]float32
+
+ HP uint16
+
+ // See (de)serialize.fmt.
+ Msgs []AOMsg
+ }))(obj)).Pos).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Pos", err))
+ }
+ for local299 := range (*(*(struct {
+
+ // For players.
+ Name string
+ IsPlayer bool
+
+ ID AOID
+
+ Pos
+ Rot [3]float32
+
+ HP uint16
+
+ // See (de)serialize.fmt.
+ Msgs []AOMsg
+ }))(obj)).Rot {
+ {
+ x := ((*(*(struct {
+
+ // For players.
+ Name string
+ IsPlayer bool
+
+ ID AOID
+
+ Pos
+ Rot [3]float32
+
+ HP uint16
+
+ // See (de)serialize.fmt.
+ Msgs []AOMsg
+ }))(obj)).Rot)[local299]
+ write32(w, math.Float32bits(x))
+ }
+ }
+ {
+ x := (*(*(struct {
+
+ // For players.
+ Name string
+ IsPlayer bool
+
+ ID AOID
+
+ Pos
+ Rot [3]float32
+
+ HP uint16
+
+ // See (de)serialize.fmt.
+ Msgs []AOMsg
+ }))(obj)).HP
+ write16(w, uint16(x))
+ }
+ {
+ x := (*(*(struct {
+
+ // For players.
+ Name string
+ IsPlayer bool
+
+ ID AOID
+
+ Pos
+ Rot [3]float32
+
+ HP uint16
+
+ // See (de)serialize.fmt.
+ Msgs []AOMsg
+ }))(obj)).Msgs
+ { // For AOInitData.Msgs
+ if len(x) > math.MaxUint8 {
+ chk(ErrTooLong)
+ }
+ write8(w, uint8(len(x)))
+ for _, msg := range x {
+ var b bytes.Buffer
+ chk(writeAOMsg(&b, msg))
+ if b.Len() > math.MaxUint32 {
+ chk(ErrTooLong)
+ }
+ write32(w, uint32(b.Len()))
+ _, err := b.WriteTo(w)
+ chk(err)
+ }
+ }
+ }
+}
+
+func (obj *AOInitData) deserialize(r io.Reader) {
+ {
+ var local300 uint8
+ {
+ p := &local300
+ *p = read8(r)
+ }
+ if local300 != (1) {
+ chk(fmt.Errorf("const %v: %v", 1, local300))
+ }
+ }
+ var local301 []uint8
+ var local302 uint16
+ {
+ p := &local302
+ *p = read16(r)
+ }
+ (local301) = make([]uint8, local302)
+ {
+ _, err := io.ReadFull(r, (local301)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+
+ // For players.
+ Name string
+ IsPlayer bool
+
+ ID AOID
+
+ Pos
+ Rot [3]float32
+
+ HP uint16
+
+ // See (de)serialize.fmt.
+ Msgs []AOMsg
+ }))(obj)).Name) = string(local301)
+ {
+ p := &(*(*(struct {
+
+ // For players.
+ Name string
+ IsPlayer bool
+
+ ID AOID
+
+ Pos
+ Rot [3]float32
+
+ HP uint16
+
+ // See (de)serialize.fmt.
+ Msgs []AOMsg
+ }))(obj)).IsPlayer
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+
+ // For players.
+ Name string
+ IsPlayer bool
+
+ ID AOID
+
+ Pos
+ Rot [3]float32
+
+ HP uint16
+
+ // See (de)serialize.fmt.
+ Msgs []AOMsg
+ }))(obj)).ID).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOID", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+
+ // For players.
+ Name string
+ IsPlayer bool
+
+ ID AOID
+
+ Pos
+ Rot [3]float32
+
+ HP uint16
+
+ // See (de)serialize.fmt.
+ Msgs []AOMsg
+ }))(obj)).Pos).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Pos", err))
+ }
+ for local303 := range (*(*(struct {
+
+ // For players.
+ Name string
+ IsPlayer bool
+
+ ID AOID
+
+ Pos
+ Rot [3]float32
+
+ HP uint16
+
+ // See (de)serialize.fmt.
+ Msgs []AOMsg
+ }))(obj)).Rot {
+ {
+ p := &((*(*(struct {
+
+ // For players.
+ Name string
+ IsPlayer bool
+
+ ID AOID
+
+ Pos
+ Rot [3]float32
+
+ HP uint16
+
+ // See (de)serialize.fmt.
+ Msgs []AOMsg
+ }))(obj)).Rot)[local303]
+ *p = math.Float32frombits(read32(r))
+ }
+ }
+ {
+ p := &(*(*(struct {
+
+ // For players.
+ Name string
+ IsPlayer bool
+
+ ID AOID
+
+ Pos
+ Rot [3]float32
+
+ HP uint16
+
+ // See (de)serialize.fmt.
+ Msgs []AOMsg
+ }))(obj)).HP
+ *p = read16(r)
+ }
+ {
+ p := &(*(*(struct {
+
+ // For players.
+ Name string
+ IsPlayer bool
+
+ ID AOID
+
+ Pos
+ Rot [3]float32
+
+ HP uint16
+
+ // See (de)serialize.fmt.
+ Msgs []AOMsg
+ }))(obj)).Msgs
+ { // For AOInitData.Msgs.
+ *p = make([]AOMsg, read8(r))
+ for i := range *p {
+ r := &io.LimitedReader{r, int64(read32(r))}
+ msg, err := readAOMsg(r)
+ chk(err)
+ (*p)[i] = msg
+ if r.N > 0 {
+ chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ }
+ }
+ }
+ }
+}
+
+func (obj *IDAOMsg) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID AOID
+ //mt:lenhdr 16
+ Msg AOMsg
+ }))(obj)).ID).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOID", err))
+ }
+ {
+ ow := w
+ w := new(bytes.Buffer)
+ {
+ x := (*(*(struct {
+ ID AOID
+ //mt:lenhdr 16
+ Msg AOMsg
+ }))(obj)).Msg
+ writeAOMsg(w, x)
+ }
+ {
+ buf := w
+ w := ow
+ if len((buf.Bytes())) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len((buf.Bytes())))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write((buf.Bytes())[:])
+ chk(err)
+ }
+ }
+ }
+}
+
+func (obj *IDAOMsg) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ ID AOID
+ //mt:lenhdr 16
+ Msg AOMsg
+ }))(obj)).ID).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOID", err))
+ }
+ {
+ var n uint16
+ {
+ p := &n
+ *p = read16(r)
+ }
+ r := &io.LimitedReader{r, int64(n)}
+ {
+ p := &(*(*(struct {
+ ID AOID
+ //mt:lenhdr 16
+ Msg AOMsg
+ }))(obj)).Msg
+ {
+ var err error
+ *p, err = readAOMsg(r)
+ chk(err)
+ }
+ }
+ if r.N > 0 {
+ chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ }
+ }
+}
+
+func (obj *ItemDef) serialize(w io.Writer) {
+ {
+ ow := w
+ w := new(bytes.Buffer)
+ {
+ local304 := uint8(6)
+ {
+ x := local304
+ write8(w, uint8(x))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).Type).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.ItemType", err))
+ }
+ if len(([]byte((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).Name))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).Name))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).Name))[:])
+ chk(err)
+ }
+ if len(([]byte((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).Desc))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).Desc))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).Desc))[:])
+ chk(err)
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).InvImg).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).WieldImg).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ for local305 := range (*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).WieldScale {
+ {
+ x := ((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).WieldScale)[local305]
+ write32(w, math.Float32bits(x))
+ }
+ }
+ {
+ x := (*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).StackMax
+ write16(w, uint16(x))
+ }
+ {
+ x := (*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).Usable
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).CanPointLiquids
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).ToolCaps).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.ToolCaps", err))
+ }
+ if len(((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).Groups)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).Groups)))
+ write16(w, uint16(x))
+ }
+ for local306 := range (*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).Groups {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).Groups)[local306]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Group", err))
+ }
+ }
+ if len(([]byte((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).PlacePredict))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).PlacePredict))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).PlacePredict))[:])
+ chk(err)
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).PlaceSnd).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.SoundDef", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).PlaceFailSnd).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.SoundDef", err))
+ }
+ {
+ x := (*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).PointRange
+ write32(w, math.Float32bits(x))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).Palette).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ {
+ x := (*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).Color
+ w.Write([]byte{x.A, x.R, x.G, x.B})
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).InvOverlay).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).WieldOverlay).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ if len(([]byte((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).ShortDesc))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).ShortDesc))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).ShortDesc))[:])
+ chk(err)
+ }
+ {
+ x := (*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).PlaceParam2
+ write8(w, uint8(x))
+ }
+ {
+ buf := w
+ w := ow
+ if len((buf.Bytes())) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len((buf.Bytes())))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write((buf.Bytes())[:])
+ chk(err)
+ }
+ }
+ }
+}
+
+func (obj *ItemDef) deserialize(r io.Reader) {
+ {
+ var n uint16
+ {
+ p := &n
+ *p = read16(r)
+ }
+ r := &io.LimitedReader{r, int64(n)}
+ {
+ var local307 uint8
+ {
+ p := &local307
+ *p = read8(r)
+ }
+ if local307 != (6) {
+ chk(fmt.Errorf("const %v: %v", 6, local307))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).Type).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.ItemType", err))
+ }
+ var local308 []uint8
+ var local309 uint16
+ {
+ p := &local309
+ *p = read16(r)
+ }
+ (local308) = make([]uint8, local309)
+ {
+ _, err := io.ReadFull(r, (local308)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).Name) = string(local308)
+ var local310 []uint8
+ var local311 uint16
+ {
+ p := &local311
+ *p = read16(r)
+ }
+ (local310) = make([]uint8, local311)
+ {
+ _, err := io.ReadFull(r, (local310)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).Desc) = string(local310)
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).InvImg).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).WieldImg).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ for local312 := range (*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).WieldScale {
+ {
+ p := &((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).WieldScale)[local312]
+ *p = math.Float32frombits(read32(r))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).StackMax
+ *p = read16(r)
+ }
+ {
+ p := &(*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).Usable
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).CanPointLiquids
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).ToolCaps).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.ToolCaps", err))
+ }
+ var local313 uint16
+ {
+ p := &local313
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).Groups) = make([]Group, local313)
+ for local314 := range (*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).Groups {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).Groups)[local314]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Group", err))
+ }
+ }
+ var local315 []uint8
+ var local316 uint16
+ {
+ p := &local316
+ *p = read16(r)
+ }
+ (local315) = make([]uint8, local316)
+ {
+ _, err := io.ReadFull(r, (local315)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).PlacePredict) = string(local315)
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).PlaceSnd).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.SoundDef", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).PlaceFailSnd).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.SoundDef", err))
+ }
+ {
+ p := &(*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).PointRange
+ *p = math.Float32frombits(read32(r))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).Palette).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ {
+ p := &(*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).Color
+ *p = color.NRGBA{A: read8(r), R: read8(r), G: read8(r), B: read8(r)}
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).InvOverlay).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).WieldOverlay).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ var local317 []uint8
+ var local318 uint16
+ {
+ p := &local318
+ *p = read16(r)
+ }
+ (local317) = make([]uint8, local318)
+ {
+ _, err := io.ReadFull(r, (local317)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).ShortDesc) = string(local317)
+ {
+ p := &(*(*(struct {
+ Type ItemType
+
+ Name, Desc string
+
+ InvImg, WieldImg Texture
+ WieldScale [3]float32
+
+ StackMax uint16
+
+ Usable bool
+ CanPointLiquids bool
+
+ ToolCaps ToolCaps
+
+ Groups []Group
+
+ PlacePredict string
+
+ PlaceSnd, PlaceFailSnd SoundDef
+
+ PointRange float32
+
+ // Set index in Palette with "palette_index" item meta field,
+ // this overrides Color.
+ Palette Texture
+ Color color.NRGBA
+
+ // Texture overlays.
+ InvOverlay, WieldOverlay Texture
+
+ ShortDesc string
+
+ PlaceParam2 byte
+ }))(obj)).PlaceParam2
+ *p = read8(r)
+ }
+ if r.N > 0 {
+ chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ }
+ }
+}
+
+func (obj *SoundSrcType) serialize(w io.Writer) {
+ {
+ x := *(*(uint8))(obj)
+ write8(w, uint8(x))
+ }
+}
+
+func (obj *SoundSrcType) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint8))(obj)
+ *p = read8(r)
+ }
+}
+
+func (obj *TileAnim) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type AnimType
+
+ //mt:if %s.Type == SpritesheetAnim
+ AspectRatio [2]uint8
+
+ //mt:if %s.Type == VerticalFrameAnim
+ NFrames [2]uint16
+
+ //mt:if %s.Type != NoAnim
+ Duration float32 // in seconds
+
+ }))(obj)).Type).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AnimType", err))
+ }
+ if !((*(*(struct {
+ Type AnimType
+
+ //mt:if %s.Type == SpritesheetAnim
+ AspectRatio [2]uint8
+
+ //mt:if %s.Type == VerticalFrameAnim
+ NFrames [2]uint16
+
+ //mt:if %s.Type != NoAnim
+ Duration float32 // in seconds
+
+ }))(obj)).Type < maxAnim) {
+ chk(errors.New("assertion failed: %s.Type < maxAnim"))
+ }
+ if (*(*(struct {
+ Type AnimType
+
+ //mt:if %s.Type == SpritesheetAnim
+ AspectRatio [2]uint8
+
+ //mt:if %s.Type == VerticalFrameAnim
+ NFrames [2]uint16
+
+ //mt:if %s.Type != NoAnim
+ Duration float32 // in seconds
+
+ }))(obj)).Type == SpritesheetAnim {
+ {
+ _, err := w.Write(((*(*(struct {
+ Type AnimType
+
+ //mt:if %s.Type == SpritesheetAnim
+ AspectRatio [2]uint8
+
+ //mt:if %s.Type == VerticalFrameAnim
+ NFrames [2]uint16
+
+ //mt:if %s.Type != NoAnim
+ Duration float32 // in seconds
+
+ }))(obj)).AspectRatio)[:])
+ chk(err)
+ }
+ }
+ if (*(*(struct {
+ Type AnimType
+
+ //mt:if %s.Type == SpritesheetAnim
+ AspectRatio [2]uint8
+
+ //mt:if %s.Type == VerticalFrameAnim
+ NFrames [2]uint16
+
+ //mt:if %s.Type != NoAnim
+ Duration float32 // in seconds
+
+ }))(obj)).Type == VerticalFrameAnim {
+ for local319 := range (*(*(struct {
+ Type AnimType
+
+ //mt:if %s.Type == SpritesheetAnim
+ AspectRatio [2]uint8
+
+ //mt:if %s.Type == VerticalFrameAnim
+ NFrames [2]uint16
+
+ //mt:if %s.Type != NoAnim
+ Duration float32 // in seconds
+
+ }))(obj)).NFrames {
+ {
+ x := ((*(*(struct {
+ Type AnimType
+
+ //mt:if %s.Type == SpritesheetAnim
+ AspectRatio [2]uint8
+
+ //mt:if %s.Type == VerticalFrameAnim
+ NFrames [2]uint16
+
+ //mt:if %s.Type != NoAnim
+ Duration float32 // in seconds
+
+ }))(obj)).NFrames)[local319]
+ write16(w, uint16(x))
+ }
+ }
+ }
+ if (*(*(struct {
+ Type AnimType
+
+ //mt:if %s.Type == SpritesheetAnim
+ AspectRatio [2]uint8
+
+ //mt:if %s.Type == VerticalFrameAnim
+ NFrames [2]uint16
+
+ //mt:if %s.Type != NoAnim
+ Duration float32 // in seconds
+
+ }))(obj)).Type != NoAnim {
+ {
+ x := (*(*(struct {
+ Type AnimType
+
+ //mt:if %s.Type == SpritesheetAnim
+ AspectRatio [2]uint8
+
+ //mt:if %s.Type == VerticalFrameAnim
+ NFrames [2]uint16
+
+ //mt:if %s.Type != NoAnim
+ Duration float32 // in seconds
+
+ }))(obj)).Duration
+ write32(w, math.Float32bits(x))
+ }
+ }
+}
+
+func (obj *TileAnim) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type AnimType
+
+ //mt:if %s.Type == SpritesheetAnim
+ AspectRatio [2]uint8
+
+ //mt:if %s.Type == VerticalFrameAnim
+ NFrames [2]uint16
+
+ //mt:if %s.Type != NoAnim
+ Duration float32 // in seconds
+
+ }))(obj)).Type).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AnimType", err))
+ }
+ if !((*(*(struct {
+ Type AnimType
+
+ //mt:if %s.Type == SpritesheetAnim
+ AspectRatio [2]uint8
+
+ //mt:if %s.Type == VerticalFrameAnim
+ NFrames [2]uint16
+
+ //mt:if %s.Type != NoAnim
+ Duration float32 // in seconds
+
+ }))(obj)).Type < maxAnim) {
+ chk(errors.New("assertion failed: %s.Type < maxAnim"))
+ }
+ if (*(*(struct {
+ Type AnimType
+
+ //mt:if %s.Type == SpritesheetAnim
+ AspectRatio [2]uint8
+
+ //mt:if %s.Type == VerticalFrameAnim
+ NFrames [2]uint16
+
+ //mt:if %s.Type != NoAnim
+ Duration float32 // in seconds
+
+ }))(obj)).Type == SpritesheetAnim {
+ {
+ _, err := io.ReadFull(r, ((*(*(struct {
+ Type AnimType
+
+ //mt:if %s.Type == SpritesheetAnim
+ AspectRatio [2]uint8
+
+ //mt:if %s.Type == VerticalFrameAnim
+ NFrames [2]uint16
+
+ //mt:if %s.Type != NoAnim
+ Duration float32 // in seconds
+
+ }))(obj)).AspectRatio)[:])
+ chk(err)
+ }
+ }
+ if (*(*(struct {
+ Type AnimType
+
+ //mt:if %s.Type == SpritesheetAnim
+ AspectRatio [2]uint8
+
+ //mt:if %s.Type == VerticalFrameAnim
+ NFrames [2]uint16
+
+ //mt:if %s.Type != NoAnim
+ Duration float32 // in seconds
+
+ }))(obj)).Type == VerticalFrameAnim {
+ for local320 := range (*(*(struct {
+ Type AnimType
+
+ //mt:if %s.Type == SpritesheetAnim
+ AspectRatio [2]uint8
+
+ //mt:if %s.Type == VerticalFrameAnim
+ NFrames [2]uint16
+
+ //mt:if %s.Type != NoAnim
+ Duration float32 // in seconds
+
+ }))(obj)).NFrames {
+ {
+ p := &((*(*(struct {
+ Type AnimType
+
+ //mt:if %s.Type == SpritesheetAnim
+ AspectRatio [2]uint8
+
+ //mt:if %s.Type == VerticalFrameAnim
+ NFrames [2]uint16
+
+ //mt:if %s.Type != NoAnim
+ Duration float32 // in seconds
+
+ }))(obj)).NFrames)[local320]
+ *p = read16(r)
+ }
+ }
+ }
+ if (*(*(struct {
+ Type AnimType
+
+ //mt:if %s.Type == SpritesheetAnim
+ AspectRatio [2]uint8
+
+ //mt:if %s.Type == VerticalFrameAnim
+ NFrames [2]uint16
+
+ //mt:if %s.Type != NoAnim
+ Duration float32 // in seconds
+
+ }))(obj)).Type != NoAnim {
+ {
+ p := &(*(*(struct {
+ Type AnimType
+
+ //mt:if %s.Type == SpritesheetAnim
+ AspectRatio [2]uint8
+
+ //mt:if %s.Type == VerticalFrameAnim
+ NFrames [2]uint16
+
+ //mt:if %s.Type != NoAnim
+ Duration float32 // in seconds
+
+ }))(obj)).Duration
+ *p = math.Float32frombits(read32(r))
+ }
+ }
+}
+
+func (obj *Content) serialize(w io.Writer) {
+ {
+ x := *(*(uint16))(obj)
+ write16(w, uint16(x))
+ }
+}
+
+func (obj *Content) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint16))(obj)
+ *p = read16(r)
+ }
+}
+
+func (obj *ParticleSpawnerID) serialize(w io.Writer) {
+ {
+ x := *(*(uint32))(obj)
+ write32(w, uint32(x))
+ }
+}
+
+func (obj *ParticleSpawnerID) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint32))(obj)
+ *p = read32(r)
+ }
+}
+
+func (obj *HUDID) serialize(w io.Writer) {
+ {
+ x := *(*(uint32))(obj)
+ write32(w, uint32(x))
+ }
+}
+
+func (obj *HUDID) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint32))(obj)
+ *p = read32(r)
+ }
+}
+
+func (obj *HUDType) serialize(w io.Writer) {
+ {
+ x := *(*(uint8))(obj)
+ write8(w, uint8(x))
+ }
+}
+
+func (obj *HUDType) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint8))(obj)
+ *p = read8(r)
+ }
+}
+
+func (obj *HUDField) serialize(w io.Writer) {
+ {
+ x := *(*(uint8))(obj)
+ write8(w, uint8(x))
+ }
+}
+
+func (obj *HUDField) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint8))(obj)
+ *p = read8(r)
+ }
+}
+
+func (obj *HUDFlags) serialize(w io.Writer) {
+ {
+ x := *(*(uint32))(obj)
+ write32(w, uint32(x))
+ }
+}
+
+func (obj *HUDFlags) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint32))(obj)
+ *p = read32(r)
+ }
+}
+
+func (obj *HotbarParam) serialize(w io.Writer) {
+ {
+ x := *(*(uint16))(obj)
+ write16(w, uint16(x))
+ }
+}
+
+func (obj *HotbarParam) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint16))(obj)
+ *p = read16(r)
+ }
+}
+
+func (obj *Texture) serialize(w io.Writer) {
+ if len(([]byte(*(*(string))(obj)))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte(*(*(string))(obj)))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte(*(*(string))(obj)))[:])
+ chk(err)
+ }
+}
+
+func (obj *Texture) deserialize(r io.Reader) {
+ var local321 []uint8
+ var local322 uint16
+ {
+ p := &local322
+ *p = read16(r)
+ }
+ (local321) = make([]uint8, local322)
+ {
+ _, err := io.ReadFull(r, (local321)[:])
+ chk(err)
+ }
+ (*(*(string))(obj)) = string(local321)
+}
+
+func (obj *PlayerListUpdateType) serialize(w io.Writer) {
+ {
+ x := *(*(uint8))(obj)
+ write8(w, uint8(x))
+ }
+}
+
+func (obj *PlayerListUpdateType) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint8))(obj)
+ *p = read8(r)
+ }
+}
+
+func (obj *ModChanSig) serialize(w io.Writer) {
+ {
+ x := *(*(uint8))(obj)
+ write8(w, uint8(x))
+ }
+}
+
+func (obj *ModChanSig) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint8))(obj)
+ *p = read8(r)
+ }
+}
+
+func (obj *AOProps) serialize(w io.Writer) {
+ {
+ local323 := uint8(4)
+ {
+ x := local323
+ write8(w, uint8(x))
+ }
+ }
+ {
+ x := (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).MaxHP
+ write16(w, uint16(x))
+ }
+ {
+ x := (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).CollideWithNodes
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Weight
+ write32(w, math.Float32bits(x))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).ColBox).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).SelBox).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ {
+ x := (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Pointable
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ if len(([]byte((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Visual))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Visual))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Visual))[:])
+ chk(err)
+ }
+ for local324 := range (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).VisualSize {
+ {
+ x := ((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).VisualSize)[local324]
+ write32(w, math.Float32bits(x))
+ }
+ }
+ if len(((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Textures)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Textures)))
+ write16(w, uint16(x))
+ }
+ for local325 := range (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Textures {
+ if err := pcall(func() {
+ (((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Textures)[local325]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ }
+ for local326 := range (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).SpritesheetSize {
+ {
+ x := ((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).SpritesheetSize)[local326]
+ write16(w, uint16(x))
+ }
+ }
+ for local327 := range (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).SpritePos {
+ {
+ x := ((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).SpritePos)[local327]
+ write16(w, uint16(x))
+ }
+ }
+ {
+ x := (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Visible
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).MakeFootstepSnds
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).RotateSpeed
+ write32(w, math.Float32bits(x))
+ }
+ if len(([]byte((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Mesh))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Mesh))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Mesh))[:])
+ chk(err)
+ }
+ if len(((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Colors)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Colors)))
+ write16(w, uint16(x))
+ }
+ for local328 := range (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Colors {
+ {
+ x := ((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Colors)[local328]
+ w.Write([]byte{x.A, x.R, x.G, x.B})
+ }
+ }
+ {
+ x := (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).CollideWithAOs
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).StepHeight
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).FaceRotateDir
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).FaceRotateDirOff
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).BackfaceCull
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ if len(([]byte((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Nametag))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Nametag))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Nametag))[:])
+ chk(err)
+ }
+ {
+ x := (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).NametagColor
+ w.Write([]byte{x.A, x.R, x.G, x.B})
+ }
+ {
+ x := (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).FaceRotateSpeed
+ write32(w, math.Float32bits(x))
+ }
+ if len(([]byte((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Infotext))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Infotext))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Infotext))[:])
+ chk(err)
+ }
+ if len(([]byte((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Itemstring))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Itemstring))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Itemstring))[:])
+ chk(err)
+ }
+ {
+ x := (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Glow
+ write8(w, uint8(x))
+ }
+ {
+ x := (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).MaxBreath
+ write16(w, uint16(x))
+ }
+ {
+ x := (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).EyeHeight
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).ZoomFOV
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).UseTextureAlpha
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).DmgTextureMod).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ {
+ x := (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Shaded
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).ShowOnMinimap
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).NametagBG
+ w.Write([]byte{x.A, x.R, x.G, x.B})
+ }
+}
+
+func (obj *AOProps) deserialize(r io.Reader) {
+ {
+ var local329 uint8
+ {
+ p := &local329
+ *p = read8(r)
+ }
+ if local329 != (4) {
+ chk(fmt.Errorf("const %v: %v", 4, local329))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).MaxHP
+ *p = read16(r)
+ }
+ {
+ p := &(*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).CollideWithNodes
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Weight
+ *p = math.Float32frombits(read32(r))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).ColBox).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).SelBox).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ {
+ p := &(*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Pointable
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ var local330 []uint8
+ var local331 uint16
+ {
+ p := &local331
+ *p = read16(r)
+ }
+ (local330) = make([]uint8, local331)
+ {
+ _, err := io.ReadFull(r, (local330)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Visual) = string(local330)
+ for local332 := range (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).VisualSize {
+ {
+ p := &((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).VisualSize)[local332]
+ *p = math.Float32frombits(read32(r))
+ }
+ }
+ var local333 uint16
+ {
+ p := &local333
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Textures) = make([]Texture, local333)
+ for local334 := range (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Textures {
+ if err := pcall(func() {
+ (((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Textures)[local334]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ }
+ for local335 := range (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).SpritesheetSize {
+ {
+ p := &((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).SpritesheetSize)[local335]
+ *p = int16(read16(r))
+ }
+ }
+ for local336 := range (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).SpritePos {
+ {
+ p := &((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).SpritePos)[local336]
+ *p = int16(read16(r))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Visible
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).MakeFootstepSnds
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).RotateSpeed
+ *p = math.Float32frombits(read32(r))
+ }
+ var local337 []uint8
+ var local338 uint16
+ {
+ p := &local338
+ *p = read16(r)
+ }
+ (local337) = make([]uint8, local338)
+ {
+ _, err := io.ReadFull(r, (local337)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Mesh) = string(local337)
+ var local339 uint16
+ {
+ p := &local339
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Colors) = make([]color.NRGBA, local339)
+ for local340 := range (*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Colors {
+ {
+ p := &((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Colors)[local340]
+ *p = color.NRGBA{A: read8(r), R: read8(r), G: read8(r), B: read8(r)}
+ }
+ }
+ {
+ p := &(*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).CollideWithAOs
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).StepHeight
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).FaceRotateDir
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).FaceRotateDirOff
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).BackfaceCull
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ var local341 []uint8
+ var local342 uint16
+ {
+ p := &local342
+ *p = read16(r)
+ }
+ (local341) = make([]uint8, local342)
+ {
+ _, err := io.ReadFull(r, (local341)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Nametag) = string(local341)
+ {
+ p := &(*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).NametagColor
+ *p = color.NRGBA{A: read8(r), R: read8(r), G: read8(r), B: read8(r)}
+ }
+ {
+ p := &(*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).FaceRotateSpeed
+ *p = math.Float32frombits(read32(r))
+ }
+ var local343 []uint8
+ var local344 uint16
+ {
+ p := &local344
+ *p = read16(r)
+ }
+ (local343) = make([]uint8, local344)
+ {
+ _, err := io.ReadFull(r, (local343)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Infotext) = string(local343)
+ var local345 []uint8
+ var local346 uint16
+ {
+ p := &local346
+ *p = read16(r)
+ }
+ (local345) = make([]uint8, local346)
+ {
+ _, err := io.ReadFull(r, (local345)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Itemstring) = string(local345)
+ {
+ p := &(*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Glow
+ *p = int8(read8(r))
+ }
+ {
+ p := &(*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).MaxBreath
+ *p = read16(r)
+ }
+ {
+ p := &(*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).EyeHeight
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).ZoomFOV
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).UseTextureAlpha
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).DmgTextureMod).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ {
+ p := &(*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).Shaded
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).ShowOnMinimap
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ MaxHP uint16 // Player only.
+ CollideWithNodes bool
+ Weight float32 // deprecated
+ ColBox, SelBox Box
+ Pointable bool
+ Visual string
+ VisualSize [3]float32
+ Textures []Texture
+ SpritesheetSize [2]int16 // in sprites.
+ SpritePos [2]int16 // in sprite sheet.
+ Visible bool
+ MakeFootstepSnds bool
+ RotateSpeed float32 // in radians per second.
+ Mesh string
+ Colors []color.NRGBA
+ CollideWithAOs bool
+ StepHeight float32
+ FaceRotateDir bool
+ FaceRotateDirOff float32 // in degrees.
+ BackfaceCull bool
+ Nametag string
+ NametagColor color.NRGBA
+ FaceRotateSpeed float32 // in degrees per second.
+ Infotext string
+ Itemstring string
+ Glow int8
+ MaxBreath uint16 // Player only.
+ EyeHeight float32 // Player only.
+ ZoomFOV float32 // in degrees. Player only.
+ UseTextureAlpha bool
+ DmgTextureMod Texture // suffix
+ Shaded bool
+ ShowOnMinimap bool
+ NametagBG color.NRGBA
+ }))(obj)).NametagBG
+ *p = color.NRGBA{A: read8(r), R: read8(r), G: read8(r), B: read8(r)}
+ }
+}
+
+func (obj *AOPos) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Pos
+ Vel, Acc Vec
+ Rot [3]float32
+
+ Interpolate bool
+ End bool
+ UpdateInterval float32
+ }))(obj)).Pos).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Pos", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Pos
+ Vel, Acc Vec
+ Rot [3]float32
+
+ Interpolate bool
+ End bool
+ UpdateInterval float32
+ }))(obj)).Vel).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Vec", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Pos
+ Vel, Acc Vec
+ Rot [3]float32
+
+ Interpolate bool
+ End bool
+ UpdateInterval float32
+ }))(obj)).Acc).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Vec", err))
+ }
+ for local347 := range (*(*(struct {
+ Pos
+ Vel, Acc Vec
+ Rot [3]float32
+
+ Interpolate bool
+ End bool
+ UpdateInterval float32
+ }))(obj)).Rot {
+ {
+ x := ((*(*(struct {
+ Pos
+ Vel, Acc Vec
+ Rot [3]float32
+
+ Interpolate bool
+ End bool
+ UpdateInterval float32
+ }))(obj)).Rot)[local347]
+ write32(w, math.Float32bits(x))
+ }
+ }
+ {
+ x := (*(*(struct {
+ Pos
+ Vel, Acc Vec
+ Rot [3]float32
+
+ Interpolate bool
+ End bool
+ UpdateInterval float32
+ }))(obj)).Interpolate
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ Pos
+ Vel, Acc Vec
+ Rot [3]float32
+
+ Interpolate bool
+ End bool
+ UpdateInterval float32
+ }))(obj)).End
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ Pos
+ Vel, Acc Vec
+ Rot [3]float32
+
+ Interpolate bool
+ End bool
+ UpdateInterval float32
+ }))(obj)).UpdateInterval
+ write32(w, math.Float32bits(x))
+ }
+}
+
+func (obj *AOPos) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Pos
+ Vel, Acc Vec
+ Rot [3]float32
+
+ Interpolate bool
+ End bool
+ UpdateInterval float32
+ }))(obj)).Pos).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Pos", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Pos
+ Vel, Acc Vec
+ Rot [3]float32
+
+ Interpolate bool
+ End bool
+ UpdateInterval float32
+ }))(obj)).Vel).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Vec", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Pos
+ Vel, Acc Vec
+ Rot [3]float32
+
+ Interpolate bool
+ End bool
+ UpdateInterval float32
+ }))(obj)).Acc).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Vec", err))
+ }
+ for local348 := range (*(*(struct {
+ Pos
+ Vel, Acc Vec
+ Rot [3]float32
+
+ Interpolate bool
+ End bool
+ UpdateInterval float32
+ }))(obj)).Rot {
+ {
+ p := &((*(*(struct {
+ Pos
+ Vel, Acc Vec
+ Rot [3]float32
+
+ Interpolate bool
+ End bool
+ UpdateInterval float32
+ }))(obj)).Rot)[local348]
+ *p = math.Float32frombits(read32(r))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Pos
+ Vel, Acc Vec
+ Rot [3]float32
+
+ Interpolate bool
+ End bool
+ UpdateInterval float32
+ }))(obj)).Interpolate
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Pos
+ Vel, Acc Vec
+ Rot [3]float32
+
+ Interpolate bool
+ End bool
+ UpdateInterval float32
+ }))(obj)).End
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Pos
+ Vel, Acc Vec
+ Rot [3]float32
+
+ Interpolate bool
+ End bool
+ UpdateInterval float32
+ }))(obj)).UpdateInterval
+ *p = math.Float32frombits(read32(r))
+ }
+}
+
+func (obj *AOSprite) serialize(w io.Writer) {
+ for local349 := range (*(*(struct {
+ Frame0 [2]int16
+ Frames uint16
+ FrameDuration float32
+ ViewAngleFrames bool
+ }))(obj)).Frame0 {
+ {
+ x := ((*(*(struct {
+ Frame0 [2]int16
+ Frames uint16
+ FrameDuration float32
+ ViewAngleFrames bool
+ }))(obj)).Frame0)[local349]
+ write16(w, uint16(x))
+ }
+ }
+ {
+ x := (*(*(struct {
+ Frame0 [2]int16
+ Frames uint16
+ FrameDuration float32
+ ViewAngleFrames bool
+ }))(obj)).Frames
+ write16(w, uint16(x))
+ }
+ {
+ x := (*(*(struct {
+ Frame0 [2]int16
+ Frames uint16
+ FrameDuration float32
+ ViewAngleFrames bool
+ }))(obj)).FrameDuration
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ Frame0 [2]int16
+ Frames uint16
+ FrameDuration float32
+ ViewAngleFrames bool
+ }))(obj)).ViewAngleFrames
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+}
+
+func (obj *AOSprite) deserialize(r io.Reader) {
+ for local350 := range (*(*(struct {
+ Frame0 [2]int16
+ Frames uint16
+ FrameDuration float32
+ ViewAngleFrames bool
+ }))(obj)).Frame0 {
+ {
+ p := &((*(*(struct {
+ Frame0 [2]int16
+ Frames uint16
+ FrameDuration float32
+ ViewAngleFrames bool
+ }))(obj)).Frame0)[local350]
+ *p = int16(read16(r))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Frame0 [2]int16
+ Frames uint16
+ FrameDuration float32
+ ViewAngleFrames bool
+ }))(obj)).Frames
+ *p = read16(r)
+ }
+ {
+ p := &(*(*(struct {
+ Frame0 [2]int16
+ Frames uint16
+ FrameDuration float32
+ ViewAngleFrames bool
+ }))(obj)).FrameDuration
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ Frame0 [2]int16
+ Frames uint16
+ FrameDuration float32
+ ViewAngleFrames bool
+ }))(obj)).ViewAngleFrames
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+}
+
+func (obj *Group) serialize(w io.Writer) {
+ if len(([]byte((*(*(struct {
+ Name string
+ Rating int16
+ }))(obj)).Name))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Name string
+ Rating int16
+ }))(obj)).Name))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Name string
+ Rating int16
+ }))(obj)).Name))[:])
+ chk(err)
+ }
+ {
+ x := (*(*(struct {
+ Name string
+ Rating int16
+ }))(obj)).Rating
+ write16(w, uint16(x))
+ }
+}
+
+func (obj *Group) deserialize(r io.Reader) {
+ var local351 []uint8
+ var local352 uint16
+ {
+ p := &local352
+ *p = read16(r)
+ }
+ (local351) = make([]uint8, local352)
+ {
+ _, err := io.ReadFull(r, (local351)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Name string
+ Rating int16
+ }))(obj)).Name) = string(local351)
+ {
+ p := &(*(*(struct {
+ Name string
+ Rating int16
+ }))(obj)).Rating
+ *p = int16(read16(r))
+ }
+}
+
+func (obj *AOAnim) serialize(w io.Writer) {
+ for local353 := range (*(*(struct {
+ Frames [2]int32
+ Speed float32
+ Blend float32
+ NoLoop bool
+ }))(obj)).Frames {
+ {
+ x := ((*(*(struct {
+ Frames [2]int32
+ Speed float32
+ Blend float32
+ NoLoop bool
+ }))(obj)).Frames)[local353]
+ write32(w, uint32(x))
+ }
+ }
+ {
+ x := (*(*(struct {
+ Frames [2]int32
+ Speed float32
+ Blend float32
+ NoLoop bool
+ }))(obj)).Speed
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ Frames [2]int32
+ Speed float32
+ Blend float32
+ NoLoop bool
+ }))(obj)).Blend
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ Frames [2]int32
+ Speed float32
+ Blend float32
+ NoLoop bool
+ }))(obj)).NoLoop
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+}
+
+func (obj *AOAnim) deserialize(r io.Reader) {
+ for local354 := range (*(*(struct {
+ Frames [2]int32
+ Speed float32
+ Blend float32
+ NoLoop bool
+ }))(obj)).Frames {
+ {
+ p := &((*(*(struct {
+ Frames [2]int32
+ Speed float32
+ Blend float32
+ NoLoop bool
+ }))(obj)).Frames)[local354]
+ *p = int32(read32(r))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Frames [2]int32
+ Speed float32
+ Blend float32
+ NoLoop bool
+ }))(obj)).Speed
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ Frames [2]int32
+ Speed float32
+ Blend float32
+ NoLoop bool
+ }))(obj)).Blend
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ Frames [2]int32
+ Speed float32
+ Blend float32
+ NoLoop bool
+ }))(obj)).NoLoop
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+}
+
+func (obj *AOBonePos) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Pos Vec
+ Rot [3]float32
+ }))(obj)).Pos).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Vec", err))
+ }
+ for local355 := range (*(*(struct {
+ Pos Vec
+ Rot [3]float32
+ }))(obj)).Rot {
+ {
+ x := ((*(*(struct {
+ Pos Vec
+ Rot [3]float32
+ }))(obj)).Rot)[local355]
+ write32(w, math.Float32bits(x))
+ }
+ }
+}
+
+func (obj *AOBonePos) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Pos Vec
+ Rot [3]float32
+ }))(obj)).Pos).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Vec", err))
+ }
+ for local356 := range (*(*(struct {
+ Pos Vec
+ Rot [3]float32
+ }))(obj)).Rot {
+ {
+ p := &((*(*(struct {
+ Pos Vec
+ Rot [3]float32
+ }))(obj)).Rot)[local356]
+ *p = math.Float32frombits(read32(r))
+ }
+ }
+}
+
+func (obj *AOAttach) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ ParentID AOID
+ Bone string
+ Pos Vec
+ Rot [3]float32
+ ForceVisible bool
+ }))(obj)).ParentID).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOID", err))
+ }
+ if len(([]byte((*(*(struct {
+ ParentID AOID
+ Bone string
+ Pos Vec
+ Rot [3]float32
+ ForceVisible bool
+ }))(obj)).Bone))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ ParentID AOID
+ Bone string
+ Pos Vec
+ Rot [3]float32
+ ForceVisible bool
+ }))(obj)).Bone))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ ParentID AOID
+ Bone string
+ Pos Vec
+ Rot [3]float32
+ ForceVisible bool
+ }))(obj)).Bone))[:])
+ chk(err)
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ ParentID AOID
+ Bone string
+ Pos Vec
+ Rot [3]float32
+ ForceVisible bool
+ }))(obj)).Pos).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Vec", err))
+ }
+ for local357 := range (*(*(struct {
+ ParentID AOID
+ Bone string
+ Pos Vec
+ Rot [3]float32
+ ForceVisible bool
+ }))(obj)).Rot {
+ {
+ x := ((*(*(struct {
+ ParentID AOID
+ Bone string
+ Pos Vec
+ Rot [3]float32
+ ForceVisible bool
+ }))(obj)).Rot)[local357]
+ write32(w, math.Float32bits(x))
+ }
+ }
+ {
+ x := (*(*(struct {
+ ParentID AOID
+ Bone string
+ Pos Vec
+ Rot [3]float32
+ ForceVisible bool
+ }))(obj)).ForceVisible
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+}
+
+func (obj *AOAttach) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ ParentID AOID
+ Bone string
+ Pos Vec
+ Rot [3]float32
+ ForceVisible bool
+ }))(obj)).ParentID).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AOID", err))
+ }
+ var local358 []uint8
+ var local359 uint16
+ {
+ p := &local359
+ *p = read16(r)
+ }
+ (local358) = make([]uint8, local359)
+ {
+ _, err := io.ReadFull(r, (local358)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ ParentID AOID
+ Bone string
+ Pos Vec
+ Rot [3]float32
+ ForceVisible bool
+ }))(obj)).Bone) = string(local358)
+ if err := pcall(func() {
+ ((*(*(struct {
+ ParentID AOID
+ Bone string
+ Pos Vec
+ Rot [3]float32
+ ForceVisible bool
+ }))(obj)).Pos).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Vec", err))
+ }
+ for local360 := range (*(*(struct {
+ ParentID AOID
+ Bone string
+ Pos Vec
+ Rot [3]float32
+ ForceVisible bool
+ }))(obj)).Rot {
+ {
+ p := &((*(*(struct {
+ ParentID AOID
+ Bone string
+ Pos Vec
+ Rot [3]float32
+ ForceVisible bool
+ }))(obj)).Rot)[local360]
+ *p = math.Float32frombits(read32(r))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ ParentID AOID
+ Bone string
+ Pos Vec
+ Rot [3]float32
+ ForceVisible bool
+ }))(obj)).ForceVisible
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+}
+
+func (obj *AOPhysOverride) serialize(w io.Writer) {
+ {
+ x := (*(*(struct {
+ Walk, Jump, Gravity float32
+
+ // Player only.
+ NoSneak, NoSneakGlitch, OldSneak bool
+ }))(obj)).Walk
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ Walk, Jump, Gravity float32
+
+ // Player only.
+ NoSneak, NoSneakGlitch, OldSneak bool
+ }))(obj)).Jump
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ Walk, Jump, Gravity float32
+
+ // Player only.
+ NoSneak, NoSneakGlitch, OldSneak bool
+ }))(obj)).Gravity
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ Walk, Jump, Gravity float32
+
+ // Player only.
+ NoSneak, NoSneakGlitch, OldSneak bool
+ }))(obj)).NoSneak
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ Walk, Jump, Gravity float32
+
+ // Player only.
+ NoSneak, NoSneakGlitch, OldSneak bool
+ }))(obj)).NoSneakGlitch
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ {
+ x := (*(*(struct {
+ Walk, Jump, Gravity float32
+
+ // Player only.
+ NoSneak, NoSneakGlitch, OldSneak bool
+ }))(obj)).OldSneak
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+}
+
+func (obj *AOPhysOverride) deserialize(r io.Reader) {
+ {
+ p := &(*(*(struct {
+ Walk, Jump, Gravity float32
+
+ // Player only.
+ NoSneak, NoSneakGlitch, OldSneak bool
+ }))(obj)).Walk
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ Walk, Jump, Gravity float32
+
+ // Player only.
+ NoSneak, NoSneakGlitch, OldSneak bool
+ }))(obj)).Jump
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ Walk, Jump, Gravity float32
+
+ // Player only.
+ NoSneak, NoSneakGlitch, OldSneak bool
+ }))(obj)).Gravity
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ Walk, Jump, Gravity float32
+
+ // Player only.
+ NoSneak, NoSneakGlitch, OldSneak bool
+ }))(obj)).NoSneak
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Walk, Jump, Gravity float32
+
+ // Player only.
+ NoSneak, NoSneakGlitch, OldSneak bool
+ }))(obj)).NoSneakGlitch
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ Walk, Jump, Gravity float32
+
+ // Player only.
+ NoSneak, NoSneakGlitch, OldSneak bool
+ }))(obj)).OldSneak
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+}
+
+func (obj *NodeMetaField) serialize(w io.Writer) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Field
+ Private bool
+ }))(obj)).Field).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Field", err))
+ }
+ {
+ x := (*(*(struct {
+ Field
+ Private bool
+ }))(obj)).Private
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+}
+
+func (obj *NodeMetaField) deserialize(r io.Reader) {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Field
+ Private bool
+ }))(obj)).Field).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Field", err))
+ }
+ {
+ p := &(*(*(struct {
+ Field
+ Private bool
+ }))(obj)).Private
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+}
+
+func (obj *MinimapType) serialize(w io.Writer) {
+ {
+ x := *(*(uint16))(obj)
+ write16(w, uint16(x))
+ }
+}
+
+func (obj *MinimapType) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint16))(obj)
+ *p = read16(r)
+ }
+}
+
+func (obj *Param1Type) serialize(w io.Writer) {
+ {
+ x := *(*(uint8))(obj)
+ write8(w, uint8(x))
+ }
+}
+
+func (obj *Param1Type) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint8))(obj)
+ *p = read8(r)
+ }
+}
+
+func (obj *Param2Type) serialize(w io.Writer) {
+ {
+ x := *(*(uint8))(obj)
+ write8(w, uint8(x))
+ }
+}
+
+func (obj *Param2Type) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint8))(obj)
+ *p = read8(r)
+ }
+}
+
+func (obj *DrawType) serialize(w io.Writer) {
+ {
+ x := *(*(uint8))(obj)
+ write8(w, uint8(x))
+ }
+}
+
+func (obj *DrawType) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint8))(obj)
+ *p = read8(r)
+ }
+}
+
+func (obj *TileDef) serialize(w io.Writer) {
+ {
+ local361 := uint8(6)
+ {
+ x := local361
+ write8(w, uint8(x))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Texture
+ Anim TileAnim
+ Flags TileFlags
+
+ //mt:if %s.Flags&TileColor != 0
+ R, G, B uint8
+
+ //mt:if %s.Flags&TileScale != 0
+ Scale uint8
+
+ //mt:if %s.Flags&TileAlign != 0
+ Align AlignType
+ }))(obj)).Texture).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Texture
+ Anim TileAnim
+ Flags TileFlags
+
+ //mt:if %s.Flags&TileColor != 0
+ R, G, B uint8
+
+ //mt:if %s.Flags&TileScale != 0
+ Scale uint8
+
+ //mt:if %s.Flags&TileAlign != 0
+ Align AlignType
+ }))(obj)).Anim).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.TileAnim", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Texture
+ Anim TileAnim
+ Flags TileFlags
+
+ //mt:if %s.Flags&TileColor != 0
+ R, G, B uint8
+
+ //mt:if %s.Flags&TileScale != 0
+ Scale uint8
+
+ //mt:if %s.Flags&TileAlign != 0
+ Align AlignType
+ }))(obj)).Flags).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.TileFlags", err))
+ }
+ if (*(*(struct {
+ Texture
+ Anim TileAnim
+ Flags TileFlags
+
+ //mt:if %s.Flags&TileColor != 0
+ R, G, B uint8
+
+ //mt:if %s.Flags&TileScale != 0
+ Scale uint8
+
+ //mt:if %s.Flags&TileAlign != 0
+ Align AlignType
+ }))(obj)).Flags&TileColor != 0 {
+ {
+ x := (*(*(struct {
+ Texture
+ Anim TileAnim
+ Flags TileFlags
+
+ //mt:if %s.Flags&TileColor != 0
+ R, G, B uint8
+
+ //mt:if %s.Flags&TileScale != 0
+ Scale uint8
+
+ //mt:if %s.Flags&TileAlign != 0
+ Align AlignType
+ }))(obj)).R
+ write8(w, uint8(x))
+ }
+ {
+ x := (*(*(struct {
+ Texture
+ Anim TileAnim
+ Flags TileFlags
+
+ //mt:if %s.Flags&TileColor != 0
+ R, G, B uint8
+
+ //mt:if %s.Flags&TileScale != 0
+ Scale uint8
+
+ //mt:if %s.Flags&TileAlign != 0
+ Align AlignType
+ }))(obj)).G
+ write8(w, uint8(x))
+ }
+ {
+ x := (*(*(struct {
+ Texture
+ Anim TileAnim
+ Flags TileFlags
+
+ //mt:if %s.Flags&TileColor != 0
+ R, G, B uint8
+
+ //mt:if %s.Flags&TileScale != 0
+ Scale uint8
+
+ //mt:if %s.Flags&TileAlign != 0
+ Align AlignType
+ }))(obj)).B
+ write8(w, uint8(x))
+ }
+ }
+ if (*(*(struct {
+ Texture
+ Anim TileAnim
+ Flags TileFlags
+
+ //mt:if %s.Flags&TileColor != 0
+ R, G, B uint8
+
+ //mt:if %s.Flags&TileScale != 0
+ Scale uint8
+
+ //mt:if %s.Flags&TileAlign != 0
+ Align AlignType
+ }))(obj)).Flags&TileScale != 0 {
+ {
+ x := (*(*(struct {
+ Texture
+ Anim TileAnim
+ Flags TileFlags
+
+ //mt:if %s.Flags&TileColor != 0
+ R, G, B uint8
+
+ //mt:if %s.Flags&TileScale != 0
+ Scale uint8
+
+ //mt:if %s.Flags&TileAlign != 0
+ Align AlignType
+ }))(obj)).Scale
+ write8(w, uint8(x))
+ }
+ }
+ if (*(*(struct {
+ Texture
+ Anim TileAnim
+ Flags TileFlags
+
+ //mt:if %s.Flags&TileColor != 0
+ R, G, B uint8
+
+ //mt:if %s.Flags&TileScale != 0
+ Scale uint8
+
+ //mt:if %s.Flags&TileAlign != 0
+ Align AlignType
+ }))(obj)).Flags&TileAlign != 0 {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Texture
+ Anim TileAnim
+ Flags TileFlags
+
+ //mt:if %s.Flags&TileColor != 0
+ R, G, B uint8
+
+ //mt:if %s.Flags&TileScale != 0
+ Scale uint8
+
+ //mt:if %s.Flags&TileAlign != 0
+ Align AlignType
+ }))(obj)).Align).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AlignType", err))
+ }
+ }
+}
+
+func (obj *TileDef) deserialize(r io.Reader) {
+ {
+ var local362 uint8
+ {
+ p := &local362
+ *p = read8(r)
+ }
+ if local362 != (6) {
+ chk(fmt.Errorf("const %v: %v", 6, local362))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Texture
+ Anim TileAnim
+ Flags TileFlags
+
+ //mt:if %s.Flags&TileColor != 0
+ R, G, B uint8
+
+ //mt:if %s.Flags&TileScale != 0
+ Scale uint8
+
+ //mt:if %s.Flags&TileAlign != 0
+ Align AlignType
+ }))(obj)).Texture).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Texture", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Texture
+ Anim TileAnim
+ Flags TileFlags
+
+ //mt:if %s.Flags&TileColor != 0
+ R, G, B uint8
+
+ //mt:if %s.Flags&TileScale != 0
+ Scale uint8
+
+ //mt:if %s.Flags&TileAlign != 0
+ Align AlignType
+ }))(obj)).Anim).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.TileAnim", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Texture
+ Anim TileAnim
+ Flags TileFlags
+
+ //mt:if %s.Flags&TileColor != 0
+ R, G, B uint8
+
+ //mt:if %s.Flags&TileScale != 0
+ Scale uint8
+
+ //mt:if %s.Flags&TileAlign != 0
+ Align AlignType
+ }))(obj)).Flags).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.TileFlags", err))
+ }
+ if (*(*(struct {
+ Texture
+ Anim TileAnim
+ Flags TileFlags
+
+ //mt:if %s.Flags&TileColor != 0
+ R, G, B uint8
+
+ //mt:if %s.Flags&TileScale != 0
+ Scale uint8
+
+ //mt:if %s.Flags&TileAlign != 0
+ Align AlignType
+ }))(obj)).Flags&TileColor != 0 {
+ {
+ p := &(*(*(struct {
+ Texture
+ Anim TileAnim
+ Flags TileFlags
+
+ //mt:if %s.Flags&TileColor != 0
+ R, G, B uint8
+
+ //mt:if %s.Flags&TileScale != 0
+ Scale uint8
+
+ //mt:if %s.Flags&TileAlign != 0
+ Align AlignType
+ }))(obj)).R
+ *p = read8(r)
+ }
+ {
+ p := &(*(*(struct {
+ Texture
+ Anim TileAnim
+ Flags TileFlags
+
+ //mt:if %s.Flags&TileColor != 0
+ R, G, B uint8
+
+ //mt:if %s.Flags&TileScale != 0
+ Scale uint8
+
+ //mt:if %s.Flags&TileAlign != 0
+ Align AlignType
+ }))(obj)).G
+ *p = read8(r)
+ }
+ {
+ p := &(*(*(struct {
+ Texture
+ Anim TileAnim
+ Flags TileFlags
+
+ //mt:if %s.Flags&TileColor != 0
+ R, G, B uint8
+
+ //mt:if %s.Flags&TileScale != 0
+ Scale uint8
+
+ //mt:if %s.Flags&TileAlign != 0
+ Align AlignType
+ }))(obj)).B
+ *p = read8(r)
+ }
+ }
+ if (*(*(struct {
+ Texture
+ Anim TileAnim
+ Flags TileFlags
+
+ //mt:if %s.Flags&TileColor != 0
+ R, G, B uint8
+
+ //mt:if %s.Flags&TileScale != 0
+ Scale uint8
+
+ //mt:if %s.Flags&TileAlign != 0
+ Align AlignType
+ }))(obj)).Flags&TileScale != 0 {
+ {
+ p := &(*(*(struct {
+ Texture
+ Anim TileAnim
+ Flags TileFlags
+
+ //mt:if %s.Flags&TileColor != 0
+ R, G, B uint8
+
+ //mt:if %s.Flags&TileScale != 0
+ Scale uint8
+
+ //mt:if %s.Flags&TileAlign != 0
+ Align AlignType
+ }))(obj)).Scale
+ *p = read8(r)
+ }
+ }
+ if (*(*(struct {
+ Texture
+ Anim TileAnim
+ Flags TileFlags
+
+ //mt:if %s.Flags&TileColor != 0
+ R, G, B uint8
+
+ //mt:if %s.Flags&TileScale != 0
+ Scale uint8
+
+ //mt:if %s.Flags&TileAlign != 0
+ Align AlignType
+ }))(obj)).Flags&TileAlign != 0 {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Texture
+ Anim TileAnim
+ Flags TileFlags
+
+ //mt:if %s.Flags&TileColor != 0
+ R, G, B uint8
+
+ //mt:if %s.Flags&TileScale != 0
+ Scale uint8
+
+ //mt:if %s.Flags&TileAlign != 0
+ Align AlignType
+ }))(obj)).Align).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.AlignType", err))
+ }
+ }
+}
+
+func (obj *WaveType) serialize(w io.Writer) {
+ {
+ x := *(*(uint8))(obj)
+ write8(w, uint8(x))
+ }
+}
+
+func (obj *WaveType) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint8))(obj)
+ *p = read8(r)
+ }
+}
+
+func (obj *LiquidType) serialize(w io.Writer) {
+ {
+ x := *(*(uint8))(obj)
+ write8(w, uint8(x))
+ }
+}
+
+func (obj *LiquidType) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint8))(obj)
+ *p = read8(r)
+ }
+}
+
+func (obj *NodeBox) serialize(w io.Writer) {
+ {
+ local363 := uint8(6)
+ {
+ x := local363
+ write8(w, uint8(x))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).Type).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.NodeBoxType", err))
+ }
+ if !((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).Type < maxBox) {
+ chk(errors.New("assertion failed: %s.Type < maxBox"))
+ }
+ if (*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).Type == MountedBox {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).WallTop).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).WallBot).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).WallSides).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ }
+ if t := (*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).Type; t == FixedBox || t == LeveledBox || t == ConnectedBox {
+ if len(((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).Fixed)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).Fixed)))
+ write16(w, uint16(x))
+ }
+ for local364 := range (*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).Fixed {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).Fixed)[local364]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ }
+ }
+ if (*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).Type == ConnectedBox {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).ConnDirs).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.DirBoxes", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).DiscoDirs).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.DirBoxes", err))
+ }
+ if len(((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).DiscoAll)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).DiscoAll)))
+ write16(w, uint16(x))
+ }
+ for local365 := range (*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).DiscoAll {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).DiscoAll)[local365]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ }
+ if len(((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).DiscoSides)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).DiscoSides)))
+ write16(w, uint16(x))
+ }
+ for local366 := range (*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).DiscoSides {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).DiscoSides)[local366]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ }
+ }
+}
+
+func (obj *NodeBox) deserialize(r io.Reader) {
+ {
+ var local367 uint8
+ {
+ p := &local367
+ *p = read8(r)
+ }
+ if local367 != (6) {
+ chk(fmt.Errorf("const %v: %v", 6, local367))
+ }
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).Type).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.NodeBoxType", err))
+ }
+ if !((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).Type < maxBox) {
+ chk(errors.New("assertion failed: %s.Type < maxBox"))
+ }
+ if (*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).Type == MountedBox {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).WallTop).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).WallBot).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).WallSides).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ }
+ if t := (*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).Type; t == FixedBox || t == LeveledBox || t == ConnectedBox {
+ var local368 uint16
+ {
+ p := &local368
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).Fixed) = make([]Box, local368)
+ for local369 := range (*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).Fixed {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).Fixed)[local369]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ }
+ }
+ if (*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).Type == ConnectedBox {
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).ConnDirs).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.DirBoxes", err))
+ }
+ if err := pcall(func() {
+ ((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).DiscoDirs).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.DirBoxes", err))
+ }
+ var local370 uint16
+ {
+ p := &local370
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).DiscoAll) = make([]Box, local370)
+ for local371 := range (*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).DiscoAll {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).DiscoAll)[local371]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ }
+ var local372 uint16
+ {
+ p := &local372
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).DiscoSides) = make([]Box, local372)
+ for local373 := range (*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).DiscoSides {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Type NodeBoxType
+
+ //mt:if %s.Type == MountedBox
+ WallTop, WallBot, WallSides Box
+
+ //mt:if t := %s.Type; t == FixedBox || t == LeveledBox || t == ConnectedBox
+ Fixed []Box
+
+ //mt:if %s.Type == ConnectedBox
+ ConnDirs, DiscoDirs DirBoxes
+ DiscoAll, DiscoSides []Box
+ }))(obj)).DiscoSides)[local373]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ }
+ }
+}
+
+func (obj *SoundDef) serialize(w io.Writer) {
+ if len(([]byte((*(*(struct {
+ Name string
+ Gain, Pitch, Fade float32
+ }))(obj)).Name))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Name string
+ Gain, Pitch, Fade float32
+ }))(obj)).Name))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Name string
+ Gain, Pitch, Fade float32
+ }))(obj)).Name))[:])
+ chk(err)
+ }
+ {
+ x := (*(*(struct {
+ Name string
+ Gain, Pitch, Fade float32
+ }))(obj)).Gain
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ Name string
+ Gain, Pitch, Fade float32
+ }))(obj)).Pitch
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ Name string
+ Gain, Pitch, Fade float32
+ }))(obj)).Fade
+ write32(w, math.Float32bits(x))
+ }
+}
+
+func (obj *SoundDef) deserialize(r io.Reader) {
+ var local374 []uint8
+ var local375 uint16
+ {
+ p := &local375
+ *p = read16(r)
+ }
+ (local374) = make([]uint8, local375)
+ {
+ _, err := io.ReadFull(r, (local374)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Name string
+ Gain, Pitch, Fade float32
+ }))(obj)).Name) = string(local374)
+ {
+ p := &(*(*(struct {
+ Name string
+ Gain, Pitch, Fade float32
+ }))(obj)).Gain
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ Name string
+ Gain, Pitch, Fade float32
+ }))(obj)).Pitch
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ Name string
+ Gain, Pitch, Fade float32
+ }))(obj)).Fade
+ *p = math.Float32frombits(read32(r))
+ }
+}
+
+func (obj *AlphaUse) serialize(w io.Writer) {
+ {
+ x := *(*(uint8))(obj)
+ write8(w, uint8(x))
+ }
+}
+
+func (obj *AlphaUse) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint8))(obj)
+ *p = read8(r)
+ }
+}
+
+func (obj *Keys) serialize(w io.Writer) {
+ {
+ x := *(*(uint32))(obj)
+ write32(w, uint32(x))
+ }
+}
+
+func (obj *Keys) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint32))(obj)
+ *p = read32(r)
+ }
+}
+
+func (obj *MapBlkFlags) serialize(w io.Writer) {
+ {
+ x := *(*(uint8))(obj)
+ write8(w, uint8(x))
+ }
+}
+
+func (obj *MapBlkFlags) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint8))(obj)
+ *p = read8(r)
+ }
+}
+
+func (obj *LitFromBlks) serialize(w io.Writer) {
+ {
+ x := *(*(uint16))(obj)
+ write16(w, uint16(x))
+ }
+}
+
+func (obj *LitFromBlks) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint16))(obj)
+ *p = read16(r)
+ }
+}
+
+func (obj *ItemType) serialize(w io.Writer) {
+ {
+ x := *(*(uint8))(obj)
+ write8(w, uint8(x))
+ }
+}
+
+func (obj *ItemType) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint8))(obj)
+ *p = read8(r)
+ }
+}
+
+func (obj *ToolCaps) serialize(w io.Writer) {
+ if _ = (*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)); false {
+ {
+ x := (*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).NonNil
+ if x {
+ write8(w, 1)
+ } else {
+ write8(w, 0)
+ }
+ }
+ }
+ {
+ ow := w
+ w := new(bytes.Buffer)
+ /*
+ if r.N > 0 { (*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).NonNil = true}; /**/{
+ if (*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).NonNil {
+ {
+ local376 := uint8(5)
+ {
+ x := local376
+ write8(w, uint8(x))
+ }
+ }
+ {
+ x := (*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).AttackCooldown
+ write32(w, math.Float32bits(x))
+ }
+ {
+ x := (*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).MaxDropLvl
+ write16(w, uint16(x))
+ }
+ if len(((*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).GroupCaps)) > math.MaxUint32 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint32(len(((*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).GroupCaps)))
+ write32(w, uint32(x))
+ }
+ for local377 := range (*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).GroupCaps {
+ if err := pcall(func() {
+ (((*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).GroupCaps)[local377]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.ToolGroupCaps", err))
+ }
+ }
+ if len(((*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).DmgGroups)) > math.MaxUint32 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint32(len(((*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).DmgGroups)))
+ write32(w, uint32(x))
+ }
+ for local378 := range (*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).DmgGroups {
+ if err := pcall(func() {
+ (((*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).DmgGroups)[local378]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Group", err))
+ }
+ }
+ {
+ x := (*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).AttackUses
+ write16(w, uint16(x))
+ }
+ }
+ }
+ {
+ buf := w
+ w := ow
+ if len((buf.Bytes())) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len((buf.Bytes())))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write((buf.Bytes())[:])
+ chk(err)
+ }
+ }
+ }
+}
+
+func (obj *ToolCaps) deserialize(r io.Reader) {
+ if _ = (*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)); false {
+ {
+ p := &(*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).NonNil
+ switch n := read8(r); n {
+ case 0:
+ *p = false
+ case 1:
+ *p = true
+ default:
+ chk(fmt.Errorf("invalid bool: %d", n))
+ }
+ }
+ }
+ {
+ var n uint16
+ {
+ p := &n
+ *p = read16(r)
+ }
+ r := &io.LimitedReader{r, int64(n)}
+ if r.N > 0 {
+ (*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).NonNil = true
+ } /**/
+ {
+ if (*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).NonNil {
+ {
+ var local379 uint8
+ {
+ p := &local379
+ *p = read8(r)
+ }
+ if local379 != (5) {
+ chk(fmt.Errorf("const %v: %v", 5, local379))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).AttackCooldown
+ *p = math.Float32frombits(read32(r))
+ }
+ {
+ p := &(*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).MaxDropLvl
+ *p = int16(read16(r))
+ }
+ var local380 uint32
+ {
+ p := &local380
+ *p = read32(r)
+ }
+ ((*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).GroupCaps) = make([]ToolGroupCaps, local380)
+ for local381 := range (*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).GroupCaps {
+ if err := pcall(func() {
+ (((*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).GroupCaps)[local381]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.ToolGroupCaps", err))
+ }
+ }
+ var local382 uint32
+ {
+ p := &local382
+ *p = read32(r)
+ }
+ ((*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).DmgGroups) = make([]Group, local382)
+ for local383 := range (*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).DmgGroups {
+ if err := pcall(func() {
+ (((*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).DmgGroups)[local383]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Group", err))
+ }
+ }
+ {
+ p := &(*(*(struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+ }))(obj)).AttackUses
+ *p = read16(r)
+ }
+ }
+ }
+ if r.N > 0 {
+ chk(fmt.Errorf("%d bytes of trailing data", r.N))
+ }
+ }
+}
+
+func (obj *AnimType) serialize(w io.Writer) {
+ {
+ x := *(*(uint8))(obj)
+ write8(w, uint8(x))
+ }
+}
+
+func (obj *AnimType) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint8))(obj)
+ *p = read8(r)
+ }
+}
+
+func (obj *Box) serialize(w io.Writer) {
+ for local384 := range *(*([2]Vec))(obj) {
+ if err := pcall(func() {
+ ((*(*([2]Vec))(obj))[local384]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Vec", err))
+ }
+ }
+}
+
+func (obj *Box) deserialize(r io.Reader) {
+ for local385 := range *(*([2]Vec))(obj) {
+ if err := pcall(func() {
+ ((*(*([2]Vec))(obj))[local385]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Vec", err))
+ }
+ }
+}
+
+func (obj *TileFlags) serialize(w io.Writer) {
+ {
+ x := *(*(uint16))(obj)
+ write16(w, uint16(x))
+ }
+}
+
+func (obj *TileFlags) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint16))(obj)
+ *p = read16(r)
+ }
+}
+
+func (obj *AlignType) serialize(w io.Writer) {
+ {
+ x := *(*(uint8))(obj)
+ write8(w, uint8(x))
+ }
+}
+
+func (obj *AlignType) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint8))(obj)
+ *p = read8(r)
+ }
+}
+
+func (obj *NodeBoxType) serialize(w io.Writer) {
+ {
+ x := *(*(uint8))(obj)
+ write8(w, uint8(x))
+ }
+}
+
+func (obj *NodeBoxType) deserialize(r io.Reader) {
+ {
+ p := &*(*(uint8))(obj)
+ *p = read8(r)
+ }
+}
+
+func (obj *DirBoxes) serialize(w io.Writer) {
+ if len(((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Top)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Top)))
+ write16(w, uint16(x))
+ }
+ for local386 := range (*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Top {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Top)[local386]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ }
+ if len(((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Bot)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Bot)))
+ write16(w, uint16(x))
+ }
+ for local387 := range (*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Bot {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Bot)[local387]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ }
+ if len(((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Front)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Front)))
+ write16(w, uint16(x))
+ }
+ for local388 := range (*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Front {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Front)[local388]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ }
+ if len(((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Left)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Left)))
+ write16(w, uint16(x))
+ }
+ for local389 := range (*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Left {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Left)[local389]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ }
+ if len(((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Back)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Back)))
+ write16(w, uint16(x))
+ }
+ for local390 := range (*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Back {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Back)[local390]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ }
+ if len(((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Right)) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Right)))
+ write16(w, uint16(x))
+ }
+ for local391 := range (*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Right {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Right)[local391]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ }
+}
+
+func (obj *DirBoxes) deserialize(r io.Reader) {
+ var local392 uint16
+ {
+ p := &local392
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Top) = make([]Box, local392)
+ for local393 := range (*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Top {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Top)[local393]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ }
+ var local394 uint16
+ {
+ p := &local394
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Bot) = make([]Box, local394)
+ for local395 := range (*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Bot {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Bot)[local395]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ }
+ var local396 uint16
+ {
+ p := &local396
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Front) = make([]Box, local396)
+ for local397 := range (*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Front {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Front)[local397]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ }
+ var local398 uint16
+ {
+ p := &local398
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Left) = make([]Box, local398)
+ for local399 := range (*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Left {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Left)[local399]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ }
+ var local400 uint16
+ {
+ p := &local400
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Back) = make([]Box, local400)
+ for local401 := range (*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Back {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Back)[local401]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ }
+ var local402 uint16
+ {
+ p := &local402
+ *p = read16(r)
+ }
+ ((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Right) = make([]Box, local402)
+ for local403 := range (*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Right {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Top, Bot []Box
+ Front, Left, Back, Right []Box
+ }))(obj)).Right)[local403]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.Box", err))
+ }
+ }
+}
+
+func (obj *ToolGroupCaps) serialize(w io.Writer) {
+ if len(([]byte((*(*(struct {
+ Name string
+ Uses int16
+ MaxLvl int16
+
+ //mt:len32
+ Times []DigTime
+ }))(obj)).Name))) > math.MaxUint16 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint16(len(([]byte((*(*(struct {
+ Name string
+ Uses int16
+ MaxLvl int16
+
+ //mt:len32
+ Times []DigTime
+ }))(obj)).Name))))
+ write16(w, uint16(x))
+ }
+ {
+ _, err := w.Write(([]byte((*(*(struct {
+ Name string
+ Uses int16
+ MaxLvl int16
+
+ //mt:len32
+ Times []DigTime
+ }))(obj)).Name))[:])
+ chk(err)
+ }
+ {
+ x := (*(*(struct {
+ Name string
+ Uses int16
+ MaxLvl int16
+
+ //mt:len32
+ Times []DigTime
+ }))(obj)).Uses
+ write16(w, uint16(x))
+ }
+ {
+ x := (*(*(struct {
+ Name string
+ Uses int16
+ MaxLvl int16
+
+ //mt:len32
+ Times []DigTime
+ }))(obj)).MaxLvl
+ write16(w, uint16(x))
+ }
+ if len(((*(*(struct {
+ Name string
+ Uses int16
+ MaxLvl int16
+
+ //mt:len32
+ Times []DigTime
+ }))(obj)).Times)) > math.MaxUint32 {
+ chk(ErrTooLong)
+ }
+ {
+ x := uint32(len(((*(*(struct {
+ Name string
+ Uses int16
+ MaxLvl int16
+
+ //mt:len32
+ Times []DigTime
+ }))(obj)).Times)))
+ write32(w, uint32(x))
+ }
+ for local404 := range (*(*(struct {
+ Name string
+ Uses int16
+ MaxLvl int16
+
+ //mt:len32
+ Times []DigTime
+ }))(obj)).Times {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Name string
+ Uses int16
+ MaxLvl int16
+
+ //mt:len32
+ Times []DigTime
+ }))(obj)).Times)[local404]).serialize(w)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.DigTime", err))
+ }
+ }
+}
+
+func (obj *ToolGroupCaps) deserialize(r io.Reader) {
+ var local405 []uint8
+ var local406 uint16
+ {
+ p := &local406
+ *p = read16(r)
+ }
+ (local405) = make([]uint8, local406)
+ {
+ _, err := io.ReadFull(r, (local405)[:])
+ chk(err)
+ }
+ ((*(*(struct {
+ Name string
+ Uses int16
+ MaxLvl int16
+
+ //mt:len32
+ Times []DigTime
+ }))(obj)).Name) = string(local405)
+ {
+ p := &(*(*(struct {
+ Name string
+ Uses int16
+ MaxLvl int16
+
+ //mt:len32
+ Times []DigTime
+ }))(obj)).Uses
+ *p = int16(read16(r))
+ }
+ {
+ p := &(*(*(struct {
+ Name string
+ Uses int16
+ MaxLvl int16
+
+ //mt:len32
+ Times []DigTime
+ }))(obj)).MaxLvl
+ *p = int16(read16(r))
+ }
+ var local407 uint32
+ {
+ p := &local407
+ *p = read32(r)
+ }
+ ((*(*(struct {
+ Name string
+ Uses int16
+ MaxLvl int16
+
+ //mt:len32
+ Times []DigTime
+ }))(obj)).Times) = make([]DigTime, local407)
+ for local408 := range (*(*(struct {
+ Name string
+ Uses int16
+ MaxLvl int16
+
+ //mt:len32
+ Times []DigTime
+ }))(obj)).Times {
+ if err := pcall(func() {
+ (((*(*(struct {
+ Name string
+ Uses int16
+ MaxLvl int16
+
+ //mt:len32
+ Times []DigTime
+ }))(obj)).Times)[local408]).deserialize(r)
+ }); err != nil {
+ if err == io.EOF {
+ chk(io.EOF)
+ }
+ chk(fmt.Errorf("%s: %w", "github.com/anon55555/mt.DigTime", err))
+ }
+ }
+}
+
+func (obj *DigTime) serialize(w io.Writer) {
+ {
+ x := (*(*(struct {
+ Rating int16
+ Time float32
+ }))(obj)).Rating
+ write16(w, uint16(x))
+ }
+ {
+ x := (*(*(struct {
+ Rating int16
+ Time float32
+ }))(obj)).Time
+ write32(w, math.Float32bits(x))
+ }
+}
+
+func (obj *DigTime) deserialize(r io.Reader) {
+ {
+ p := &(*(*(struct {
+ Rating int16
+ Time float32
+ }))(obj)).Rating
+ *p = int16(read16(r))
+ }
+ {
+ p := &(*(*(struct {
+ Rating int16
+ Time float32
+ }))(obj)).Time
+ *p = math.Float32frombits(read32(r))
+ }
+}
diff --git a/sound.go b/sound.go
new file mode 100644
index 0000000..953677c
--- /dev/null
+++ b/sound.go
@@ -0,0 +1,16 @@
+package mt
+
+type SoundID int32
+
+type SoundSrcType uint8
+
+const (
+ NoSrc SoundSrcType = iota
+ PosSrc
+ AOSrc
+)
+
+type SoundDef struct {
+ Name string
+ Gain, Pitch, Fade float32
+}
diff --git a/stack.go b/stack.go
index 4e7cc18..d930604 100644
--- a/stack.go
+++ b/stack.go
@@ -1,5 +1,8 @@
-// In this file, JSON refers to WTF-JSON, a variant of JSON used by Minetest
+// In this file, JSON refers to WTF-JSON.
+//
+// BUG(mt): Itemstrings use variant of JSON called WTF-JSON
// where \u00XX escapes in string literals act like Go's \xXX escapes.
+// This should not be fixed because it would break existing items.
package mt
@@ -22,6 +25,10 @@ type Item struct {
ItemMeta
}
+// String returns the Stack's itemstring.
+//
+// BUG(mt): The term itemstring is somewhat misleading, because
+// an itemstring represents a stack of items, not a single item.
func (s Stack) String() string {
if s.Count == 0 {
return ""
@@ -83,6 +90,7 @@ func jsonStr(s string) string {
return b.String()
}
+// Scan scans an itemstring, implementing the fmt.Scanner interface.
func (stk *Stack) Scan(state fmt.ScanState, verb rune) (err error) {
*stk = Stack{}
diff --git a/texture.go b/texture.go
new file mode 100644
index 0000000..450cfa1
--- /dev/null
+++ b/texture.go
@@ -0,0 +1,3 @@
+package mt
+
+type Texture string
diff --git a/tileanim.go b/tileanim.go
new file mode 100644
index 0000000..bc6d6dd
--- /dev/null
+++ b/tileanim.go
@@ -0,0 +1,27 @@
+package mt
+
+type AnimType uint8
+
+const (
+ NoAnim AnimType = iota
+ VerticalFrameAnim
+ SpritesheetAnim
+ maxAnim
+)
+
+type TileAnim struct {
+ Type AnimType
+ //mt:assert %s.Type < maxAnim
+
+ //mt:if %s.Type == SpritesheetAnim
+ AspectRatio [2]uint8
+ //mt:end
+
+ //mt:if %s.Type == VerticalFrameAnim
+ NFrames [2]uint16
+ //mt:end
+
+ //mt:if %s.Type != NoAnim
+ Duration float32 // in seconds
+ //mt:end
+}
diff --git a/tiledef.go b/tiledef.go
new file mode 100644
index 0000000..9a5714d
--- /dev/null
+++ b/tiledef.go
@@ -0,0 +1,40 @@
+package mt
+
+type AlignType uint8
+
+const (
+ NoAlign AlignType = iota
+ WorldAlign
+ UserAlign
+)
+
+type TileFlags uint16
+
+const (
+ TileBackfaceCull TileFlags = 1 << iota
+ TileAbleH
+ TileAbleV
+ TileColor
+ TileScale
+ TileAlign
+)
+
+type TileDef struct {
+ //mt:const uint8(6)
+
+ Texture
+ Anim TileAnim
+ Flags TileFlags
+
+ //mt:if %s.Flags&TileColor != 0
+ R, G, B uint8
+ //mt:end
+
+ //mt:if %s.Flags&TileScale != 0
+ Scale uint8
+ //mt:end
+
+ //mt:if %s.Flags&TileAlign != 0
+ Align AlignType
+ //mt:end
+}
diff --git a/tocltcmds b/tocltcmds
new file mode 100644
index 0000000..0dd5e7d
--- /dev/null
+++ b/tocltcmds
@@ -0,0 +1,57 @@
+2 Hello
+3 AcceptAuth
+4 AcceptSudoMode
+5 DenySudoMode
+10 Disco
+32 BlkData
+33 AddNode
+34 RemoveNode
+39 Inv
+41 TimeOfDay
+42 CSMRestrictionFlags
+43 AddPlayerVel
+44 MediaPush
+47 ChatMsg
+49 AORmAdd
+50 AOMsgs
+51 HP
+52 MovePlayer
+53 DiscoLegacy
+54 FOV
+55 DeathScreen
+56 Media
+58 NodeDefs
+60 AnnounceMedia
+61 ItemDefs
+63 PlaySound
+64 StopSound
+65 Privs
+66 InvFormspec
+67 DetachedInv
+68 ShowFormspec
+69 Movement
+70 SpawnParticle
+71 AddParticleSpawner
+73 AddHUD
+74 RmHUD
+75 ChangeHUD
+76 HUDFlags
+77 SetHotbarParam
+78 Breath
+79 SkyParams
+80 OverrideDayNightRatio
+81 LocalPlayerAnim
+82 EyeOffset
+83 DelParticleSpawner
+84 CloudParams
+85 FadeSound
+86 UpdatePlayerList
+87 ModChanMsg
+88 ModChanSig
+89 NodeMetasChanged
+90 SunParams
+91 MoonParams
+92 StarParams
+96 SRPBytesSaltB
+97 FormspecPrepend
+98 MinimapModes
diff --git a/tocltcmds.go b/tocltcmds.go
new file mode 100644
index 0000000..6af4f09
--- /dev/null
+++ b/tocltcmds.go
@@ -0,0 +1,766 @@
+//go:generate ./cmdno.sh tocltcmds ToClt toClt uint16 Cmd newToCltCmd
+
+package mt
+
+import (
+ "crypto/sha1"
+ "fmt"
+ "image/color"
+ "io"
+ "math"
+)
+
+type ToCltCmd interface {
+ Cmd
+ toCltCmdNo() uint16
+}
+
+// ToCltHello is sent as a response to ToSrvInit.
+// The client responds to ToCltHello by authenticating.
+type ToCltHello struct {
+ SerializeVer uint8
+ Compression CompressionModes
+ ProtoVer uint16
+ AuthMethods
+ Username string
+}
+
+// ToCltAcceptAuth is sent after the client successfully authenticates.
+// The client responds to ToCltAcceptAuth with ToSrvInit2.
+type ToCltAcceptAuth struct {
+ // The client does the equivalent of
+ // PlayerPos[1] -= 5
+ // before using PlayerPos.
+ PlayerPos Pos
+
+ MapSeed uint64
+ SendInterval float32
+ SudoAuthMethods AuthMethods
+}
+
+type ToCltAcceptSudoMode struct{}
+
+type ToCltDenySudoMode struct{}
+
+// ToCltDisco tells that the client that it has been disconnected by the server.
+type ToCltDisco struct {
+ Reason DiscoReason
+ //mt:assert %s.Reason < maxDiscoReason
+
+ //mt:if dr := %s.Reason; dr == Custom || dr == Shutdown || dr == Crash
+ Custom string
+ //mt:end
+
+ //mt:if dr := %s.Reason; dr == Shutdown || dr == Crash
+ Reconnect bool
+ //mt:end
+}
+
+type DiscoReason uint8
+
+const (
+ WrongPasswd DiscoReason = iota
+ UnexpectedData
+ SrvIsSingleplayer
+ UnsupportedVer
+ BadNameChars
+ BadName
+ TooManyClts
+ EmptyPasswd
+ AlreadyConnected
+ SrvErr
+ Custom
+ Shutdown
+ Crash
+ maxDiscoReason
+)
+
+func (cmd ToCltDisco) String() (msg string) {
+ switch cmd.Reason {
+ case WrongPasswd:
+ return "wrong password"
+ case UnexpectedData:
+ return "unexpected data"
+ case SrvIsSingleplayer:
+ return "server is singleplayer"
+ case UnsupportedVer:
+ return "unsupported client version"
+ case BadNameChars:
+ return "disallowed character(s) in player name"
+ case BadName:
+ return "disallowed player name"
+ case TooManyClts:
+ return "too many clients"
+ case EmptyPasswd:
+ return "empty password"
+ case AlreadyConnected:
+ return "another client is already connected with the same name"
+ case SrvErr:
+ return "server error"
+ case Custom:
+ return cmd.Custom
+ case Shutdown:
+ msg = "server shutdown"
+ case Crash:
+ msg = "server crash"
+ default:
+ msg = fmt.Sprintf("DiscoReason(%d)", cmd.Reason)
+ }
+
+ if cmd.Custom != "" {
+ msg += ": " + cmd.Custom
+ }
+
+ return
+}
+
+// ToCltBlkData tells the client the contents of a nearby MapBlk.
+type ToCltBlkData struct {
+ Blkpos [3]int16
+ Blk MapBlk
+}
+
+// ToCltAddNode tells the client that a nearby node changed
+// to something other than air.
+type ToCltAddNode struct {
+ Pos [3]int16
+ Node
+ KeepMeta bool
+}
+
+// ToCltRemoveNode tells the client that a nearby node changed to air.
+type ToCltRemoveNode struct {
+ Pos [3]int16
+}
+
+// ToCltInv updates the client's inventory.
+type ToCltInv struct {
+ //mt:raw
+ Inv string
+}
+
+// ToCltTimeOfDay updates the client's in-game time of day.
+type ToCltTimeOfDay struct {
+ Time uint16 // %24000
+ Speed float32 // Speed times faster than real time
+}
+
+// ToCltCSMRestrictionFlags tells the client how use of CSMs should be restricted.
+type ToCltCSMRestrictionFlags struct {
+ Flags CSMRestrictionFlags
+
+ // MapRange is the maximum distance from the player CSMs can read the map
+ // if Flags&LimitMapRange != 0.
+ MapRange uint32
+}
+
+type CSMRestrictionFlags uint64
+
+const (
+ NoCSMs CSMRestrictionFlags = 1 << iota
+ NoChatMsgs
+ NoItemDefs
+ NoNodeDefs
+ LimitMapRange
+ NoPlayerList
+)
+
+// ToCltAddPlayerVel tells the client to add Vel to the player's velocity.
+type ToCltAddPlayerVel struct {
+ Vel Vec
+}
+
+// ToCltMediaPush is sent when a media file is dynamically added.
+type ToCltMediaPush struct {
+ //mt:const uint16(sha1.Size)
+ SHA1 [sha1.Size]byte
+ Filename string
+ ShouldCache bool
+
+ //mt:len32
+ Data []byte
+}
+
+// ToCltChatMsg tells the client that is has received a chat message.
+type ToCltChatMsg struct {
+ //mt:const uint8(1)
+
+ Type ChatMsgType
+
+ //mt:utf16
+ Sender, Text string
+
+ Timestamp int64 // Unix time.
+}
+
+type ChatMsgType uint8
+
+const (
+ RawMsg ChatMsgType = iota
+ NormalMsg
+ AnnounceMsg
+ SysMsg
+ maxMsg
+)
+
+func (t ChatMsgType) String() string {
+ if t >= maxMsg {
+ return fmt.Sprintf("ChatMsgType(%d)", t)
+ }
+
+ return [...]string{
+ "raw",
+ "normal",
+ "announce",
+ "sys",
+ }[t]
+}
+
+// ToCltAORmAdd tells the client that AOs have been removed from and/or added to
+// the AOs that it can see.
+type ToCltAORmAdd struct {
+ Remove []AOID
+ Add []struct {
+ ID AOID
+ //mt:const genericCAO
+ //mt:lenhdr 32
+ InitData AOInitData
+ //mt:end
+ }
+}
+
+// ToCltAOMsgs updates the client about nearby AOs.
+type ToCltAOMsgs struct {
+ //mt:raw
+ Msgs []IDAOMsg
+}
+
+// ToCltHP updates the player's HP on the client.
+type ToCltHP struct {
+ HP uint16
+}
+
+// ToCltMovePlayer tells the client that the player has been moved server-side.
+type ToCltMovePlayer struct {
+ Pos
+ Pitch, Yaw float32
+}
+
+type ToCltDiscoLegacy struct {
+ //mt:utf16
+ Reason string
+}
+
+// ToCltFOV tells the client to change its FOV.
+type ToCltFOV struct {
+ FOV float32
+ Multiplier bool
+ TransitionTime float32
+}
+
+// ToCltDeathScreen tells the client to show the death screen.
+type ToCltDeathScreen struct {
+ PointCam bool
+ PointAt Pos
+}
+
+// ToCltMedia responds to a ToSrvMedia packet with the requested media files.
+type ToCltMedia struct {
+ // N is the total number of ToCltMedia packets.
+ // I is the index of this packet.
+ N, I uint16
+
+ //mt:len32
+ Files []struct {
+ Name string
+
+ //mt:len32
+ Data []byte
+ }
+}
+
+// ToCltNodeDefs tells the client the definitions of nodes.
+type ToCltNodeDefs struct {
+ //mt:lenhdr 32
+ //mt:zlib
+
+ // Version.
+ //mt:const uint8(1)
+
+ // See (de)serialize.fmt.
+ Defs []NodeDef
+
+ //mt:end
+ //mt:end
+}
+
+// ToCltAnnounceMedia tells the client what media is available on request.
+// See ToSrvReqMedia.
+type ToCltAnnounceMedia struct {
+ Files []struct {
+ Name string
+ Base64SHA1 string
+ }
+ URL string
+}
+
+// ToCltItemDefs tells the client the definitions of items.
+type ToCltItemDefs struct {
+ //mt:lenhdr 32
+ //mt:zlib
+
+ //mt:const uint8(0)
+
+ Defs []ItemDef
+ Aliases []struct{ Alias, Orig string }
+
+ //mt:end
+ //mt:end
+}
+
+// ToCltPlaySound tells the client to play a sound.
+type ToCltPlaySound struct {
+ ID SoundID
+ Name string
+ Gain float32
+ SrcType SoundSrcType
+ Pos
+ SrcAOID AOID
+ Loop bool
+ Fade float32
+ Pitch float32
+ Ephemeral bool
+}
+
+// ToCltStopSound tells the client to stop playing a sound.
+type ToCltStopSound struct {
+ ID SoundID
+}
+
+// ToCltPrivs tells the client its privs.
+type ToCltPrivs struct {
+ Privs []string
+}
+
+// ToCltInvFormspec tells the client its inventory formspec.
+type ToCltInvFormspec struct {
+ //mt:len32
+ Formspec string
+}
+
+// ToCltDetachedInv updates a detached inventory on the client.
+type ToCltDetachedInv struct {
+ Name string
+ Keep bool
+ Len uint16 // deprecated
+
+ //mt:raw
+ Inv string
+}
+
+// ToCltShowFormspec tells the client to show a formspec.
+type ToCltShowFormspec struct {
+ //mt:len32
+ Formspec string
+
+ Formname string
+}
+
+// ToCltMovement tells the client how to move.
+type ToCltMovement struct {
+ DefaultAccel, AirAccel, FastAccel,
+ WalkSpeed, CrouchSpeed, FastSpeed, ClimbSpeed, JumpSpeed,
+ Fluidity, Smoothing, Sink, // liquids
+ Gravity float32
+}
+
+// ToCltSpawnParticle tells the client to spawn a particle.
+type ToCltSpawnParticle struct {
+ Pos, Vel, Acc [3]float32
+ ExpirationTime float32 // in seconds.
+ Size float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ Vertical bool
+ CollisionRm bool
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+}
+
+type ParticleSpawnerID uint32
+
+// ToCltAddParticleSpawner tells the client to add a particle spawner.
+type ToCltAddParticleSpawner struct {
+ Amount uint16
+ Duration float32
+ Pos, Vel, Acc [2][3]float32
+ ExpirationTime [2]float32 // in seconds.
+ Size [2]float32
+ Collide bool
+
+ //mt:len32
+ Texture
+
+ ID ParticleSpawnerID
+ Vertical bool
+ CollisionRm bool
+ AttachedAOID AOID
+ AnimParams TileAnim
+ Glow uint8
+ AOCollision bool
+ NodeParam0 Content
+ NodeParam2 uint8
+ NodeTile uint8
+}
+
+type HUDID uint32
+
+// ToCltHUDAdd tells the client to add a HUD.
+type ToCltAddHUD struct {
+ ID HUDID
+
+ Type HUDType
+
+ Pos [2]float32
+ Name string
+ Scale [2]float32
+ Text string
+ Number uint32
+ Item uint32
+ Dir uint32
+ Align [2]float32
+ Offset [2]float32
+ WorldPos Pos
+ Size [2]int32
+ ZIndex int16
+ Text2 string
+}
+
+type HUDType uint8
+
+const (
+ ImgHUD HUDType = iota
+ TextHUD
+ StatbarHUD
+ InvHUD
+ WaypointHUD
+ ImgWaypointHUD
+)
+
+// ToCltRmHUD tells the client to remove a HUD.
+type ToCltRmHUD struct {
+ ID HUDID
+}
+
+// ToCltChangeHUD tells the client to change a field in a HUD.
+type ToCltChangeHUD struct {
+ ID HUDID
+
+ Field HUDField
+
+ //mt:assert %s.Field < hudMax
+
+ //mt:if %s.Field == HUDPos
+ Pos [2]float32
+ //mt:end
+
+ //mt:if %s.Field == HUDName
+ Name string
+ //mt:end
+
+ //mt:if %s.Field == HUDScale
+ Scale [2]float32
+ //mt:end
+
+ //mt:if %s.Field == HUDText
+ Text string
+ //mt:end
+
+ //mt:if %s.Field == HUDNumber
+ Number uint32
+ //mt:end
+
+ //mt:if %s.Field == HUDItem
+ Item uint32
+ //mt:end
+
+ //mt:if %s.Field == HUDDir
+ Dir uint32
+ //mt:end
+
+ //mt:if %s.Field == HUDAlign
+ Align [2]float32
+ //mt:end
+
+ //mt:if %s.Field == HUDOffset
+ Offset [2]float32
+ //mt:end
+
+ //mt:if %s.Field == HUDWorldPos
+ WorldPos Pos
+ //mt:end
+
+ //mt:if %s.Field == HUDSize
+ Size [2]int32
+ //mt:end
+
+ //mt:if %s.Field == HUDZIndex
+ ZIndex uint32
+ //mt:end
+
+ //mt:if %s.Field == HUDText2
+ Text2 string
+ //mt:end
+}
+
+type HUDField uint8
+
+const (
+ HUDPos HUDField = iota
+ HUDName
+ HUDScale
+ HUDText
+ HUDNumber
+ HUDItem
+ HUDDir
+ HUDAlign
+ HUDOffset
+ HUDWorldPos
+ HUDSize
+ HUDZIndex
+ HUDText2
+ hudMax
+)
+
+// ToCltHUDFlags tells the client to update its HUD flags.
+type ToCltHUDFlags struct {
+ // &^= Mask
+ // |= Flags
+ Flags, Mask HUDFlags
+}
+
+type HUDFlags uint32
+
+const (
+ ShowHotbar HUDFlags = 1 << iota
+ ShowHealthBar
+ ShowCrosshair
+ ShowWieldedItem
+ ShowBreathBar
+ ShowMinimap
+ ShowRadarMinimap
+)
+
+// ToCltSetHotbarParam tells the client to set a hotbar parameter.
+type ToCltSetHotbarParam struct {
+ Param HotbarParam
+
+ //mt:if %s.Param == HotbarSize
+ //mt:const uint16(4) // Size of Size field.
+ Size int32
+ //mt:end
+
+ //mt:if %s.Param != HotbarSize
+ Img Texture
+ //mt:end
+}
+
+type HotbarParam uint16
+
+const (
+ HotbarSize HotbarParam = 1 + iota
+ HotbarImg
+ HotbarSelImg
+)
+
+// ToCltBreath tells the client how much breath it has.
+type ToCltBreath struct {
+ Breath uint16
+}
+
+// ToCltSkyParams tells the client how to render the sky.
+type ToCltSkyParams struct {
+ BgColor color.NRGBA
+ Type string
+ Clouds bool
+ SunFogTint color.NRGBA
+ MoonFogTint color.NRGBA
+ FogTintType string
+
+ //mt:if %s.Type == "skybox"
+ Textures []Texture
+ //mt:end
+
+ //mt:if %s.Type == "regular"
+ DaySky, DayHorizon,
+ DawnSky, DawnHorizon,
+ NightSky, NightHorizon,
+ Indoor color.NRGBA
+ //mt:end
+}
+
+// ToCltOverrideDayNightRatio overrides the client's day-night ratio
+type ToCltOverrideDayNightRatio struct {
+ Override bool
+ Ratio uint16
+}
+
+// ToCltLocalPlayerAnim tells the client how to animate the player.
+type ToCltLocalPlayerAnim struct {
+ Idle, Walk, Dig, WalkDig [2]int32
+ Speed float32
+}
+
+// ToCltEyeOffset tells the client where to position the camera
+// relative to the player.
+type ToCltEyeOffset struct {
+ First, Third Vec
+}
+
+// ToCltDelParticleSpawner tells the client to delete a particle spawner.
+type ToCltDelParticleSpawner struct {
+ ID ParticleSpawnerID
+}
+
+// ToCltCloudParams tells the client how to render the clouds.
+type ToCltCloudParams struct {
+ Density float32
+ DiffuseColor color.NRGBA
+ AmbientColor color.NRGBA
+ Height float32
+ Thickness float32
+ Speed [2]float32
+}
+
+// ToCltFadeSound tells the client to fade a sound.
+type ToCltFadeSound struct {
+ ID SoundID
+ Step float32
+ Gain float32
+}
+
+// ToCltUpdatePlayerList informs the client of players leaving or joining.
+type ToCltUpdatePlayerList struct {
+ Type PlayerListUpdateType
+ Players []string
+}
+
+type PlayerListUpdateType uint8
+
+const (
+ InitPlayers PlayerListUpdateType = iota
+ AddPlayers
+ RemovePlayers
+)
+
+// ToCltModChanMsg tells the client it has been sent a message on a mod channel.
+type ToCltModChanMsg struct {
+ Channel string
+ Sender string
+ Msg string
+}
+
+// ToCltModChanMsg tells the client it has received a signal on a mod channel.
+type ToCltModChanSig struct {
+ Signal ModChanSig
+ Channel string
+}
+
+type ModChanSig uint8
+
+const (
+ JoinOK ModChanSig = iota
+ JoinFail
+ LeaveOK
+ LeaveFail
+ NotRegistered
+ SetState
+)
+
+// ToCltModChanMsg is sent when node metadata near the client changes.
+type ToCltNodeMetasChanged struct {
+ //mt:lenhdr 32
+ Changed map[[3]int16]*NodeMeta
+ //mt:end
+}
+
+// ToCltSunParams tells the client how to render the sun.
+type ToCltSunParams struct {
+ Visible bool
+ Texture
+ ToneMap Texture
+ Rise Texture
+ Rising bool
+ Size float32
+}
+
+// ToCltMoonParams tells the client how to render the moon.
+type ToCltMoonParams struct {
+ Visible bool
+ Texture
+ ToneMap Texture
+ Size float32
+}
+
+// ToCltStarParams tells the client how to render the stars.
+type ToCltStarParams struct {
+ Visible bool
+ Count uint32
+ Color color.NRGBA
+ Size float32
+}
+
+type ToCltSRPBytesSaltB struct {
+ Salt, B []byte
+}
+
+// ToCltFormspecPrepend tells the client to prepend a string to all formspecs.
+type ToCltFormspecPrepend struct {
+ Prepend string
+}
+
+// ToCltMinimapModes tells the client the set of available minimap modes.
+type ToCltMinimapModes struct {
+ Current uint16
+ Modes []MinimapMode
+}
+
+func (cmd *ToCltMinimapModes) serialize(w io.Writer) error {
+ buf := make([]byte, 4)
+ if len(cmd.Modes) > math.MaxUint16 {
+ return ErrTooLong
+ }
+ be.PutUint16(buf[0:2], uint16(len(cmd.Modes)))
+ be.PutUint16(buf[2:4], cmd.Current)
+ if _, err := w.Write(buf); err != nil {
+ return err
+ }
+ for i := range cmd.Modes {
+ if err := serialize(w, &cmd.Modes[i]); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+func (cmd *ToCltMinimapModes) deserialize(r io.Reader) error {
+ buf := make([]byte, 4)
+ if _, err := io.ReadFull(r, buf); err != nil {
+ return err
+ }
+ cmd.Modes = make([]MinimapMode, be.Uint16(buf[0:2]))
+ cmd.Current = be.Uint16(buf[2:4])
+ for i := range cmd.Modes {
+ if err := deserialize(r, &cmd.Modes[i]); err != nil {
+ return err
+ }
+ }
+ return nil
+}
diff --git a/tocltcmds_cmdno.go b/tocltcmds_cmdno.go
new file mode 100644
index 0000000..8999717
--- /dev/null
+++ b/tocltcmds_cmdno.go
@@ -0,0 +1,121 @@
+// Code generated by cmdno.sh. DO NOT EDIT.
+
+package mt
+
+func (*ToCltHello) toCltCmdNo() uint16 { return 2 }
+func (*ToCltAcceptAuth) toCltCmdNo() uint16 { return 3 }
+func (*ToCltAcceptSudoMode) toCltCmdNo() uint16 { return 4 }
+func (*ToCltDenySudoMode) toCltCmdNo() uint16 { return 5 }
+func (*ToCltDisco) toCltCmdNo() uint16 { return 10 }
+func (*ToCltBlkData) toCltCmdNo() uint16 { return 32 }
+func (*ToCltAddNode) toCltCmdNo() uint16 { return 33 }
+func (*ToCltRemoveNode) toCltCmdNo() uint16 { return 34 }
+func (*ToCltInv) toCltCmdNo() uint16 { return 39 }
+func (*ToCltTimeOfDay) toCltCmdNo() uint16 { return 41 }
+func (*ToCltCSMRestrictionFlags) toCltCmdNo() uint16 { return 42 }
+func (*ToCltAddPlayerVel) toCltCmdNo() uint16 { return 43 }
+func (*ToCltMediaPush) toCltCmdNo() uint16 { return 44 }
+func (*ToCltChatMsg) toCltCmdNo() uint16 { return 47 }
+func (*ToCltAORmAdd) toCltCmdNo() uint16 { return 49 }
+func (*ToCltAOMsgs) toCltCmdNo() uint16 { return 50 }
+func (*ToCltHP) toCltCmdNo() uint16 { return 51 }
+func (*ToCltMovePlayer) toCltCmdNo() uint16 { return 52 }
+func (*ToCltDiscoLegacy) toCltCmdNo() uint16 { return 53 }
+func (*ToCltFOV) toCltCmdNo() uint16 { return 54 }
+func (*ToCltDeathScreen) toCltCmdNo() uint16 { return 55 }
+func (*ToCltMedia) toCltCmdNo() uint16 { return 56 }
+func (*ToCltNodeDefs) toCltCmdNo() uint16 { return 58 }
+func (*ToCltAnnounceMedia) toCltCmdNo() uint16 { return 60 }
+func (*ToCltItemDefs) toCltCmdNo() uint16 { return 61 }
+func (*ToCltPlaySound) toCltCmdNo() uint16 { return 63 }
+func (*ToCltStopSound) toCltCmdNo() uint16 { return 64 }
+func (*ToCltPrivs) toCltCmdNo() uint16 { return 65 }
+func (*ToCltInvFormspec) toCltCmdNo() uint16 { return 66 }
+func (*ToCltDetachedInv) toCltCmdNo() uint16 { return 67 }
+func (*ToCltShowFormspec) toCltCmdNo() uint16 { return 68 }
+func (*ToCltMovement) toCltCmdNo() uint16 { return 69 }
+func (*ToCltSpawnParticle) toCltCmdNo() uint16 { return 70 }
+func (*ToCltAddParticleSpawner) toCltCmdNo() uint16 { return 71 }
+func (*ToCltAddHUD) toCltCmdNo() uint16 { return 73 }
+func (*ToCltRmHUD) toCltCmdNo() uint16 { return 74 }
+func (*ToCltChangeHUD) toCltCmdNo() uint16 { return 75 }
+func (*ToCltHUDFlags) toCltCmdNo() uint16 { return 76 }
+func (*ToCltSetHotbarParam) toCltCmdNo() uint16 { return 77 }
+func (*ToCltBreath) toCltCmdNo() uint16 { return 78 }
+func (*ToCltSkyParams) toCltCmdNo() uint16 { return 79 }
+func (*ToCltOverrideDayNightRatio) toCltCmdNo() uint16 { return 80 }
+func (*ToCltLocalPlayerAnim) toCltCmdNo() uint16 { return 81 }
+func (*ToCltEyeOffset) toCltCmdNo() uint16 { return 82 }
+func (*ToCltDelParticleSpawner) toCltCmdNo() uint16 { return 83 }
+func (*ToCltCloudParams) toCltCmdNo() uint16 { return 84 }
+func (*ToCltFadeSound) toCltCmdNo() uint16 { return 85 }
+func (*ToCltUpdatePlayerList) toCltCmdNo() uint16 { return 86 }
+func (*ToCltModChanMsg) toCltCmdNo() uint16 { return 87 }
+func (*ToCltModChanSig) toCltCmdNo() uint16 { return 88 }
+func (*ToCltNodeMetasChanged) toCltCmdNo() uint16 { return 89 }
+func (*ToCltSunParams) toCltCmdNo() uint16 { return 90 }
+func (*ToCltMoonParams) toCltCmdNo() uint16 { return 91 }
+func (*ToCltStarParams) toCltCmdNo() uint16 { return 92 }
+func (*ToCltSRPBytesSaltB) toCltCmdNo() uint16 { return 96 }
+func (*ToCltFormspecPrepend) toCltCmdNo() uint16 { return 97 }
+func (*ToCltMinimapModes) toCltCmdNo() uint16 { return 98 }
+
+var newToCltCmd = map[uint16]func() Cmd{
+ 2: func() Cmd { return new(ToCltHello) },
+ 3: func() Cmd { return new(ToCltAcceptAuth) },
+ 4: func() Cmd { return new(ToCltAcceptSudoMode) },
+ 5: func() Cmd { return new(ToCltDenySudoMode) },
+ 10: func() Cmd { return new(ToCltDisco) },
+ 32: func() Cmd { return new(ToCltBlkData) },
+ 33: func() Cmd { return new(ToCltAddNode) },
+ 34: func() Cmd { return new(ToCltRemoveNode) },
+ 39: func() Cmd { return new(ToCltInv) },
+ 41: func() Cmd { return new(ToCltTimeOfDay) },
+ 42: func() Cmd { return new(ToCltCSMRestrictionFlags) },
+ 43: func() Cmd { return new(ToCltAddPlayerVel) },
+ 44: func() Cmd { return new(ToCltMediaPush) },
+ 47: func() Cmd { return new(ToCltChatMsg) },
+ 49: func() Cmd { return new(ToCltAORmAdd) },
+ 50: func() Cmd { return new(ToCltAOMsgs) },
+ 51: func() Cmd { return new(ToCltHP) },
+ 52: func() Cmd { return new(ToCltMovePlayer) },
+ 53: func() Cmd { return new(ToCltDiscoLegacy) },
+ 54: func() Cmd { return new(ToCltFOV) },
+ 55: func() Cmd { return new(ToCltDeathScreen) },
+ 56: func() Cmd { return new(ToCltMedia) },
+ 58: func() Cmd { return new(ToCltNodeDefs) },
+ 60: func() Cmd { return new(ToCltAnnounceMedia) },
+ 61: func() Cmd { return new(ToCltItemDefs) },
+ 63: func() Cmd { return new(ToCltPlaySound) },
+ 64: func() Cmd { return new(ToCltStopSound) },
+ 65: func() Cmd { return new(ToCltPrivs) },
+ 66: func() Cmd { return new(ToCltInvFormspec) },
+ 67: func() Cmd { return new(ToCltDetachedInv) },
+ 68: func() Cmd { return new(ToCltShowFormspec) },
+ 69: func() Cmd { return new(ToCltMovement) },
+ 70: func() Cmd { return new(ToCltSpawnParticle) },
+ 71: func() Cmd { return new(ToCltAddParticleSpawner) },
+ 73: func() Cmd { return new(ToCltAddHUD) },
+ 74: func() Cmd { return new(ToCltRmHUD) },
+ 75: func() Cmd { return new(ToCltChangeHUD) },
+ 76: func() Cmd { return new(ToCltHUDFlags) },
+ 77: func() Cmd { return new(ToCltSetHotbarParam) },
+ 78: func() Cmd { return new(ToCltBreath) },
+ 79: func() Cmd { return new(ToCltSkyParams) },
+ 80: func() Cmd { return new(ToCltOverrideDayNightRatio) },
+ 81: func() Cmd { return new(ToCltLocalPlayerAnim) },
+ 82: func() Cmd { return new(ToCltEyeOffset) },
+ 83: func() Cmd { return new(ToCltDelParticleSpawner) },
+ 84: func() Cmd { return new(ToCltCloudParams) },
+ 85: func() Cmd { return new(ToCltFadeSound) },
+ 86: func() Cmd { return new(ToCltUpdatePlayerList) },
+ 87: func() Cmd { return new(ToCltModChanMsg) },
+ 88: func() Cmd { return new(ToCltModChanSig) },
+ 89: func() Cmd { return new(ToCltNodeMetasChanged) },
+ 90: func() Cmd { return new(ToCltSunParams) },
+ 91: func() Cmd { return new(ToCltMoonParams) },
+ 92: func() Cmd { return new(ToCltStarParams) },
+ 96: func() Cmd { return new(ToCltSRPBytesSaltB) },
+ 97: func() Cmd { return new(ToCltFormspecPrepend) },
+ 98: func() Cmd { return new(ToCltMinimapModes) },
+}
diff --git a/toolcaps.go b/toolcaps.go
new file mode 100644
index 0000000..c414607
--- /dev/null
+++ b/toolcaps.go
@@ -0,0 +1,45 @@
+package mt
+
+type ToolCaps struct {
+ //mt:if _ = %s; false
+ NonNil bool `json:"-"`
+ //mt:end
+
+ //mt:lenhdr 16
+
+ //mt:ifde
+ //mt:if r.N > 0 { %s.NonNil = true}; /**/
+ //mt:if %s.NonNil
+
+ //mt:const uint8(5)
+
+ AttackCooldown float32 `json:"full_punch_interval"`
+ MaxDropLvl int16 `json:"max_drop_level"`
+
+ //mt:len32
+ GroupCaps []ToolGroupCaps `json:"groupcaps"`
+
+ //mt:len32
+ DmgGroups []Group `json:"damage_groups"`
+
+ AttackUses uint16 `json:"punch_attack_uses"`
+
+ //mt:end
+ //mt:end
+
+ //mt:end
+}
+
+type ToolGroupCaps struct {
+ Name string
+ Uses int16
+ MaxLvl int16
+
+ //mt:len32
+ Times []DigTime
+}
+
+type DigTime struct {
+ Rating int16
+ Time float32
+}
diff --git a/tosrvcmds b/tosrvcmds
new file mode 100644
index 0000000..08d880f
--- /dev/null
+++ b/tosrvcmds
@@ -0,0 +1,23 @@
+0 Nil
+2 Init
+17 Init2
+23 ModChanJoin
+24 ModChanLeave
+25 ModChanMsg
+35 PlayerPos
+36 GotBlks
+37 DeletedBlks
+49 InvAction
+50 ChatMsg
+53 FallDmg
+55 SelectItem
+56 Respawn
+57 Interact
+58 RemovedSounds
+59 NodeMetaFields
+60 InvFields
+64 ReqMedia
+67 CltReady
+80 FirstSRP
+81 SRPBytesA
+82 SRPBytesM
diff --git a/tosrvcmds.go b/tosrvcmds.go
new file mode 100644
index 0000000..4f60600
--- /dev/null
+++ b/tosrvcmds.go
@@ -0,0 +1,155 @@
+//go:generate ./cmdno.sh tosrvcmds ToSrv toSrv uint16 Cmd newToSrvCmd
+
+package mt
+
+type ToSrvCmd interface {
+ Cmd
+ toSrvCmdNo() uint16
+}
+
+// ToSrvNil is the first packet sent in a connection.
+type ToSrvNil struct{}
+
+// ToSrvInit is sent as unreliable after ToSrvNil and is re-sent repeatedly
+// until either the server replies with ToCltHello or 10 seconds pass and
+// the connection times out.
+type ToSrvInit struct {
+ SerializeVer uint8
+ SupportedCompression CompressionModes
+ MinProtoVer, MaxProtoVer uint16
+ PlayerName string
+
+ //mt:opt
+ SendFullItemMeta bool
+}
+
+// ToSrvInit2 is sent after ToCltAcceptAuth is received.
+// The server responds to ToSrvInit2 by sending ToCltItemDefs, ToCltNodeDefs,
+// ToCltAnnounceMedia, ToCltMovement and ToCltCSMRestrictionFlags.
+type ToSrvInit2 struct {
+ Lang string
+}
+
+// ToSrvModChanJoin attempts to join a mod channel.
+type ToSrvModChanJoin struct {
+ Channel string
+}
+
+// ToSrvModChanJoin attempts to leave a mod channel.
+type ToSrvModChanLeave struct {
+ Channel string
+}
+
+// ToSrvModChanJoin sends a message on a mod channel.
+type ToSrvModChanMsg struct {
+ Channel string
+ Msg string
+}
+
+// ToSrvPlayerPos tells the server that the client's PlayerPos has changed.
+type ToSrvPlayerPos struct {
+ Pos PlayerPos
+}
+
+// ToSrvGotBlks tells the server that the client has received Blks.
+type ToSrvGotBlks struct {
+ //mt:len8
+ Blks [][3]int16
+}
+
+// ToSrvDeletedBlks tells the server that the client has deleted Blks.
+type ToSrvDeletedBlks struct {
+ //mt:len8
+ Blks [][3]int16
+}
+
+// ToSrvInvAction tells the server that the client has performed an inventory action.
+type ToSrvInvAction struct {
+ //mt:raw
+ Action string
+}
+
+// ToSrvChatMsg tells the server that the client has sent a chat message.
+type ToSrvChatMsg struct {
+ //mt:utf16
+ Msg string
+}
+
+// ToSrvFallDmg tells the server that the client has taken fall damage.
+type ToSrvFallDmg struct {
+ Amount uint16
+}
+
+// ToSrvSelectItem tells the server the selected item in the client's hotbar.
+type ToSrvSelectItem struct {
+ Slot uint16
+}
+
+// ToSrvRespawn tells the server that the player has respawned.
+type ToSrvRespawn struct{}
+
+// ToSrvInteract tells the server that a node or AO has been interacted with.
+type ToSrvInteract struct {
+ Action Interaction
+ ItemSlot uint16
+ //mt:lenhdr 32
+ Pointed PointedThing
+ //mt:end
+ Pos PlayerPos
+}
+
+type Interaction uint8
+
+const (
+ Dig Interaction = iota
+ StopDigging
+ Dug
+ Place
+ Use // Left click snowball-like.
+ Activate // Right click air.
+)
+
+// ToSrvRemovedSounds tells the server that the client has finished playing
+// the sounds with the given IDs.
+type ToSrvRemovedSounds struct {
+ IDs []SoundID
+}
+
+type ToSrvNodeMetaFields struct {
+ Pos [3]int16
+ Formname string
+ Fields []Field
+}
+
+type ToSrvInvFields struct {
+ Formname string
+ Fields []Field
+}
+
+// ToSrvReqMedia requests media files from the server.
+type ToSrvReqMedia struct {
+ Filenames []string
+}
+
+type ToSrvCltReady struct {
+ // Version information.
+ Major, Minor, Patch uint8
+ Reserved uint8
+ Version string
+ Formspec uint16
+}
+
+type ToSrvFirstSRP struct {
+ Salt []byte
+ Verifier []byte
+ EmptyPasswd bool
+}
+
+type ToSrvSRPBytesA struct {
+ A []byte
+ NoSHA1 bool
+}
+
+type ToSrvSRPBytesM struct {
+ M []byte
+}
diff --git a/tosrvcmds_cmdno.go b/tosrvcmds_cmdno.go
new file mode 100644
index 0000000..04e6530
--- /dev/null
+++ b/tosrvcmds_cmdno.go
@@ -0,0 +1,53 @@
+// Code generated by cmdno.sh. DO NOT EDIT.
+
+package mt
+
+func (*ToSrvNil) toSrvCmdNo() uint16 { return 0 }
+func (*ToSrvInit) toSrvCmdNo() uint16 { return 2 }
+func (*ToSrvInit2) toSrvCmdNo() uint16 { return 17 }
+func (*ToSrvModChanJoin) toSrvCmdNo() uint16 { return 23 }
+func (*ToSrvModChanLeave) toSrvCmdNo() uint16 { return 24 }
+func (*ToSrvModChanMsg) toSrvCmdNo() uint16 { return 25 }
+func (*ToSrvPlayerPos) toSrvCmdNo() uint16 { return 35 }
+func (*ToSrvGotBlks) toSrvCmdNo() uint16 { return 36 }
+func (*ToSrvDeletedBlks) toSrvCmdNo() uint16 { return 37 }
+func (*ToSrvInvAction) toSrvCmdNo() uint16 { return 49 }
+func (*ToSrvChatMsg) toSrvCmdNo() uint16 { return 50 }
+func (*ToSrvFallDmg) toSrvCmdNo() uint16 { return 53 }
+func (*ToSrvSelectItem) toSrvCmdNo() uint16 { return 55 }
+func (*ToSrvRespawn) toSrvCmdNo() uint16 { return 56 }
+func (*ToSrvInteract) toSrvCmdNo() uint16 { return 57 }
+func (*ToSrvRemovedSounds) toSrvCmdNo() uint16 { return 58 }
+func (*ToSrvNodeMetaFields) toSrvCmdNo() uint16 { return 59 }
+func (*ToSrvInvFields) toSrvCmdNo() uint16 { return 60 }
+func (*ToSrvReqMedia) toSrvCmdNo() uint16 { return 64 }
+func (*ToSrvCltReady) toSrvCmdNo() uint16 { return 67 }
+func (*ToSrvFirstSRP) toSrvCmdNo() uint16 { return 80 }
+func (*ToSrvSRPBytesA) toSrvCmdNo() uint16 { return 81 }
+func (*ToSrvSRPBytesM) toSrvCmdNo() uint16 { return 82 }
+
+var newToSrvCmd = map[uint16]func() Cmd{
+ 0: func() Cmd { return new(ToSrvNil) },
+ 2: func() Cmd { return new(ToSrvInit) },
+ 17: func() Cmd { return new(ToSrvInit2) },
+ 23: func() Cmd { return new(ToSrvModChanJoin) },
+ 24: func() Cmd { return new(ToSrvModChanLeave) },
+ 25: func() Cmd { return new(ToSrvModChanMsg) },
+ 35: func() Cmd { return new(ToSrvPlayerPos) },
+ 36: func() Cmd { return new(ToSrvGotBlks) },
+ 37: func() Cmd { return new(ToSrvDeletedBlks) },
+ 49: func() Cmd { return new(ToSrvInvAction) },
+ 50: func() Cmd { return new(ToSrvChatMsg) },
+ 53: func() Cmd { return new(ToSrvFallDmg) },
+ 55: func() Cmd { return new(ToSrvSelectItem) },
+ 56: func() Cmd { return new(ToSrvRespawn) },
+ 57: func() Cmd { return new(ToSrvInteract) },
+ 58: func() Cmd { return new(ToSrvRemovedSounds) },
+ 59: func() Cmd { return new(ToSrvNodeMetaFields) },
+ 60: func() Cmd { return new(ToSrvInvFields) },
+ 64: func() Cmd { return new(ToSrvReqMedia) },
+ 67: func() Cmd { return new(ToSrvCltReady) },
+ 80: func() Cmd { return new(ToSrvFirstSRP) },
+ 81: func() Cmd { return new(ToSrvSRPBytesA) },
+ 82: func() Cmd { return new(ToSrvSRPBytesM) },
+}
diff --git a/vec.go b/vec.go
new file mode 100644
index 0000000..08422c6
--- /dev/null
+++ b/vec.go
@@ -0,0 +1,20 @@
+package mt
+
+// A Vec is a 3D vector in units of 0.1 nodes.
+type Vec [3]float32
+
+// Add returns v+w.
+func (v Vec) Add(w Vec) Vec {
+ for i := range v {
+ v[i] += w[i]
+ }
+ return v
+}
+
+// Sub returns v-w.
+func (v Vec) Sub(w Vec) Vec {
+ for i := range v {
+ v[i] -= w[i]
+ }
+ return v
+}
diff --git a/zerialize.go b/zerialize.go
new file mode 100644
index 0000000..0e07bec
--- /dev/null
+++ b/zerialize.go
@@ -0,0 +1,56 @@
+// This file is called zerialize.go so the following go:generate runs last.
+
+//go:generate ./mkserialize.sh
+
+package mt
+
+import (
+ "encoding/binary"
+ "errors"
+ "io"
+)
+
+// ErrTooLong reports a length that is too long to serialize.
+var ErrTooLong = errors.New("len too long")
+
+var be = binary.BigEndian
+
+type serializer interface {
+ serialize(w io.Writer)
+}
+
+func serialize(w io.Writer, s interface{}) error {
+ return pcall(func() { s.(serializer).serialize(w) })
+}
+
+type deserializer interface {
+ deserialize(r io.Reader)
+}
+
+func deserialize(r io.Reader, d interface{}) error {
+ return pcall(func() { d.(deserializer).deserialize(r) })
+}
+
+type serializationError struct {
+ error
+}
+
+func pcall(f func()) (rerr error) {
+ defer func() {
+ switch r := recover().(type) {
+ case serializationError:
+ rerr = r.error
+ case nil:
+ default:
+ panic(r)
+ }
+ }()
+ f()
+ return
+}
+
+func chk(err error) {
+ if err != nil {
+ panic(serializationError{err})
+ }
+}