fix item displays name on example/daze

This commit is contained in:
Tnze
2024-07-28 16:21:24 +08:00
parent cbd9bb96de
commit 330d7e6c3e
5 changed files with 31 additions and 11 deletions

View File

@ -21,7 +21,7 @@ type Client struct {
// These are filled when login process // These are filled when login process
Name string Name string
UUID uuid.UUID UUID uuid.UUID
Registries registry.NetworkCodec Registries registry.Registries
Cookies map[string][]byte Cookies map[string][]byte
// Ingame packet handlers // Ingame packet handlers

View File

@ -0,0 +1,17 @@
package bootstrap
import (
"github.com/Tnze/go-mc/data/registryid"
"github.com/Tnze/go-mc/level/block"
"github.com/Tnze/go-mc/registry"
)
func RegisterBlocks(reg *registry.Registry[block.Block]) {
reg.Clear()
for i, key := range registryid.Block {
id, val := reg.Put(key, block.FromID[key])
if int32(i) != id || val == nil || *val == nil {
panic("register blocks failed")
}
}
}

View File

@ -23,8 +23,8 @@ import (
"github.com/Tnze/go-mc/bot/screen" "github.com/Tnze/go-mc/bot/screen"
"github.com/Tnze/go-mc/bot/world" "github.com/Tnze/go-mc/bot/world"
"github.com/Tnze/go-mc/chat" "github.com/Tnze/go-mc/chat"
"github.com/Tnze/go-mc/data/item"
_ "github.com/Tnze/go-mc/data/lang/zh-cn" _ "github.com/Tnze/go-mc/data/lang/zh-cn"
"github.com/Tnze/go-mc/data/registryid"
"github.com/Tnze/go-mc/level" "github.com/Tnze/go-mc/level"
) )
@ -161,11 +161,14 @@ func onScreenSlotChange(id, index int) error {
container, ok := screenManager.Screens[id] container, ok := screenManager.Screens[id]
if ok { if ok {
// Currently, only inventory container is supported // Currently, only inventory container is supported
switch container.(type) { switch container := container.(type) {
case *screen.Inventory: case *screen.Inventory:
slot := container.(*screen.Inventory).Slots[index] slot := container.Slots[index]
itemInfo := item.ByID[item.ID(slot.ID)] itemName := "nil"
log.Printf("Slot: Screen[%d].Slot[%d]: [%v] * %d | NBT: %v", id, index, itemInfo, slot.Count, slot.NBT) if slot.ID >= 0 && int(slot.ID) < len(registryid.Item) {
itemName = registryid.Item[slot.ID]
}
log.Printf("Slot: Screen[%d].Slot[%d]: [%v] * %d | NBT: %v", id, index, itemName, slot.Count, slot.NBT)
} }
} }
} }

View File

@ -9,7 +9,7 @@ import (
pk "github.com/Tnze/go-mc/net/packet" pk "github.com/Tnze/go-mc/net/packet"
) )
type NetworkCodec struct { type Registries struct {
ChatType Registry[ChatType] `registry:"minecraft:chat_type"` ChatType Registry[ChatType] `registry:"minecraft:chat_type"`
DamageType Registry[DamageType] `registry:"minecraft:damage_type"` DamageType Registry[DamageType] `registry:"minecraft:damage_type"`
DimensionType Registry[Dimension] `registry:"minecraft:dimension_type"` DimensionType Registry[Dimension] `registry:"minecraft:dimension_type"`
@ -23,8 +23,8 @@ type NetworkCodec struct {
JukeboxSong Registry[nbt.RawMessage] `registry:"minecraft:jukebox_song"` JukeboxSong Registry[nbt.RawMessage] `registry:"minecraft:jukebox_song"`
} }
func NewNetworkCodec() NetworkCodec { func NewNetworkCodec() Registries {
return NetworkCodec{ return Registries{
ChatType: NewRegistry[ChatType](), ChatType: NewRegistry[ChatType](),
DamageType: NewRegistry[DamageType](), DamageType: NewRegistry[DamageType](),
DimensionType: NewRegistry[Dimension](), DimensionType: NewRegistry[Dimension](),
@ -79,7 +79,7 @@ type RegistryCodec interface {
ReadTagsFrom(r io.Reader) (int64, error) ReadTagsFrom(r io.Reader) (int64, error)
} }
func (c *NetworkCodec) Registry(id string) RegistryCodec { func (c *Registries) Registry(id string) RegistryCodec {
codecVal := reflect.ValueOf(c).Elem() codecVal := reflect.ValueOf(c).Elem()
codecTyp := codecVal.Type() codecTyp := codecVal.Type()
numField := codecVal.NumField() numField := codecVal.NumField()

View File

@ -13,7 +13,7 @@ type ConfigHandler interface {
} }
type Configurations struct { type Configurations struct {
Registries registry.NetworkCodec Registries registry.Registries
} }
func (c *Configurations) AcceptConfig(conn *net.Conn) error { func (c *Configurations) AcceptConfig(conn *net.Conn) error {