PluginMessage event
This commit is contained in:
13
bot/event.go
13
bot/event.go
@ -5,10 +5,11 @@ import (
|
||||
)
|
||||
|
||||
type eventBroker struct {
|
||||
GameStart func() error
|
||||
ChatMsg func(msg chat.Message, pos byte) error
|
||||
Disconnect func(reason chat.Message) error
|
||||
HealthChange func() error
|
||||
Die func() error
|
||||
SoundPlay func(name string, category int, x, y, z float64, volume, pitch float32) error
|
||||
GameStart func() error
|
||||
ChatMsg func(msg chat.Message, pos byte) error
|
||||
Disconnect func(reason chat.Message) error
|
||||
HealthChange func() error
|
||||
Die func() error
|
||||
SoundPlay func(name string, category int, x, y, z float64, volume, pitch float32) error
|
||||
PluginMessage func(channel string, data []byte) error
|
||||
}
|
||||
|
@ -339,7 +339,16 @@ func handleJoinGamePacket(c *Client, p pk.Packet) error {
|
||||
}
|
||||
|
||||
func handlePluginPacket(c *Client, p pk.Packet) error {
|
||||
// fmt.Println("Plugin Packet: ", p)
|
||||
var (
|
||||
Channel pk.Identifier
|
||||
Data pk.PluginMessageData
|
||||
)
|
||||
if err := p.Scan(&Channel, &Data); err != nil {
|
||||
return err
|
||||
}
|
||||
if c.Events.PluginMessage != nil {
|
||||
return c.Events.PluginMessage(string(Channel), []byte(Data))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -62,7 +62,7 @@ type encryptionRequest struct {
|
||||
VerifyToken []byte
|
||||
}
|
||||
|
||||
func (e *encryptionRequest) Decode(r pk.ComByteReader) error {
|
||||
func (e *encryptionRequest) Decode(r pk.DecodeReader) error {
|
||||
var serverID pk.String
|
||||
if err := serverID.Decode(r); err != nil {
|
||||
return err
|
||||
|
@ -1,9 +1,39 @@
|
||||
package entity
|
||||
|
||||
import (
|
||||
"github.com/Tnze/go-mc/nbt"
|
||||
pk "github.com/Tnze/go-mc/net/packet"
|
||||
)
|
||||
|
||||
//Entity is the entity of minecraft
|
||||
type Entity struct {
|
||||
EntityID int //实体ID
|
||||
}
|
||||
|
||||
type Solt struct {
|
||||
// The Slot data structure is how Minecraft represents an item and its associated data in the Minecraft Protocol
|
||||
type Slot struct {
|
||||
Present bool
|
||||
ItemID int32
|
||||
Count int8
|
||||
NBT struct {
|
||||
}
|
||||
}
|
||||
|
||||
//Decode implement packet.FieldDecoder interface
|
||||
func (s *Slot) Decode(r pk.DecodeReader) error {
|
||||
if err := (*pk.Boolean)(&s.Present).Decode(r); err != nil {
|
||||
return err
|
||||
}
|
||||
if s.Present {
|
||||
if err := (*pk.VarInt)(&s.ItemID).Decode(r); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := (*pk.Byte)(&s.Count).Decode(r); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := nbt.NewDecoder(r).Decode(&s.NBT); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@ -12,7 +12,7 @@ type Player struct {
|
||||
OnGround bool
|
||||
|
||||
HeldItem int //拿着的物品栏位
|
||||
Inventory []entity.Solt
|
||||
Inventory []entity.Slot
|
||||
|
||||
Health float32 //血量
|
||||
Food int32 //饱食度
|
||||
|
Reference in New Issue
Block a user