From 2f0d89c5cfb101bccf7bbe8be1b070ce2a4fee4c Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Sat, 16 Jul 2022 23:07:41 +0200 Subject: [PATCH] Properly serialize special node id mappings --- deserialize.go | 20 ++++++++++++++------ serialize.go | 11 ++++++----- types.go | 4 ---- 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 -} -- 2.44.0