change data/registry generator
This commit is contained in:
@ -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}}
|
|
||||||
}
|
|
@ -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)
|
||||||
}
|
}
|
11
data/registryid/generator/template.go.tmpl
Normal file
11
data/registryid/generator/template.go.tmpl
Normal 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}}
|
||||||
|
}
|
@ -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
|
||||||
|
Reference in New Issue
Block a user