Registries of BlockEntityType id

This commit is contained in:
Tnze
2022-07-19 23:41:51 +08:00
parent 2d6dd8c408
commit 5fcac80f8a
6 changed files with 14522 additions and 22 deletions

View File

@ -0,0 +1,89 @@
// Code generated by data/registry/generate.go; DO NOT EDIT.
package blockentitytype
type BlockEntityType int
func (n BlockEntityType) String() string {
if n < 0 || int(n) >= len(names) {
return "<invalid BlockEntityType>"
}
return names[n]
}
const (
Furnace BlockEntityType = iota
Chest
TrappedChest
EnderChest
Jukebox
Dispenser
Dropper
Sign
MobSpawner
Piston
BrewingStand
EnchantingTable
EndPortal
Beacon
Skull
DaylightDetector
Hopper
Comparator
Banner
StructureBlock
EndGateway
CommandBlock
ShulkerBox
Bed
Conduit
Barrel
Smoker
BlastFurnace
Lectern
Bell
Jigsaw
Campfire
Beehive
SculkSensor
SculkCatalyst
SculkShrieker
)
var names = []string{
"minecraft:furnace",
"minecraft:chest",
"minecraft:trapped_chest",
"minecraft:ender_chest",
"minecraft:jukebox",
"minecraft:dispenser",
"minecraft:dropper",
"minecraft:sign",
"minecraft:mob_spawner",
"minecraft:piston",
"minecraft:brewing_stand",
"minecraft:enchanting_table",
"minecraft:end_portal",
"minecraft:beacon",
"minecraft:skull",
"minecraft:daylight_detector",
"minecraft:hopper",
"minecraft:comparator",
"minecraft:banner",
"minecraft:structure_block",
"minecraft:end_gateway",
"minecraft:command_block",
"minecraft:shulker_box",
"minecraft:bed",
"minecraft:conduit",
"minecraft:barrel",
"minecraft:smoker",
"minecraft:blast_furnace",
"minecraft:lectern",
"minecraft:bell",
"minecraft:jigsaw",
"minecraft:campfire",
"minecraft:beehive",
"minecraft:sculk_sensor",
"minecraft:sculk_catalyst",
"minecraft:sculk_shrieker",
}

78
data/registry/generate.go Normal file
View File

@ -0,0 +1,78 @@
package main
import (
"bytes"
_ "embed"
"encoding/json"
"go/format"
"log"
"os"
"text/template"
"github.com/Tnze/go-mc/internal/generateutils"
)
type registry struct {
Default string `json:"default"`
Entries map[string]struct {
ProtocolID int `json:"protocol_id"`
}
ProtocolID int `json:"protocol_id"`
}
//go:embed registries.json
var registeriesJson []byte
//go:embed template.go.tmpl
var tempSource string
type tempData struct {
PackageName string
Default string
Entries []string
TypeName string
}
var temp = template.Must(template.
New("block_template").
Funcs(template.FuncMap{
"UpperTheFirst": generateutils.UpperTheFirst,
"ToGoTypeName": generateutils.ToGoTypeName,
"Generator": func() string { return "data/registry/generate.go" },
}).
Parse(tempSource),
)
func main() {
var registries map[string]registry
if err := json.Unmarshal(registeriesJson, &registries); err != nil {
log.Fatal(err)
}
r := registries["minecraft:block_entity_type"]
entries := make([]string, len(r.Entries))
for name, v := range r.Entries {
entries[v.ProtocolID] = name
}
var buff bytes.Buffer
err := temp.Execute(&buff, tempData{
PackageName: "blockentitytype",
Default: r.Default,
Entries: entries,
TypeName: "BlockEntityType",
})
if err != nil {
log.Fatal(err)
}
formattedSource, err := format.Source(buff.Bytes())
if err != nil {
log.Fatal(err)
}
err = os.WriteFile("blockentitytype/blockentitytype.go", formattedSource, 0666)
if err != nil {
log.Fatal(err)
}
}

14303
data/registry/registries.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,24 @@
// 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}}
}