PocketMine-MP  1.4 - API 1.10.0
 All Classes Namespaces Functions Variables Pages
ContainerSetContentPacket.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 $windowid;
32  public $slots = [];
33  public $hotbar = [];
34 
35  public function pid(){
36  return Info::CONTAINER_SET_CONTENT_PACKET;
37  }
38 
39  public function clean(){
40  $this->slots = [];
41  $this->hotbar = [];
42  return parent::clean();
43  }
44 
45  public function decode(){
46  $this->windowid = $this->getByte();
47  $count = $this->getShort();
48  for($s = 0; $s < $count and !$this->feof(); ++$s){
49  $this->slots[$s] = $this->getSlot();
50  }
51  if($this->windowid === 0){
52  $count = $this->getShort();
53  for($s = 0; $s < $count and !$this->feof(); ++$s){
54  $this->hotbar[$s] = $this->getInt();
55  }
56  }
57  }
58 
59  public function encode(){
60  $this->reset();
61  $this->putByte($this->windowid);
62  $this->putShort(count($this->slots));
63  foreach($this->slots as $slot){
64  $this->putSlot($slot);
65  }
66  if($this->windowid === 0 and count($this->hotbar) > 0){
67  $this->putShort(count($this->hotbar));
68  foreach($this->hotbar as $slot){
69  $this->putInt($slot);
70  }
71  }else{
72  $this->putShort(0);
73  }
74  }
75 
76 }