GenisysPro  for Minecraft PE/Windows 10 v1.1.x
Feature-rich server software for Minecraft PE and Windows 10 Edition
AcknowledgePacket Class Reference

Public Member Functions

 encode ()
 
 decode ()
 
 clean ()
 
- Public Member Functions inherited from Packet
 encode ()
 
 decode ()
 
 clean ()
 

Data Fields

 $packets = []
 
- Data Fields inherited from Packet
 $buffer
 
 $sendTime
 

Additional Inherited Members

- Static Public Attributes inherited from Packet
static $ID = -1
 
- Protected Member Functions inherited from Packet
 get ($len)
 
 getLong ($signed=true)
 
 getInt ()
 
 getShort ($signed=true)
 
 getTriad ()
 
 getLTriad ()
 
 getByte ()
 
 getString ()
 
 getAddress (&$addr, &$port, &$version=null)
 
 feof ()
 
 put ($str)
 
 putLong ($v)
 
 putInt ($v)
 
 putShort ($v)
 
 putTriad ($v)
 
 putLTriad ($v)
 
 putByte ($v)
 
 putString ($v)
 
 putAddress ($addr, $port, $version=4)
 
- Protected Attributes inherited from Packet
 $offset = 0
 

Member Function Documentation

◆ clean()

clean ( )
97  {
98  $this->packets = [];
99  return parent::clean();
100  }

◆ decode()

decode ( )
76  {
77  parent::decode();
78  $count = $this->getShort();
79  $this->packets = [];
80  $cnt = 0;
81  for($i = 0; $i < $count and !$this->feof() and $cnt < 4096; ++$i){
82  if($this->getByte() === 0){
83  $start = $this->getLTriad();
84  $end = $this->getLTriad();
85  if(($end - $start) > 512){
86  $end = $start + 512;
87  }
88  for($c = $start; $c <= $end; ++$c){
89  $this->packets[$cnt++] = $c;
90  }
91  }else{
92  $this->packets[$cnt++] = $this->getLTriad();
93  }
94  }
95  }

◆ encode()

encode ( )
29  {
30  parent::encode();
31  $payload = "";
32  sort($this->packets, SORT_NUMERIC);
33  $count = count($this->packets);
34  $records = 0;
35 
36  if($count > 0){
37  $pointer = 1;
38  $start = $this->packets[0];
39  $last = $this->packets[0];
40 
41  while($pointer < $count){
42  $current = $this->packets[$pointer++];
43  $diff = $current - $last;
44  if($diff === 1){
45  $last = $current;
46  }elseif($diff > 1){ //Forget about duplicated packets (bad queues?)
47  if($start === $last){
48  $payload .= "\x01";
49  $payload .= Binary::writeLTriad($start);
50  $start = $last = $current;
51  }else{
52  $payload .= "\x00";
53  $payload .= Binary::writeLTriad($start);
54  $payload .= Binary::writeLTriad($last);
55  $start = $last = $current;
56  }
57  ++$records;
58  }
59  }
60 
61  if($start === $last){
62  $payload .= "\x01";
63  $payload .= Binary::writeLTriad($start);
64  }else{
65  $payload .= "\x00";
66  $payload .= Binary::writeLTriad($start);
67  $payload .= Binary::writeLTriad($last);
68  }
69  ++$records;
70  }
71 
72  $this->putShort($records);
73  $this->buffer .= $payload;
74  }

Field Documentation

◆ $packets

$packets = []

The documentation for this class was generated from the following file: