use pocketmine\network\mcpe\NetworkSession; use pocketmine\network\mcpe\protocol\types\WindowTypes; class UpdateTradePacket extends DataPacket{ const NETWORK_ID = ProtocolInfo::UPDATE_TRADE_PACKET; //TODO: find fields /** @var int */ public $windowId; /** @var int */ public $windowType = WindowTypes::TRADING; //Mojang hardcoded this -_- /** @var int */ public $varint1; /** @var int */ public $varint2; /** @var bool */ public $isWilling; /** @var int */ public $traderEid; /** @var int */ public $playerEid; /** @var string */ public $displayName; /** @var string */ public $offers; protected function decodePayload(){ $this->windowId = $this->getByte(); $this->windowType = $this->getByte(); $this->varint1 = $this->getVarInt(); $this->varint2 = $this->getVarInt(); $this->isWilling = $this->getBool(); $this->traderEid = $this->getEntityUniqueId(); $this->playerEid = $this->getEntityUniqueId(); $this->displayName = $this->getString(); $this->offers = $this->getRemaining(); } protected function encodePayload(){ $this->putByte($this->windowId); $this->putByte($this->windowType); $this->putVarInt($this->varint1); $this->putVarInt($this->varint2); $this->putBool($this->isWilling); $this->putEntityUniqueId($this->traderEid); $this->putEntityUniqueId($this->playerEid); $this->putString($this->displayName); $this->put($this->offers); } public function handle(NetworkSession $session) : bool{ return $session->handleUpdateTrade($this); } }