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

View File

@ -40,9 +40,9 @@ func (r *Registry[E]) GetByID(id int32) *E {
return nil return nil
} }
func (r *Registry[E]) Put(name string, data E) (id int32, val *E) { func (r *Registry[E]) Put(key string, data E) (id int32, val *E) {
id = int32(len(r.values)) id = int32(len(r.values))
r.keys[name] = id r.keys[key] = id
r.values = append(r.values, data) r.values = append(r.values, data)
val = &r.values[id] val = &r.values[id]
r.indices[val] = id r.indices[val] = id