43 lines
1.1 KiB
Go
43 lines
1.1 KiB
Go
package data
|
|
|
|
import (
|
|
"embed"
|
|
"encoding/json"
|
|
"errors"
|
|
"fmt"
|
|
)
|
|
|
|
//go:generate ./download_minecraft_data.sh
|
|
|
|
//go:embed minecraft-data/pc minecraft-data/dataPaths.json
|
|
var MinecraftData embed.FS
|
|
|
|
// LoadJson reads a JSON file from the embedded minecraft-data FS and unmarshals it into data.
|
|
func LoadJson(path string, data any) (err error) {
|
|
b, err := MinecraftData.ReadFile(path)
|
|
if err != nil {
|
|
return
|
|
}
|
|
err = json.Unmarshal(b, data)
|
|
return
|
|
}
|
|
|
|
// LoadVersionedJson loads a version-specific JSON data file from the embedded minecraft-data FS and unmarshals it into data.
|
|
func LoadVersionedJson(version, dataName string, data any) (err error) {
|
|
b, err := MinecraftData.ReadFile("minecraft-data/" + Paths.Data[version][dataName] + "/" + dataName + ".json")
|
|
if err != nil {
|
|
// If you get this error, you need to probably need to update the download script
|
|
return fmt.Errorf("minecraft-data/%s/%s/%s.json: %w", version, Paths.Data[version][dataName], dataName, err)
|
|
}
|
|
err = json.Unmarshal(b, data)
|
|
return
|
|
}
|
|
|
|
var UnknownMinecraftVersionError = errors.New("unknown minecraft version")
|
|
|
|
func must(err error) {
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|