Files
go-mc/examples/playerdataconvert/utils.go

49 lines
1005 B
Go

package main
import (
"encoding/binary"
"encoding/json"
"fmt"
"net/http"
"github.com/google/uuid"
)
func usernameToUUID(name string) (string, uuid.UUID, error) {
var id uuid.UUID
resp, err := http.Get("https://api.mojang.com/users/profiles/minecraft/" + name)
if err != nil {
return "", id, err
}
var body struct {
Name string `json:"name"`
ID string `json:"id"`
}
err = json.NewDecoder(resp.Body).Decode(&body)
if err != nil {
return "", id, err
}
id, err = uuid.Parse(body.ID)
return body.Name, id, err
}
func intArrayToUUID(uuidInts []int32) (id uuid.UUID, err error) {
if uuidLen := len(uuidInts); uuidLen != 4 {
err = fmt.Errorf("invalid UUID len: %d * int32", uuidLen)
return
}
for i, v := range uuidInts {
binary.BigEndian.PutUint32(id[i*4:], uint32(v))
}
return
}
func uuidToIntArray(id uuid.UUID) (ints [4]int32) {
for i := range ints {
ints[i] = int32(binary.BigEndian.Uint32(id[i*4:]))
}
return
}