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"
|
||||
"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)
|
||||
}
|
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
|
||||
}
|
||||
|
||||
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))
|
||||
r.keys[name] = id
|
||||
r.keys[key] = id
|
||||
r.values = append(r.values, data)
|
||||
val = &r.values[id]
|
||||
r.indices[val] = id
|
||||
|
Reference in New Issue
Block a user