]> git.lizzy.rs Git - mtmap.git/blobdiff - deserialize.go
Add Peek- and PokeNode functions to MapBlk (#1)
[mtmap.git] / deserialize.go
index e055348035e3011038eb8b191741988c66f8e3ba..73406aa0c16b91f33c1ea4774ef34a5aa7ea6a47 100644 (file)
@@ -65,7 +65,11 @@ func Deserialize(r io.Reader, idNameMap map[string]mt.Content) *MapBlk {
                        panic(err)
                }
 
-               if _, err := io.Copy(io.Discard, r); err != nil {
+               if err := binary.Read(r, binary.BigEndian, &blk.Param1); err != nil {
+                       panic(err)
+               }
+
+               if err := binary.Read(r, binary.BigEndian, &blk.Param2); err != nil {
                        panic(err)
                }
 
@@ -149,10 +153,6 @@ func Deserialize(r io.Reader, idNameMap map[string]mt.Content) *MapBlk {
                        }
                }
 
-               if _, err := io.Copy(io.Discard, r); err != nil {
-                       panic(err)
-               }
-
                if err := r.Close(); err != nil {
                        panic(err)
                }
@@ -247,19 +247,27 @@ func Deserialize(r io.Reader, idNameMap map[string]mt.Content) *MapBlk {
 
        for i := 0; i < 4096; i++ {
                id := blk.Param0[i]
-               if isSpecial(id) {
-                       continue
-               }
 
                name, ok := nameIdMap[id]
                if !ok {
-                       panic(ErrInvalidNodeId{id})
+                       name = "unknown"
                }
 
-               blk.Param0[i], ok = idNameMap[name]
-               if !ok {
-                       panic(ErrInvalidNodeName{name})
+               switch name {
+               case "unknown":
+                       id = mt.Unknown
+               case "air":
+                       id = mt.Air
+               case "ignore":
+                       id = mt.Ignore
+               default:
+                       id, ok = idNameMap[name]
+                       if !ok {
+                               id = mt.Unknown
+                       }
                }
+
+               blk.Param0[i] = id
        }
 
        return blk