]> git.lizzy.rs Git - mtmap.git/commitdiff
Properly serialize special node id mappings v0.2.5
authorElias Fleckenstein <eliasfleckenstein@web.de>
Sat, 16 Jul 2022 21:07:41 +0000 (23:07 +0200)
committerElias Fleckenstein <eliasfleckenstein@web.de>
Sat, 16 Jul 2022 21:07:41 +0000 (23:07 +0200)
deserialize.go
serialize.go
types.go

index e055348035e3011038eb8b191741988c66f8e3ba..78b9ea2573699faac004e947a6e2f2270161ad2c 100644 (file)
@@ -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})
                }
 
-               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 {
+                               panic(ErrInvalidNodeName{name})
+                       }
                }
+
+               blk.Param0[i] = id
        }
 
        return blk
index 3cf601ce53737ec8608cad7a44791e972cc491b2..1d1ea4269e3e6b22ffbd67aa909c3204cbaa0cc4 100644 (file)
@@ -158,13 +158,14 @@ func Serialize(blk *MapBlk, w io.Writer, nameIdMap map[mt.Content]string) {
                panic(err)
        }
 
-       var localNameIdMap = make(map[mt.Content]string)
+       var localNameIdMap = map[mt.Content]string{
+               mt.Unknown: "unknown",
+               mt.Air:     "air",
+               mt.Ignore:  "ignore",
+       }
+
        for i := 0; i < 4096; i++ {
                id := blk.Param0[i]
-               if isSpecial(id) {
-                       continue
-               }
-
                if _, ok := localNameIdMap[id]; ok {
                        continue
                }
index bd5135010409baeccf7e8988f51ea0898d3d658c..5c923a391a30164867104b8215ba40b7d54745b4 100644 (file)
--- a/types.go
+++ b/types.go
@@ -51,7 +51,3 @@ type ErrInvalidNodeId struct {
 func (e ErrInvalidNodeId) Error() string {
        return fmt.Sprintf("invalid node %v", e.Id)
 }
-
-func isSpecial(id mt.Content) bool {
-       return id >= 125 && id <= 127
-}