use pocketmine\network\mcpe\NetworkSession; use pocketmine\network\mcpe\protocol\types\WindowTypes; class UpdateTradePacket extends DataPacket{ public 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 $thisIsAlwaysZero = 0; //hardcoded to 0 /** @var int */ public $tradeTier; /** @var int */ public $traderEid; /** @var int */ public $playerEid; /** @var string */ public $displayName; /** @var bool */ public $isWilling; /** @var bool */ public $isV2Trading; /** @var string */ public $offers; protected function decodePayload(){ $this->windowId = $this->getByte(); $this->windowType = $this->getByte(); $this->thisIsAlwaysZero = $this->getVarInt(); $this->tradeTier = $this->getVarInt(); $this->traderEid = $this->getEntityUniqueId(); $this->playerEid = $this->getEntityUniqueId(); $this->displayName = $this->getString(); $this->isWilling = $this->getBool(); $this->isV2Trading = $this->getBool(); $this->offers = $this->getRemaining(); } protected function encodePayload(){ $this->putByte($this->windowId); $this->putByte($this->windowType); $this->putVarInt($this->thisIsAlwaysZero); $this->putVarInt($this->tradeTier); $this->putEntityUniqueId($this->traderEid); $this->putEntityUniqueId($this->playerEid); $this->putString($this->displayName); $this->putBool($this->isWilling); $this->putBool($this->isV2Trading); $this->put($this->offers); } public function handle(NetworkSession $session) : bool{ return $session->handleUpdateTrade($this); } }