Start implementing boilerplate for manipulating inventory

This commit is contained in:
Tom
2020-09-26 18:05:40 -07:00
parent 1a269d9b63
commit 670799df8d
4 changed files with 39 additions and 2 deletions

View File

@ -9,7 +9,9 @@ import (
"github.com/Tnze/go-mc/bot/world"
"github.com/Tnze/go-mc/bot/world/entity"
"github.com/Tnze/go-mc/bot/world/entity/player"
"github.com/Tnze/go-mc/data"
"github.com/Tnze/go-mc/net"
"github.com/Tnze/go-mc/net/packet"
pk "github.com/Tnze/go-mc/net/packet"
)
@ -47,6 +49,10 @@ func (c *Client) Close() error {
return err
}
func (c *Client) SendCloseWindow(windowID byte) error {
return c.conn.WritePacket(packet.Marshal(data.CloseWindowServerbound, pk.UnsignedByte(windowID)))
}
// NewClient init and return a new Client.
//
// A new Client has default name "Steve" and zero UUID.

View File

@ -7,6 +7,7 @@ import (
"github.com/google/uuid"
pk "github.com/Tnze/go-mc/net/packet"
"github.com/Tnze/go-mc/net/ptypes"
)
type seenPacketFlags uint8
@ -41,6 +42,7 @@ type eventBroker struct {
SoundPlay func(name string, category int, x, y, z float64, volume, pitch float32) error
PluginMessage func(channel string, data []byte) error
HeldItemChange func(slot int) error
OpenWindow func(pkt ptypes.OpenWindow) error
// ExperienceChange will be called every time player's experience level updates.
// Parameters:

View File

@ -149,6 +149,8 @@ func (c *Client) handlePacket(p pk.Packet) (disconnect bool, err error) {
err = handleHeldItemPacket(c, p)
case data.WindowItems:
err = handleWindowItemsPacket(c, p)
case data.OpenWindow:
err = handleOpenWindowPacket(c, p)
case data.DeclareRecipes:
// handleDeclareRecipesPacket(g, reader)
@ -276,7 +278,7 @@ func handleEntityAnimationPacket(c *Client, p pk.Packet) error {
if err := se.Decode(p); err != nil {
return err
}
fmt.Printf("EntityAnimationClientbound: %+v\n", se)
// fmt.Printf("EntityAnimationClientbound: %+v\n", se)
return nil
}
@ -288,7 +290,7 @@ func handleEntityStatusPacket(c *Client, p pk.Packet) error {
if err := p.Scan(&id, &status); err != nil {
return err
}
fmt.Printf("EntityStatus: %v, %v\n", id, status)
// fmt.Printf("EntityStatus: %v, %v\n", id, status)
return nil
}
@ -722,6 +724,18 @@ func handleWindowItemsPacket(c *Client, p pk.Packet) error {
return nil
}
func handleOpenWindowPacket(c *Client, p pk.Packet) error {
var pkt ptypes.OpenWindow
if err := pkt.Decode(p); err != nil {
return err
}
if c.Events.OpenWindow != nil {
return c.Events.OpenWindow(pkt)
}
return nil
}
func handleSetExperience(c *Client, p pk.Packet) (err error) {
var (
bar pk.Float