nbt changes
This commit is contained in:
@@ -25,7 +25,7 @@ func Run(args []string) (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer f.Close()
|
defer f.Close()
|
||||||
n, err := nbt.ReadFile(f)
|
n, err := nbt.ReadUnstructuredFile(f)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -15,6 +15,6 @@ func LoadRegistry(name string) (n *nbt.Tag, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer r.Close()
|
defer r.Close()
|
||||||
n, err = nbt.ReadFile(r)
|
n, err = nbt.ReadUnstructuredFile(r)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ func LoadFromPath(path string) (s *Structure, err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func LoadFromFile(r io.Reader) (s *Structure, err error) {
|
func LoadFromFile(r io.Reader) (s *Structure, err error) {
|
||||||
n, err := nbt.ReadFile(r)
|
n, err := nbt.ReadUnstructuredFile(r)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func Load(fileName string) (s *Structure, err error) {
|
func Load(fileName string) (s *Structure, err error) {
|
||||||
n, err := nbt.ReadFilePath(fileName)
|
n, err := nbt.ReadUnstructuredFilePath(fileName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
+16
-4
@@ -4,16 +4,28 @@ import (
|
|||||||
"compress/gzip"
|
"compress/gzip"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
"github.com/admin-else/strom/mapstructure"
|
||||||
)
|
)
|
||||||
|
|
||||||
func WriteFile(file io.Writer, n Tag) (err error) {
|
var Format = mapstructure.NewFormat("nbt", mapstructure.WithRequireAll())
|
||||||
|
|
||||||
|
func ReadFile(file io.Reader, data any) (err error) {
|
||||||
|
n, err := ReadUnstructuredFile(file)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
return Format.Decode(n.Value, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
func WriteUnstructuredFile(file io.Writer, n Tag) (err error) {
|
||||||
gzw := gzip.NewWriter(file)
|
gzw := gzip.NewWriter(file)
|
||||||
defer gzw.Close()
|
defer gzw.Close()
|
||||||
err = n.Encode(gzw)
|
err = n.Encode(gzw)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func ReadFile(file io.Reader) (n *Tag, err error) {
|
func ReadUnstructuredFile(file io.Reader) (n *Tag, err error) {
|
||||||
r, err := gzip.NewReader(file)
|
r, err := gzip.NewReader(file)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
@@ -24,11 +36,11 @@ func ReadFile(file io.Reader) (n *Tag, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func ReadFilePath(path string) (n *Tag, err error) {
|
func ReadUnstructuredFilePath(path string) (n *Tag, err error) {
|
||||||
f, err := os.Open(path)
|
f, err := os.Open(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer f.Close()
|
defer f.Close()
|
||||||
return ReadFile(f)
|
return ReadUnstructuredFile(f)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -37,7 +37,7 @@ func PrintSNBTAny(t any, w io.Writer) (err error) {
|
|||||||
case map[string]any:
|
case map[string]any:
|
||||||
_, err = fmt.Fprintf(w, "{")
|
_, err = fmt.Fprintf(w, "{")
|
||||||
for k, v := range t {
|
for k, v := range t {
|
||||||
_, err = fmt.Fprintf(w, "%q:,", k)
|
_, err = fmt.Fprintf(w, "%q:", k)
|
||||||
err = PrintSNBTAny(v, w)
|
err = PrintSNBTAny(v, w)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
|
|||||||
+1
-1
@@ -10,7 +10,7 @@ import (
|
|||||||
var topSNBT []byte
|
var topSNBT []byte
|
||||||
|
|
||||||
func TestPrintSNBTAny(t *testing.T) {
|
func TestPrintSNBTAny(t *testing.T) {
|
||||||
n, err := ReadFile(bytes.NewReader(topSNBT))
|
n, err := ReadUnstructuredFile(bytes.NewReader(topSNBT))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ func handleClient(c *proto.Conn) (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer f.Close()
|
defer f.Close()
|
||||||
err = nbt.WriteFile(f, p.Data)
|
err = nbt.WriteUnstructuredFile(f, p.Data)
|
||||||
slog.Info("saved", "file", SaveAs)
|
slog.Info("saved", "file", SaveAs)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user