use pocketmine\item\Item; use pocketmine\network\mcpe\NetworkSession; use pocketmine\utils\UUID; class CraftingEventPacket extends DataPacket{ public const NETWORK_ID = ProtocolInfo::CRAFTING_EVENT_PACKET; /** @var int */ public $windowId; /** @var int */ public $type; /** @var UUID */ public $id; /** @var Item[] */ public $input = []; /** @var Item[] */ public $output = []; public function clean(){ $this->input = []; $this->output = []; return parent::clean(); } protected function decodePayload(){ $this->windowId = $this->getByte(); $this->type = $this->getVarInt(); $this->id = $this->getUUID(); $size = $this->getUnsignedVarInt(); for($i = 0; $i < $size and $i < 128; ++$i){ $this->input[] = $this->getSlot(); } $size = $this->getUnsignedVarInt(); for($i = 0; $i < $size and $i < 128; ++$i){ $this->output[] = $this->getSlot(); } } protected function encodePayload(){ $this->putByte($this->windowId); $this->putVarInt($this->type); $this->putUUID($this->id); $this->putUnsignedVarInt(count($this->input)); foreach($this->input as $item){ $this->putSlot($item); } $this->putUnsignedVarInt(count($this->output)); foreach($this->output as $item){ $this->putSlot($item); } } public function handle(NetworkSession $session) : bool{ return $session->handleCraftingEvent($this); } }