change data/registry generator

This commit is contained in:
Tnze
2024-07-28 15:09:55 +08:00
parent 47ca8a6d9d
commit 884d4307fe
5 changed files with 25 additions and 33 deletions

View File

@ -1,25 +0,0 @@
// Code generated by {{Generator}}; DO NOT EDIT.
package {{ .PackageName }}
{{ $typeName := .TypeName}}
type {{$typeName}} int
func (n {{$typeName}}) String() string {
if n < 0 || int(n) >= len(names) {
return "<invalid {{$typeName}}>"
}
return names[n]
}
const (
{{- range $index, $elem := .Entries}}
{{$elem | ToGoTypeName}} {{if eq $index 0 -}} {{$typeName}} = iota {{- end}}
{{- end}}
)
var names = []string{
{{- range $index, $elem := .Entries}}
{{printf "%q" $elem}},
{{- end}}
}

View File

@ -8,6 +8,7 @@ import (
"log"
"os"
"path/filepath"
"strings"
"text/template"
"github.com/Tnze/go-mc/internal/generateutils"
@ -56,11 +57,15 @@ func main() {
log.Fatal(err)
}
generateRegistry(registries["minecraft:block_entity_type"], "BlockEntityType", "blockentitytype")
generateRegistry(registries["minecraft:entity_type"], "EntityType", "entitytype")
for key, reg := range registries {
registryName := strings.TrimPrefix(key, "minecraft:")
typeName := generateutils.ToGoTypeName(strings.ReplaceAll(registryName, "/", "_"))
filename := strings.NewReplacer("_", "", "/", "_").Replace(registryName)
generateRegistry(reg, typeName, filename)
}
}
func generateRegistry(r registry, typeName, packageName string) {
func generateRegistry(r registry, typeName, filename string) {
entries := make([]string, len(r.Entries))
for name, v := range r.Entries {
entries[v.ProtocolID] = name
@ -68,7 +73,7 @@ func generateRegistry(r registry, typeName, packageName string) {
var buff bytes.Buffer
err := temp.Execute(&buff, tempData{
PackageName: packageName,
PackageName: filename,
Default: r.Default,
Entries: entries,
TypeName: typeName,
@ -79,10 +84,11 @@ func generateRegistry(r registry, typeName, packageName string) {
formattedSource, err := format.Source(buff.Bytes())
if err != nil {
log.Fatal(err)
log.Print(filename, err)
formattedSource = buff.Bytes()
}
err = os.WriteFile(filepath.Join(packageName, packageName+".go"), formattedSource, 0o666)
err = os.WriteFile(filepath.Join("..", filename+".go"), formattedSource, 0o666)
if err != nil {
log.Fatal(err)
}

View File

@ -0,0 +1,11 @@
// Code generated by {{Generator}}; DO NOT EDIT.
package registryid
{{ $typeName := .TypeName}}
var {{$typeName}} = []string{
{{- range $index, $elem := .Entries}}
{{printf "%q" $elem}},
{{- end}}
}