use pocketmine\item\Item; use pocketmine\math\Vector3; use pocketmine\network\mcpe\handler\PacketHandler; use pocketmine\network\mcpe\protocol\types\entity\MetadataProperty; class AddItemActorPacket extends DataPacket implements ClientboundPacket{ public const NETWORK_ID = ProtocolInfo::ADD_ITEM_ACTOR_PACKET; /** @var int|null */ public $entityUniqueId = null; //TODO /** @var int */ public $entityRuntimeId; /** @var Item */ public $item; /** @var Vector3 */ public $position; /** @var Vector3|null */ public $motion; /** @var MetadataProperty[] */ public $metadata = []; /** @var bool */ public $isFromFishing = false; protected function decodePayload() : void{ $this->entityUniqueId = $this->getEntityUniqueId(); $this->entityRuntimeId = $this->getEntityRuntimeId(); $this->item = $this->getSlot(); $this->position = $this->getVector3(); $this->motion = $this->getVector3(); $this->metadata = $this->getEntityMetadata(); $this->isFromFishing = $this->getBool(); } protected function encodePayload() : void{ $this->putEntityUniqueId($this->entityUniqueId ?? $this->entityRuntimeId); $this->putEntityRuntimeId($this->entityRuntimeId); $this->putSlot($this->item); $this->putVector3($this->position); $this->putVector3Nullable($this->motion); $this->putEntityMetadata($this->metadata); $this->putBool($this->isFromFishing); } public function handle(PacketHandler $handler) : bool{ return $handler->handleAddItemActor($this); } }