PocketMine-MP 5.30.2 git-98f04176111e5ecab5e8814ffc69d992bfb64939
Loading...
Searching...
No Matches
PacketShapeData.php
1<?php
2
3/*
4 * This file is part of BedrockProtocol.
5 * Copyright (C) 2014-2022 PocketMine Team <https://github.com/pmmp/BedrockProtocol>
6 *
7 * BedrockProtocol is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Lesser General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 */
12
13declare(strict_types=1);
14
15namespace pocketmine\network\mcpe\protocol\types;
16
21
25final class PacketShapeData{
26
27 public function __construct(
28 private int $networkId,
29 private ?ScriptDebugShapeType $type,
30 private ?Vector3 $location,
31 private ?float $scale,
32 private ?Vector3 $rotation,
33 private ?float $totalTimeLeft,
34 private ?Color $color,
35 private ?string $text,
36 private ?Vector3 $boxBound,
37 private ?Vector3 $lineEndLocation,
38 private ?float $arrowHeadLength,
39 private ?float $arrowHeadRadius,
40 private ?int $segments,
41 ){}
42
43 public function getNetworkId() : int{ return $this->networkId; }
44
45 public function getType() : ?ScriptDebugShapeType{ return $this->type; }
46
47 public function getLocation() : ?Vector3{ return $this->location; }
48
49 public function getScale() : ?float{ return $this->scale; }
50
51 public function getRotation() : ?Vector3{ return $this->rotation; }
52
53 public function getTotalTimeLeft() : ?float{ return $this->totalTimeLeft; }
54
55 public function getColor() : ?Color{ return $this->color; }
56
57 public function getText() : ?string{ return $this->text; }
58
59 public function getBoxBound() : ?Vector3{ return $this->boxBound; }
60
61 public function getLineEndLocation() : ?Vector3{ return $this->lineEndLocation; }
62
63 public function getArrowHeadLength() : ?float{ return $this->arrowHeadLength; }
64
65 public function getArrowHeadRadius() : ?float{ return $this->arrowHeadRadius; }
66
67 public function getSegments() : ?int{ return $this->segments; }
68
69 public static function read(PacketSerializer $in) : self{
70 $networkId = $in->getUnsignedVarLong();
71 $type = $in->readOptional(fn() => ScriptDebugShapeType::fromPacket($in->getByte()));
72 $location = $in->readOptional($in->getVector3(...));
73 $scale = $in->readOptional($in->getLFloat(...));
74 $rotation = $in->readOptional($in->getVector3(...));
75 $totalTimeLeft = $in->readOptional($in->getLFloat(...));
76 $color = $in->readOptional(fn() => Color::fromARGB($in->getLInt()));
77 $text = $in->readOptional($in->getString(...));
78 $boxBound = $in->readOptional($in->getVector3(...));
79 $lineEndLocation = $in->readOptional($in->getVector3(...));
80 $arrowHeadLength = $in->readOptional($in->getLFloat(...));
81 $arrowHeadRadius = $in->readOptional($in->getLFloat(...));
82 $segments = $in->readOptional($in->getByte(...));
83
84 return new self(
85 $networkId,
86 $type,
87 $location,
88 $scale,
89 $rotation,
90 $totalTimeLeft,
91 $color,
92 $text,
93 $boxBound,
94 $lineEndLocation,
95 $arrowHeadLength,
96 $arrowHeadRadius,
97 $segments
98 );
99 }
100
101 public function write(PacketSerializer $out) : void{
102 $out->putUnsignedVarLong($this->networkId);
103 $out->writeOptional($this->type, fn(ScriptDebugShapeType $type) => $out->putByte($type->value));
104 $out->writeOptional($this->location, $out->putVector3(...));
105 $out->writeOptional($this->scale, $out->putLFloat(...));
106 $out->writeOptional($this->rotation, $out->putVector3(...));
107 $out->writeOptional($this->totalTimeLeft, $out->putLFloat(...));
108 $out->writeOptional($this->color, fn(Color $color) => $out->putLInt($color->toARGB()));
109 $out->writeOptional($this->text, $out->putString(...));
110 $out->writeOptional($this->boxBound, $out->putVector3(...));
111 $out->writeOptional($this->lineEndLocation, $out->putVector3(...));
112 $out->writeOptional($this->arrowHeadLength, $out->putLFloat(...));
113 $out->writeOptional($this->arrowHeadRadius, $out->putLFloat(...));
114 $out->writeOptional($this->segments, $out->putByte(...));
115 }
116}