refactor package
This commit is contained in:
111
pkg/protocol/slot/item_stack.go
Normal file
111
pkg/protocol/slot/item_stack.go
Normal file
@ -0,0 +1,111 @@
|
||||
package slot
|
||||
|
||||
import (
|
||||
"io"
|
||||
|
||||
pk "github.com/Tnze/go-mc/net/packet"
|
||||
)
|
||||
|
||||
type Slot struct {
|
||||
Count int32
|
||||
ItemID int32
|
||||
AddComponent []Component
|
||||
RemoveComponent []ComponentID
|
||||
}
|
||||
|
||||
func (s *Slot) WriteTo(w io.Writer) (n int64, err error) {
|
||||
temp, err := pk.VarInt(s.Count).WriteTo(w)
|
||||
if s.Count <= 0 || err != nil {
|
||||
return temp, err
|
||||
}
|
||||
n += temp
|
||||
temp, err = pk.VarInt(s.ItemID).WriteTo(w)
|
||||
n += temp
|
||||
if err != nil {
|
||||
return temp, err
|
||||
}
|
||||
|
||||
temp, err = pk.VarInt(len(s.AddComponent)).WriteTo(w)
|
||||
n += temp
|
||||
if err != nil {
|
||||
return temp, err
|
||||
}
|
||||
for _, c := range s.AddComponent {
|
||||
temp, err = pk.VarInt(c.Type()).WriteTo(w)
|
||||
n += temp
|
||||
if err != nil {
|
||||
return temp, err
|
||||
}
|
||||
temp, err = c.WriteTo(w)
|
||||
n += temp
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
}
|
||||
|
||||
temp, err = pk.VarInt(len(s.RemoveComponent)).WriteTo(w)
|
||||
n += temp
|
||||
if err != nil {
|
||||
return temp, err
|
||||
}
|
||||
for _, id := range s.RemoveComponent {
|
||||
temp, err = pk.VarInt(id).WriteTo(w)
|
||||
n += temp
|
||||
if err != nil {
|
||||
return temp, err
|
||||
}
|
||||
}
|
||||
return temp, nil
|
||||
}
|
||||
|
||||
func (s *Slot) ReadFrom(r io.Reader) (n int64, err error) {
|
||||
temp, err := (*pk.VarInt)(&s.Count).ReadFrom(r)
|
||||
if s.Count <= 0 || err != nil {
|
||||
return temp, err
|
||||
}
|
||||
n += temp
|
||||
temp, err = (*pk.VarInt)(&s.ItemID).ReadFrom(r)
|
||||
n += temp
|
||||
if err != nil {
|
||||
return temp, err
|
||||
}
|
||||
|
||||
addLens := int32(0)
|
||||
temp, err = (*pk.VarInt)(&addLens).ReadFrom(r)
|
||||
n += temp
|
||||
if err != nil {
|
||||
return temp, err
|
||||
}
|
||||
var id int32
|
||||
for i := int32(0); i < addLens; i++ {
|
||||
temp, err = (*pk.VarInt)(&id).ReadFrom(r)
|
||||
n += temp
|
||||
if err != nil {
|
||||
return temp, err
|
||||
}
|
||||
c := ComponentFromID(ComponentID(id))
|
||||
|
||||
temp, err = c.ReadFrom(r)
|
||||
n += temp
|
||||
if err != nil {
|
||||
return temp, err
|
||||
}
|
||||
}
|
||||
|
||||
removeLens := int32(0)
|
||||
temp, err = (*pk.VarInt)(&removeLens).ReadFrom(r)
|
||||
n += temp
|
||||
if err != nil {
|
||||
return temp, err
|
||||
}
|
||||
|
||||
for i := int32(0); i < removeLens; i++ {
|
||||
temp, err = (*pk.VarInt)(&id).ReadFrom(r)
|
||||
n += temp
|
||||
if err != nil {
|
||||
return temp, err
|
||||
}
|
||||
}
|
||||
|
||||
return n, nil
|
||||
}
|
Reference in New Issue
Block a user