add HeldItemChange event

This commit is contained in:
Tnze
2019-06-10 15:24:24 +08:00
parent f909ed405e
commit 0a094cf956
2 changed files with 20 additions and 19 deletions

View File

@ -5,11 +5,12 @@ import (
) )
type eventBroker struct { type eventBroker struct {
GameStart func() error GameStart func() error
ChatMsg func(msg chat.Message, pos byte) error ChatMsg func(msg chat.Message, pos byte) error
Disconnect func(reason chat.Message) error Disconnect func(reason chat.Message) error
HealthChange func() error HealthChange func() error
Die func() error Die func() error
SoundPlay func(name string, category int, x, y, z float64, volume, pitch float32) error SoundPlay func(name string, category int, x, y, z float64, volume, pitch float32) error
PluginMessage func(channel string, data []byte) error PluginMessage func(channel string, data []byte) error
HeldItemChange func(slot int) error
} }

View File

@ -3,11 +3,8 @@ package bot
import ( import (
"bytes" "bytes"
"errors" "errors"
"io/ioutil"
// "math"
// "time"
"fmt" "fmt"
"io/ioutil"
"github.com/Tnze/go-mc/bot/world" "github.com/Tnze/go-mc/bot/world"
"github.com/Tnze/go-mc/bot/world/entity" "github.com/Tnze/go-mc/bot/world/entity"
@ -89,19 +86,19 @@ func (c *Client) handlePacket(p pk.Packet) (disconnect bool, err error) {
case data.PlayerPositionAndLookClientbound: case data.PlayerPositionAndLookClientbound:
err = handlePlayerPositionAndLookPacket(c, p) err = handlePlayerPositionAndLookPacket(c, p)
sendPlayerPositionAndLookPacket(c) // to confirm the position sendPlayerPositionAndLookPacket(c) // to confirm the position
case 0x5A: case data.DeclareRecipes:
// handleDeclareRecipesPacket(g, reader) // handleDeclareRecipesPacket(g, reader)
case 0x29: case data.EntityLookAndRelativeMove:
// err = handleEntityLookAndRelativeMove(g, reader) // err = handleEntityLookAndRelativeMove(g, reader)
case 0x3B: case data.EntityHeadLook:
// handleEntityHeadLookPacket(g, reader) // handleEntityHeadLookPacket(g, reader)
case 0x28: case data.EntityRelativeMove:
// err = handleEntityRelativeMovePacket(g, reader) // err = handleEntityRelativeMovePacket(g, reader)
case data.KeepAliveClientbound: case data.KeepAliveClientbound:
err = handleKeepAlivePacket(c, p) err = handleKeepAlivePacket(c, p)
case 0x2B: case data.Entity:
//handleEntityPacket(g, reader) //handleEntityPacket(g, reader)
case 0x05: case data.SpawnPlayer:
// err = handleSpawnPlayerPacket(g, reader) // err = handleSpawnPlayerPacket(g, reader)
case data.WindowItems: case data.WindowItems:
err = handleWindowItemsPacket(c, p) err = handleWindowItemsPacket(c, p)
@ -113,7 +110,7 @@ func (c *Client) handlePacket(p pk.Packet) (disconnect bool, err error) {
////err = handleBlockChangePacket(c, p) ////err = handleBlockChangePacket(c, p)
case data.MultiBlockChange: case data.MultiBlockChange:
////err = handleMultiBlockChangePacket(c, p) ////err = handleMultiBlockChangePacket(c, p)
case 0x1A: case data.DisconnectPlay:
err = handleDisconnectPacket(c, p) err = handleDisconnectPacket(c, p)
disconnect = true disconnect = true
case data.SetSlot: case data.SetSlot:
@ -123,7 +120,6 @@ func (c *Client) handlePacket(p pk.Packet) (disconnect bool, err error) {
case data.NamedSoundEffect: case data.NamedSoundEffect:
err = handleNamedSoundEffect(c, p) err = handleNamedSoundEffect(c, p)
default: default:
// fmt.Printf("ignore pack id %X\n", p.ID) // fmt.Printf("ignore pack id %X\n", p.ID)
} }
return return
@ -428,6 +424,10 @@ func handleHeldItemPacket(c *Client, p pk.Packet) error {
return err return err
} }
c.HeldItem = int(hi) c.HeldItem = int(hi)
if c.Events.HeldItemChange != nil {
return c.Events.HeldItemChange(c.HeldItem)
}
return nil return nil
} }