13declare(strict_types=1);
 
   15namespace pocketmine\network\mcpe\protocol\types\inventory\stackrequest;
 
   17use pmmp\encoding\Byte;
 
   18use pmmp\encoding\ByteBufferReader;
 
   19use pmmp\encoding\ByteBufferWriter;
 
   21trait TakeOrPlaceStackRequestActionTrait{
 
   22    final public function __construct(
 
   24        private ItemStackRequestSlotInfo $source,
 
   25        private ItemStackRequestSlotInfo $destination
 
   28    final public function getCount() : int{ return $this->count; }
 
   30    final public function getSource() : ItemStackRequestSlotInfo{ return $this->source; }
 
   32    final public function getDestination() : ItemStackRequestSlotInfo{ return $this->destination; }
 
   34    public static function read(ByteBufferReader $in) : self{
 
   35        $count = Byte::readUnsigned($in);
 
   36        $src = ItemStackRequestSlotInfo::read($in);
 
   37        $dst = ItemStackRequestSlotInfo::read($in);
 
   38        return new self($count, $src, $dst);
 
   41    public function write(ByteBufferWriter $out) : void{
 
   42        Byte::writeUnsigned($out, $this->count);
 
   43        $this->source->write($out);
 
   44        $this->destination->write($out);