62 lines
1.2 KiB
Go
62 lines
1.2 KiB
Go
|
|
package bedrock
|
|
|
|
import (
|
|
"github.com/cubexteam/Frodding/net/info"
|
|
"github.com/cubexteam/Frodding/net/packets"
|
|
)
|
|
|
|
const (
|
|
TextTypeRaw = 0
|
|
TextTypeChat = 1
|
|
TextTypeTranslation = 2
|
|
TextTypePopup = 3
|
|
TextTypeTip = 4
|
|
TextTypeSystem = 5
|
|
TextTypeWhisper = 6
|
|
TextTypeAnnouncement = 7
|
|
)
|
|
|
|
type TextPacket struct {
|
|
*packets.Packet
|
|
TextType byte
|
|
Source string
|
|
Message string
|
|
XUID string
|
|
}
|
|
|
|
func NewTextPacket(textType byte, source, message string) *TextPacket {
|
|
return &TextPacket{
|
|
Packet: packets.NewPacket(info.IDText),
|
|
TextType: textType,
|
|
Source: source,
|
|
Message: message,
|
|
}
|
|
}
|
|
|
|
func (pk *TextPacket) Encode() {
|
|
pk.PutByte(pk.TextType)
|
|
switch pk.TextType {
|
|
case TextTypeChat, TextTypeWhisper, TextTypeAnnouncement:
|
|
pk.PutString(pk.Source)
|
|
pk.PutString(pk.Message)
|
|
case TextTypeRaw, TextTypeTip, TextTypeSystem, TextTypePopup:
|
|
pk.PutString(pk.Message)
|
|
case TextTypeTranslation:
|
|
pk.PutString(pk.Message)
|
|
pk.PutVarInt(0)
|
|
}
|
|
pk.PutString(pk.XUID)
|
|
}
|
|
|
|
func (pk *TextPacket) Decode() {
|
|
pk.TextType = pk.GetByte()
|
|
switch pk.TextType {
|
|
case TextTypeChat, TextTypeWhisper, TextTypeAnnouncement:
|
|
pk.Source = pk.GetString()
|
|
pk.Message = pk.GetString()
|
|
default:
|
|
pk.Message = pk.GetString()
|
|
}
|
|
}
|