summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElias Fleckenstein <eliasfleckenstein@web.de>2022-07-16 23:07:41 +0200
committerElias Fleckenstein <eliasfleckenstein@web.de>2022-07-16 23:07:41 +0200
commit2f0d89c5cfb101bccf7bbe8be1b070ce2a4fee4c (patch)
tree8fee5625cf7b70e9454308135051783b863fe096
parent647540796a50b8bbf93008def8a3a082fefa07fd (diff)
downloadmtmap-2f0d89c5cfb101bccf7bbe8be1b070ce2a4fee4c.tar.xz
Properly serialize special node id mappingsv0.2.5
-rw-r--r--deserialize.go20
-rw-r--r--serialize.go11
-rw-r--r--types.go4
3 files changed, 20 insertions, 15 deletions
diff --git a/deserialize.go b/deserialize.go
index e055348..78b9ea2 100644
--- a/deserialize.go
+++ b/deserialize.go
@@ -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
diff --git a/serialize.go b/serialize.go
index 3cf601c..1d1ea42 100644
--- a/serialize.go
+++ b/serialize.go
@@ -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
}
diff --git a/types.go b/types.go
index bd51350..5c923a3 100644
--- 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
-}