use pocketmine\network\mcpe\protocol\serializer\PacketSerializer; class SetTitlePacket extends DataPacket implements ClientboundPacket{ public const NETWORK_ID = ProtocolInfo::SET_TITLE_PACKET; public const TYPE_CLEAR_TITLE = 0; public const TYPE_RESET_TITLE = 1; public const TYPE_SET_TITLE = 2; public const TYPE_SET_SUBTITLE = 3; public const TYPE_SET_ACTIONBAR_MESSAGE = 4; public const TYPE_SET_ANIMATION_TIMES = 5; /** @var int */ public $type; /** @var string */ public $text = ""; /** @var int */ public $fadeInTime = 0; /** @var int */ public $stayTime = 0; /** @var int */ public $fadeOutTime = 0; protected function decodePayload(PacketSerializer $in) : void{ $this->type = $in->getVarInt(); $this->text = $in->getString(); $this->fadeInTime = $in->getVarInt(); $this->stayTime = $in->getVarInt(); $this->fadeOutTime = $in->getVarInt(); } protected function encodePayload(PacketSerializer $out) : void{ $out->putVarInt($this->type); $out->putString($this->text); $out->putVarInt($this->fadeInTime); $out->putVarInt($this->stayTime); $out->putVarInt($this->fadeOutTime); } public function handle(PacketHandlerInterface $handler) : bool{ return $handler->handleSetTitle($this); } private static function type(int $type) : self{ $result = new self; $result->type = $type; return $result; } private static function text(int $type, string $text) : self{ $result = self::type($type); $result->text = $text; return $result; } public static function title(string $text) : self{ return self::text(self::TYPE_SET_TITLE, $text); } public static function subtitle(string $text) : self{ return self::text(self::TYPE_SET_SUBTITLE, $text); } public static function actionBarMessage(string $text) : self{ return self::text(self::TYPE_SET_ACTIONBAR_MESSAGE, $text); } public static function clearTitle() : self{ return self::type(self::TYPE_CLEAR_TITLE); } public static function resetTitleOptions() : self{ return self::type(self::TYPE_RESET_TITLE); } public static function setAnimationTimes(int $fadeIn, int $stay, int $fadeOut) : self{ $result = self::type(self::TYPE_SET_ANIMATION_TIMES); $result->fadeInTime = $fadeIn; $result->stayTime = $stay; $result->fadeOutTime = $fadeOut; return $result; } }