13declare(strict_types=1);
15namespace pocketmine\network\mcpe\protocol;
17use pmmp\encoding\ByteBufferReader;
18use pmmp\encoding\ByteBufferWriter;
19use pmmp\encoding\VarInt;
20use pocketmine\network\mcpe\protocol\types\hud\HudElement;
21use pocketmine\network\mcpe\protocol\types\hud\HudVisibility;
25 public const NETWORK_ID = ProtocolInfo::SET_HUD_PACKET;
28 private array $hudElements = [];
29 private HudVisibility $visibility;
35 public static function create(array $hudElements, HudVisibility $visibility) : self{
37 $result->hudElements = $hudElements;
38 $result->visibility = $visibility;
45 public function getVisibility() : HudVisibility{ return $this->visibility; }
48 $this->hudElements = [];
49 for($i = 0, $count = VarInt::readUnsignedInt($in); $i < $count; ++$i){
50 $this->hudElements[] = HudElement::fromPacket(VarInt::readSignedInt($in));
52 $this->visibility = HudVisibility::fromPacket(VarInt::readSignedInt($in));
56 VarInt::writeUnsignedInt($out, count($this->hudElements));
57 foreach($this->hudElements as $element){
58 VarInt::writeSignedInt($out, $element->value);
60 VarInt::writeSignedInt($out, $this->visibility->value);
64 return $handler->handleSetHud($this);
static create(array $hudElements, HudVisibility $visibility)
encodePayload(ByteBufferWriter $out)
decodePayload(ByteBufferReader $in)
handle(PacketHandlerInterface $handler)