13declare(strict_types=1);
15namespace pocketmine\network\mcpe\protocol;
21 public const NETWORK_ID = ProtocolInfo::TEXT_PACKET;
23 public const TYPE_RAW = 0;
24 public const TYPE_CHAT = 1;
25 public const TYPE_TRANSLATION = 2;
26 public const TYPE_POPUP = 3;
27 public const TYPE_JUKEBOX_POPUP = 4;
28 public const TYPE_TIP = 5;
29 public const TYPE_SYSTEM = 6;
30 public const TYPE_WHISPER = 7;
31 public const TYPE_ANNOUNCEMENT = 8;
32 public const TYPE_JSON_WHISPER = 9;
33 public const TYPE_JSON = 10;
34 public const TYPE_JSON_ANNOUNCEMENT = 11;
37 public bool $needsTranslation =
false;
38 public string $sourceName;
39 public string $message;
41 public array $parameters = [];
42 public string $xboxUserId =
"";
43 public string $platformChatId =
"";
45 private static function messageOnly(
int $type,
string $message) :
self{
47 $result->type = $type;
48 $result->message = $message;
55 private static function baseTranslation(
int $type,
string $key, array $parameters) :
self{
57 $result->type = $type;
58 $result->needsTranslation =
true;
59 $result->message = $key;
60 $result->parameters = $parameters;
64 public static function raw(
string $message) :
self{
65 return self::messageOnly(self::TYPE_RAW, $message);
71 public static function translation(
string $key, array $parameters = []) : self{
72 return self::baseTranslation(self::TYPE_TRANSLATION, $key, $parameters);
75 public static function popup(
string $message) : self{
76 return self::messageOnly(self::TYPE_POPUP, $message);
82 public static function translatedPopup(
string $key, array $parameters = []) : self{
83 return self::baseTranslation(self::TYPE_POPUP, $key, $parameters);
89 public static function jukeboxPopup(
string $key, array $parameters = []) : self{
90 return self::baseTranslation(self::TYPE_JUKEBOX_POPUP, $key, $parameters);
93 public static function tip(
string $message) : self{
94 return self::messageOnly(self::TYPE_TIP, $message);
98 $this->type = $in->getByte();
99 $this->needsTranslation = $in->
getBool();
101 case self::TYPE_CHAT:
102 case self::TYPE_WHISPER:
104 case self::TYPE_ANNOUNCEMENT:
108 case self::TYPE_SYSTEM:
109 case self::TYPE_JSON_WHISPER:
110 case self::TYPE_JSON:
111 case self::TYPE_JSON_ANNOUNCEMENT:
115 case self::TYPE_TRANSLATION:
116 case self::TYPE_POPUP:
117 case self::TYPE_JUKEBOX_POPUP:
120 for($i = 0; $i < $count; ++$i){
127 $this->platformChatId = $in->
getString();
131 $out->putByte($this->type);
132 $out->putBool($this->needsTranslation);
134 case self::TYPE_CHAT:
135 case self::TYPE_WHISPER:
137 case self::TYPE_ANNOUNCEMENT:
138 $out->putString($this->sourceName);
141 case self::TYPE_SYSTEM:
142 case self::TYPE_JSON_WHISPER:
143 case self::TYPE_JSON:
144 case self::TYPE_JSON_ANNOUNCEMENT:
145 $out->putString($this->message);
148 case self::TYPE_TRANSLATION:
149 case self::TYPE_POPUP:
150 case self::TYPE_JUKEBOX_POPUP:
151 $out->putString($this->message);
153 foreach($this->parameters as $p){
159 $out->putString($this->xboxUserId);
160 $out->putString($this->platformChatId);
164 return $handler->handleText($this);
decodePayload(PacketSerializer $in)
static translation(string $key, array $parameters=[])
static jukeboxPopup(string $key, array $parameters=[])
handle(PacketHandlerInterface $handler)
static translatedPopup(string $key, array $parameters=[])
encodePayload(PacketSerializer $out)
putUnsignedVarInt(int $v)