PluginMessage event

This commit is contained in:
JunDao
2019-05-19 11:32:31 +08:00
parent 4653cab5e1
commit 7e8118e21f
8 changed files with 94 additions and 27 deletions

View File

@ -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
}

View File

@ -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
}

View File

@ -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

View File

@ -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
}

View File

@ -12,7 +12,7 @@ type Player struct {
OnGround bool
HeldItem int //拿着的物品栏位
Inventory []entity.Solt
Inventory []entity.Slot
Health float32 //血量
Food int32 //饱食度