34 private int $requestId,
35 private array $actions,
36 private array $filterStrings,
37 private int $filterStringCause
40 public function getRequestId() : int{ return $this->requestId; }
43 public function getActions() : array{ return $this->actions; }
51 public function getFilterStringCause() : int{ return $this->filterStringCause; }
57 private static function readAction(ByteBufferReader $in,
int $typeId) : ItemStackRequestAction{
58 return match($typeId){
59 TakeStackRequestAction::ID => TakeStackRequestAction::read($in),
60 PlaceStackRequestAction::ID => PlaceStackRequestAction::read($in),
61 SwapStackRequestAction::ID => SwapStackRequestAction::read($in),
62 DropStackRequestAction::ID => DropStackRequestAction::read($in),
63 DestroyStackRequestAction::ID => DestroyStackRequestAction::read($in),
64 CraftingConsumeInputStackRequestAction::ID => CraftingConsumeInputStackRequestAction::read($in),
65 CraftingCreateSpecificResultStackRequestAction::ID => CraftingCreateSpecificResultStackRequestAction::read($in),
66 LabTableCombineStackRequestAction::ID => LabTableCombineStackRequestAction::read($in),
67 BeaconPaymentStackRequestAction::ID => BeaconPaymentStackRequestAction::read($in),
68 MineBlockStackRequestAction::ID => MineBlockStackRequestAction::read($in),
69 CraftRecipeStackRequestAction::ID => CraftRecipeStackRequestAction::read($in),
70 CraftRecipeAutoStackRequestAction::ID => CraftRecipeAutoStackRequestAction::read($in),
71 CreativeCreateStackRequestAction::ID => CreativeCreateStackRequestAction::read($in),
72 CraftRecipeOptionalStackRequestAction::ID => CraftRecipeOptionalStackRequestAction::read($in),
73 GrindstoneStackRequestAction::ID => GrindstoneStackRequestAction::read($in),
74 LoomStackRequestAction::ID => LoomStackRequestAction::read($in),
75 DeprecatedCraftingNonImplementedStackRequestAction::ID => DeprecatedCraftingNonImplementedStackRequestAction::read($in),
76 DeprecatedCraftingResultsStackRequestAction::ID => DeprecatedCraftingResultsStackRequestAction::read($in),
81 public static function read(ByteBufferReader $in) : self{
82 $requestId =
CommonTypes::readItemStackRequestId($in);
84 for($i = 0, $len = VarInt::readUnsignedInt($in); $i < $len; ++$i){
85 $typeId = Byte::readUnsigned($in);
86 $actions[] = self::readAction($in, $typeId);
89 for($i = 0, $len = VarInt::readUnsignedInt($in); $i < $len; ++$i){
90 $filterStrings[] = CommonTypes::getString($in);
92 $filterStringCause = LE::readSignedInt($in);
93 return new self($requestId, $actions, $filterStrings, $filterStringCause);
96 public function write(ByteBufferWriter $out) : void{
97 CommonTypes::writeItemStackRequestId($out, $this->requestId);
98 VarInt::writeUnsignedInt($out, count($this->actions));
99 foreach($this->actions as $action){
100 Byte::writeUnsigned($out, $action->getTypeId());
101 $action->write($out);
103 VarInt::writeUnsignedInt($out, count($this->filterStrings));
104 foreach($this->filterStrings as $string){
105 CommonTypes::putString($out, $string);
107 LE::writeSignedInt($out, $this->filterStringCause);