diff --git a/utils/skinpack.go b/utils/skinpack.go index 8512c81..81ffbba 100644 --- a/utils/skinpack.go +++ b/utils/skinpack.go @@ -105,6 +105,20 @@ func (s *SkinPack) Save(fpath, serverName string) error { if err != nil { logrus.Warnf("failed to decode geometry %s %v", skinName, err) } else if geometry != nil { + f, err := os.Create(path.Join(fpath, fmt.Sprintf("geometry-%s.json", geometryName))) + if err != nil { + return err + } + e := json.NewEncoder(f) + e.SetIndent("", "\t") + if err := e.Encode(map[string]any{ + "format_version": "1.12.0", + "minecraft:geometry": geometry, + }); err != nil { + f.Close() + return err + } + f.Close() geometryJson[geometryName] = *geometry entry.Geometry = geometryName } @@ -120,8 +134,10 @@ func (s *SkinPack) Save(fpath, serverName string) error { e := json.NewEncoder(f) e.SetIndent("", "\t") if err := e.Encode(geometryJson); err != nil { + f.Close() return err } + f.Close() } { // skins.json @@ -132,8 +148,10 @@ func (s *SkinPack) Save(fpath, serverName string) error { e := json.NewEncoder(f) e.SetIndent("", "\t") if err := e.Encode(skinsJson); err != nil { + f.Close() return err } + f.Close() } { // manifest.json diff --git a/utils/utils.go b/utils/utils.go index bf3b2a4..bc7ccd0 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -142,6 +142,7 @@ func WriteManifest(manifest *resource.Manifest, fpath string) error { if err != nil { return err } + defer w.Close() e := json.NewEncoder(w) e.SetIndent("", "\t") if err = e.Encode(manifest); err != nil {