PocketMine-MP  1.4 - API 1.10.0
 All Classes Namespaces Functions Variables Pages
SendInventoryPacket.php
1 <?php
2 
3 /*
4  *
5  * ____ _ _ __ __ _ __ __ ____
6  * | _ \ ___ ___| | _____| |_| \/ (_)_ __ ___ | \/ | _ \
7  * | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |
8  * | __/ (_) | (__| < __/ |_| | | | | | | | __/_____| | | | __/
9  * |_| \___/ \___|_|\_\___|\__|_| |_|_|_| |_|\___| |_| |_|_|
10  *
11  * This program is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License as published by
13  * the Free Software Foundation, either version 3 of the License, or
14  * (at your option) any later version.
15  *
16  * @author PocketMine Team
17  * @link http://www.pocketmine.net/
18  *
19  *
20 */
21 
22 namespace pocketmine\network\protocol;
23 
24 #include <rules/DataPacket.h>
25 
26 
28  public static $pool = [];
29  public static $next = 0;
30 
31  public $eid;
32  public $windowid;
33  public $slots = [];
34  public $armor = [];
35 
36  public function pid(){
37  return Info::SEND_INVENTORY_PACKET;
38  }
39 
40  public function decode(){
41  $this->eid = $this->getInt();
42  $this->windowid = $this->getByte();
43  $count = $this->getShort();
44  for($s = 0; $s < $count and !$this->feof(); ++$s){
45  $this->slots[$s] = $this->getSlot();
46  }
47  if($this->windowid === 1){ //Armor is sent
48  for($s = 0; $s < 4; ++$s){
49  $this->armor[$s] = $this->getSlot();
50  }
51  }
52  }
53 
54  public function encode(){
55  $this->reset();
56  $this->putInt($this->eid);
57  $this->putByte($this->windowid);
58  $this->putShort(count($this->slots));
59  foreach($this->slots as $slot){
60  $this->putSlot($slot);
61  }
62  if($this->windowid === 1 and count($this->armor) === 4){
63  for($s = 0; $s < 4; ++$s){
64  $this->putSlot($this->armor[$s]);
65  }
66  }
67  }
68 
69 }