Support convert advancements and pets' owner
This commit is contained in:
58
examples/playerdataconvert/advancements.go
Normal file
58
examples/playerdataconvert/advancements.go
Normal file
@ -0,0 +1,58 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
func readAdvancements(dir string, m map[uuid.UUID]UserCache) {
|
||||
entries, err := os.ReadDir(dir)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Failed to open playerdata folder: %v", err)
|
||||
return
|
||||
}
|
||||
for _, files := range entries {
|
||||
filename := files.Name()
|
||||
if ext := filepath.Ext(filename); ext != ".json" {
|
||||
fmt.Fprintf(os.Stderr, "Unkown file type: %s\n", ext)
|
||||
continue
|
||||
}
|
||||
|
||||
// Parse old UUID from filename
|
||||
oldID, err := uuid.Parse(strings.TrimSuffix(filename, ".json"))
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Unable to parse filename as uuid: %v\n", err)
|
||||
continue
|
||||
}
|
||||
|
||||
if ver := oldID.Version(); ver != 3 { // v3 is for offline players
|
||||
fmt.Printf("Ignoring UUID: %v version: %d\n", oldID, ver)
|
||||
continue
|
||||
}
|
||||
|
||||
newUser, ok := m[oldID]
|
||||
if !ok {
|
||||
fmt.Printf("Skip user: %v\n", oldID)
|
||||
continue
|
||||
}
|
||||
|
||||
content, err := os.ReadFile(filepath.Join(dir, filename))
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Failed to read json file: %v\n", err)
|
||||
continue
|
||||
}
|
||||
|
||||
newFile := newUser.UUID.String() + ".json"
|
||||
err = os.WriteFile(filepath.Join(dir, newFile), content, 0o666)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Failed to write json file: %v\n", err)
|
||||
continue
|
||||
}
|
||||
|
||||
fmt.Printf("Converted advancement file: %s\n", newFile)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user