Update /bot/screen to support ClickWindow
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@ -15,5 +15,6 @@
|
|||||||
*.out
|
*.out
|
||||||
|
|
||||||
examples/test/test.go
|
examples/test/test.go
|
||||||
|
data/packetid/generate.go
|
||||||
.idea/
|
.idea/
|
||||||
.vscode/
|
.vscode/
|
@ -38,17 +38,39 @@ func NewManager(c *bot.Client, e EventsListener) *Manager {
|
|||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
|
|
||||||
//func (m *Manager) ContainerClick(id int, slot int16, button byte, mode int32) error {
|
type ChangedSlots map[int]*Slot
|
||||||
// return m.c.Conn.WritePacket(pk.Marshal(
|
|
||||||
// packetid.ServerboundContainerClick,
|
func (m *Manager) ContainerClick(id int, slot int16, button byte, mode int32, slots ChangedSlots, carried *Slot) error {
|
||||||
// pk.UnsignedByte(id),
|
return m.c.Conn.WritePacket(pk.Marshal(
|
||||||
// pk.VarInt(m.stateID),
|
packetid.ServerboundContainerClick,
|
||||||
// pk.Short(slot),
|
pk.UnsignedByte(id),
|
||||||
// pk.Byte(button),
|
pk.VarInt(m.stateID),
|
||||||
// pk.VarInt(mode),
|
pk.Short(slot),
|
||||||
// pk.VarInt()
|
pk.Byte(button),
|
||||||
// ))
|
pk.VarInt(mode),
|
||||||
//}
|
slots,
|
||||||
|
carried,
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c ChangedSlots) WriteTo(w io.Writer) (n int64, err error) {
|
||||||
|
n, err = pk.VarInt(len(c)).WriteTo(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for i, v := range c {
|
||||||
|
n1, err := pk.Short(i).WriteTo(w)
|
||||||
|
if err != nil {
|
||||||
|
return n + n1, err
|
||||||
|
}
|
||||||
|
n2, err := v.WriteTo(w)
|
||||||
|
if err != nil {
|
||||||
|
return n + n1 + n2, err
|
||||||
|
}
|
||||||
|
n += n1 + n2
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func (m *Manager) onOpenScreen(p pk.Packet) error {
|
func (m *Manager) onOpenScreen(p pk.Packet) error {
|
||||||
var (
|
var (
|
||||||
@ -165,10 +187,23 @@ type Slot struct {
|
|||||||
NBT nbt.RawMessage
|
NBT nbt.RawMessage
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Slot) WriteTo(w io.Writer) (n int64, err error) {
|
||||||
|
var present pk.Boolean = s != nil
|
||||||
|
return pk.Tuple{
|
||||||
|
present, pk.Opt{
|
||||||
|
Has: present,
|
||||||
|
Field: pk.Tuple{
|
||||||
|
&s.ID, &s.Count, pk.NBT(&s.NBT),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}.WriteTo(w)
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Slot) ReadFrom(r io.Reader) (n int64, err error) {
|
func (s *Slot) ReadFrom(r io.Reader) (n int64, err error) {
|
||||||
var present pk.Boolean
|
var present pk.Boolean
|
||||||
return pk.Tuple{
|
return pk.Tuple{
|
||||||
&present, pk.Opt{Has: &present,
|
&present, pk.Opt{
|
||||||
|
Has: &present,
|
||||||
Field: pk.Tuple{
|
Field: pk.Tuple{
|
||||||
&s.ID, &s.Count, pk.NBT(&s.NBT),
|
&s.ID, &s.Count, pk.NBT(&s.NBT),
|
||||||
},
|
},
|
||||||
|
Reference in New Issue
Block a user