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)