7 "github.com/anon55555/mt"
11 func Serialize(blk *MapBlk, w io.Writer, nameIdMap map[mt.Content]string) {
12 if err := binary.Write(w, binary.BigEndian, &SerializeVer); err != nil {
16 if err := binary.Write(w, binary.BigEndian, &blk.Flags); err != nil {
20 if err := binary.Write(w, binary.BigEndian, &blk.LightingComplete); err != nil {
24 if err := binary.Write(w, binary.BigEndian, &ContentWidth); err != nil {
28 if err := binary.Write(w, binary.BigEndian, &ParamsWidth); err != nil {
34 zw := zlib.NewWriter(&buf)
36 if err := binary.Write(zw, binary.BigEndian, &blk.Param0); err != nil {
40 if err := binary.Write(zw, binary.BigEndian, &blk.Param1); err != nil {
44 if err := binary.Write(zw, binary.BigEndian, &blk.Param2); err != nil {
48 if err := zw.Close(); err != nil {
52 if _, err := buf.WriteTo(w); err != nil {
59 zw := zlib.NewWriter(&buf)
61 var version = NodeMetaVer
62 if len(blk.NodeMetas) == 0 {
66 if err := binary.Write(zw, binary.BigEndian, &version); err != nil {
71 var count = uint16(len(blk.NodeMetas))
72 if err := binary.Write(zw, binary.BigEndian, &count); err != nil {
76 for pos, data := range blk.NodeMetas {
77 if err := binary.Write(zw, binary.BigEndian, &pos); err != nil {
81 var num = uint32(len(data.Fields))
82 if err := binary.Write(zw, binary.BigEndian, &num); err != nil {
86 for _, field := range data.Fields {
87 var lenName = uint16(len(field.Name))
88 if err := binary.Write(zw, binary.BigEndian, &lenName); err != nil {
92 var name = []byte(field.Name)
93 if err := binary.Write(zw, binary.BigEndian, &name); err != nil {
97 var lenValue = uint32(len(field.Value))
98 if err := binary.Write(zw, binary.BigEndian, &lenValue); err != nil {
102 var value = []byte(field.Value)
103 if err := binary.Write(zw, binary.BigEndian, &value); err != nil {
107 if err := binary.Write(zw, binary.BigEndian, &field.Private); err != nil {
112 if err := data.Inv.Serialize(zw); err != nil {
118 if err := zw.Close(); err != nil {
122 if _, err := buf.WriteTo(w); err != nil {
127 if err := binary.Write(w, binary.BigEndian, &StaticObjVer); err != nil {
131 var staticObjCount = uint16(len(blk.StaticObjs))
132 if err := binary.Write(w, binary.BigEndian, &staticObjCount); err != nil {
136 for _, obj := range blk.StaticObjs {
137 if err := binary.Write(w, binary.BigEndian, &obj.Type); err != nil {
142 int32(obj.Pos[0] * 1000.0),
143 int32(obj.Pos[1] * 1000.0),
144 int32(obj.Pos[2] * 1000.0),
146 if err := binary.Write(w, binary.BigEndian, &pos); err != nil {
150 var dataLen = uint16(len(obj.Data))
151 if err := binary.Write(w, binary.BigEndian, &dataLen); err != nil {
155 var data = []byte(obj.Data)
156 if err := binary.Write(w, binary.BigEndian, &data); err != nil {
161 if err := binary.Write(w, binary.BigEndian, &blk.Timestamp); err != nil {
165 if err := binary.Write(w, binary.BigEndian, &NameIdMapVer); err != nil {
169 var localNameIdMap = make(map[mt.Content]string)
171 for i := 0; i < 4096; i++ {
173 if _, ok := localNameIdMap[id]; ok {
188 name, ok = nameIdMap[id]
195 localNameIdMap[id] = name
198 var nameIdMapCount = uint16(len(localNameIdMap))
199 if err := binary.Write(w, binary.BigEndian, &nameIdMapCount); err != nil {
203 for id, name := range localNameIdMap {
204 if err := binary.Write(w, binary.BigEndian, &id); err != nil {
208 var nameLen = uint16(len(name))
209 if err := binary.Write(w, binary.BigEndian, &nameLen); err != nil {
213 var name = []byte(name)
214 if err := binary.Write(w, binary.BigEndian, &name); err != nil {