Files
minego/pkg/protocol/packet/game/client/set_equipment.go
2025-08-27 20:28:44 +08:00

70 lines
1.0 KiB
Go

package client
import (
"io"
pk "git.konjactw.dev/falloutBot/go-mc/net/packet"
"git.konjactw.dev/patyhank/minego/pkg/protocol/slot"
)
type EquipmentData struct {
Slot int8
Item slot.Slot
}
type Equipment []EquipmentData
func (e Equipment) WriteTo(w io.Writer) (n int64, err error) {
for i, equipment := range e {
b := equipment.Slot
if len(e)-1 == i {
b |= -128
}
n1, err := pk.Byte(b).WriteTo(w)
n += n1
if err != nil {
return n, err
}
n2, err := equipment.Item.WriteTo(w)
n += n2
if err != nil {
return n, err
}
}
return
}
func (e *Equipment) ReadFrom(r io.Reader) (n int64, err error) {
for {
var b pk.Byte
n1, err := b.ReadFrom(r)
n += n1
if err != nil {
return n, err
}
var equipment EquipmentData
equipment.Slot = int8(b & 127)
n2, err := equipment.Item.ReadFrom(r)
n += n2
if err != nil {
return n, err
}
*e = append(*e, equipment)
if n&-128 == 0 {
break
}
}
return
}
//codec:gen
type SetEquipment struct {
EntityID int32 `mc:"VarInt"`
Equipment
}