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 := zw.Close(); err != nil {
44 if _, err := buf.WriteTo(w); err != nil {
51 zw := zlib.NewWriter(&buf)
53 var version = NodeMetaVer
54 if len(blk.NodeMetas) == 0 {
58 if err := binary.Write(zw, binary.BigEndian, &version); err != nil {
63 var count = uint16(len(blk.NodeMetas))
64 if err := binary.Write(zw, binary.BigEndian, &count); err != nil {
68 for pos, data := range blk.NodeMetas {
69 if err := binary.Write(zw, binary.BigEndian, &pos); err != nil {
73 var num = uint32(len(data.Fields))
74 if err := binary.Write(zw, binary.BigEndian, &num); err != nil {
78 for _, field := range data.Fields {
79 var lenName = uint16(len(field.Name))
80 if err := binary.Write(zw, binary.BigEndian, &lenName); err != nil {
84 var name = []byte(field.Name)
85 if err := binary.Write(zw, binary.BigEndian, &name); err != nil {
89 var lenValue = uint32(len(field.Value))
90 if err := binary.Write(zw, binary.BigEndian, &lenValue); err != nil {
94 var value = []byte(field.Value)
95 if err := binary.Write(zw, binary.BigEndian, &value); err != nil {
99 if err := binary.Write(zw, binary.BigEndian, &field.Private); err != nil {
104 if err := data.Inv.Serialize(zw); err != nil {
110 if err := zw.Close(); err != nil {
114 if _, err := buf.WriteTo(w); err != nil {
119 if err := binary.Write(w, binary.BigEndian, &StaticObjVer); err != nil {
123 var staticObjCount = uint16(len(blk.StaticObjs))
124 if err := binary.Write(w, binary.BigEndian, &staticObjCount); err != nil {
128 for _, obj := range blk.StaticObjs {
129 if err := binary.Write(w, binary.BigEndian, &obj.Type); err != nil {
134 int32(obj.Pos[0] * 1000.0),
135 int32(obj.Pos[1] * 1000.0),
136 int32(obj.Pos[2] * 1000.0),
138 if err := binary.Write(w, binary.BigEndian, &pos); err != nil {
142 var dataLen = uint16(len(obj.Data))
143 if err := binary.Write(w, binary.BigEndian, &dataLen); err != nil {
147 var data = []byte(obj.Data)
148 if err := binary.Write(w, binary.BigEndian, &data); err != nil {
153 if err := binary.Write(w, binary.BigEndian, &blk.Timestamp); err != nil {
157 if err := binary.Write(w, binary.BigEndian, &NameIdMapVer); err != nil {
161 var localNameIdMap = make(map[mt.Content]string)
163 for i := 0; i < 4096; i++ {
165 if _, ok := localNameIdMap[id]; ok {
180 name, ok = nameIdMap[id]
187 localNameIdMap[id] = name
190 var nameIdMapCount = uint16(len(localNameIdMap))
191 if err := binary.Write(w, binary.BigEndian, &nameIdMapCount); err != nil {
195 for id, name := range localNameIdMap {
196 if err := binary.Write(w, binary.BigEndian, &id); err != nil {
200 var nameLen = uint16(len(name))
201 if err := binary.Write(w, binary.BigEndian, &nameLen); err != nil {
205 var name = []byte(name)
206 if err := binary.Write(w, binary.BigEndian, &name); err != nil {