PocketMine-MP 5.35.1 git-e32e836dad793a3a3c8ddd8927c00e112b1e576a
Loading...
Searching...
No Matches
EducationSettingsPacket.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;
16
17use pmmp\encoding\ByteBufferReader;
18use pmmp\encoding\ByteBufferWriter;
22
24 public const NETWORK_ID = ProtocolInfo::EDUCATION_SETTINGS_PACKET;
25
26 private string $codeBuilderDefaultUri;
27 private string $codeBuilderTitle;
28 private bool $canResizeCodeBuilder;
29 private bool $disableLegacyTitleBar;
30 private string $postProcessFilter;
31 private string $screenshotBorderResourcePath;
32 private ?EducationSettingsAgentCapabilities $agentCapabilities;
33 private ?string $codeBuilderOverrideUri;
34 private bool $hasQuiz;
35 private ?EducationSettingsExternalLinkSettings $linkSettings;
36
40 public static function create(
41 string $codeBuilderDefaultUri,
42 string $codeBuilderTitle,
43 bool $canResizeCodeBuilder,
44 bool $disableLegacyTitleBar,
45 string $postProcessFilter,
46 string $screenshotBorderResourcePath,
47 ?EducationSettingsAgentCapabilities $agentCapabilities,
48 ?string $codeBuilderOverrideUri,
49 bool $hasQuiz,
51 ) : self{
52 $result = new self;
53 $result->codeBuilderDefaultUri = $codeBuilderDefaultUri;
54 $result->codeBuilderTitle = $codeBuilderTitle;
55 $result->canResizeCodeBuilder = $canResizeCodeBuilder;
56 $result->disableLegacyTitleBar = $disableLegacyTitleBar;
57 $result->postProcessFilter = $postProcessFilter;
58 $result->screenshotBorderResourcePath = $screenshotBorderResourcePath;
59 $result->agentCapabilities = $agentCapabilities;
60 $result->codeBuilderOverrideUri = $codeBuilderOverrideUri;
61 $result->hasQuiz = $hasQuiz;
62 $result->linkSettings = $linkSettings;
63 return $result;
64 }
65
66 public function getCodeBuilderDefaultUri() : string{
67 return $this->codeBuilderDefaultUri;
68 }
69
70 public function getCodeBuilderTitle() : string{
71 return $this->codeBuilderTitle;
72 }
73
74 public function canResizeCodeBuilder() : bool{
75 return $this->canResizeCodeBuilder;
76 }
77
78 public function disableLegacyTitleBar() : bool{ return $this->disableLegacyTitleBar; }
79
80 public function getPostProcessFilter() : string{ return $this->postProcessFilter; }
81
82 public function getScreenshotBorderResourcePath() : string{ return $this->screenshotBorderResourcePath; }
83
84 public function getAgentCapabilities() : ?EducationSettingsAgentCapabilities{ return $this->agentCapabilities; }
85
86 public function getCodeBuilderOverrideUri() : ?string{
87 return $this->codeBuilderOverrideUri;
88 }
89
90 public function getHasQuiz() : bool{
91 return $this->hasQuiz;
92 }
93
94 public function getLinkSettings() : ?EducationSettingsExternalLinkSettings{ return $this->linkSettings; }
95
96 protected function decodePayload(ByteBufferReader $in) : void{
97 $this->codeBuilderDefaultUri = CommonTypes::getString($in);
98 $this->codeBuilderTitle = CommonTypes::getString($in);
99 $this->canResizeCodeBuilder = CommonTypes::getBool($in);
100 $this->disableLegacyTitleBar = CommonTypes::getBool($in);
101 $this->postProcessFilter = CommonTypes::getString($in);
102 $this->screenshotBorderResourcePath = CommonTypes::getString($in);
103 $this->agentCapabilities = CommonTypes::readOptional($in, EducationSettingsAgentCapabilities::read(...));
104 $this->codeBuilderOverrideUri = CommonTypes::readOptional($in, CommonTypes::getString(...));
105 $this->hasQuiz = CommonTypes::getBool($in);
106 $this->linkSettings = CommonTypes::readOptional($in, EducationSettingsExternalLinkSettings::read(...));
107 }
108
109 protected function encodePayload(ByteBufferWriter $out) : void{
110 CommonTypes::putString($out, $this->codeBuilderDefaultUri);
111 CommonTypes::putString($out, $this->codeBuilderTitle);
112 CommonTypes::putBool($out, $this->canResizeCodeBuilder);
113 CommonTypes::putBool($out, $this->disableLegacyTitleBar);
114 CommonTypes::putString($out, $this->postProcessFilter);
115 CommonTypes::putString($out, $this->screenshotBorderResourcePath);
116 CommonTypes::writeOptional($out, $this->agentCapabilities, fn(ByteBufferWriter $out, EducationSettingsAgentCapabilities $v) => $v->write($out));
117 CommonTypes::writeOptional($out, $this->codeBuilderOverrideUri, CommonTypes::putString(...));
118 CommonTypes::putBool($out, $this->hasQuiz);
119 CommonTypes::writeOptional($out, $this->linkSettings, fn(ByteBufferWriter $out, EducationSettingsExternalLinkSettings $v) => $v->write($out));
120 }
121
122 public function handle(PacketHandlerInterface $handler) : bool{
123 return $handler->handleEducationSettings($this);
124 }
125}
static create(string $codeBuilderDefaultUri, string $codeBuilderTitle, bool $canResizeCodeBuilder, bool $disableLegacyTitleBar, string $postProcessFilter, string $screenshotBorderResourcePath, ?EducationSettingsAgentCapabilities $agentCapabilities, ?string $codeBuilderOverrideUri, bool $hasQuiz, ?EducationSettingsExternalLinkSettings $linkSettings,)