diff --git a/src/Player.php b/src/Player.php index b5cbf9f69..6e524dba8 100644 --- a/src/Player.php +++ b/src/Player.php @@ -543,7 +543,7 @@ class Player{ $this->recovery[$count] = null; unset($this->recovery[$count]); } - $limit = microtime(true) - 1; //max lag + $limit = microtime(true) - 2; //max lag foreach($this->recovery as $count => $d){ $diff = $this->counter[2] - $count; if($diff > 16 and $d["sendtime"] < $limit){ @@ -584,13 +584,13 @@ class Player{ $diff = $data[0] - $this->counter[1]; if($diff > 1){ //Packet recovery for($i = $this->counter[1]; $i < $data[0]; ++$i){ - $this->send(0xa0, array($i)); + $this->send(0xa0, array(array($i))); } $this->counter[1] = $data[0]; }elseif($diff === 1){ $this->counter[1] = $data[0]; } - $this->send(0xc0, array($data[0])); + $this->send(0xc0, array(array($data[0]))); } if(!isset($data["id"])){ diff --git a/src/network/Packet.php b/src/network/Packet.php index 5cf82f7c2..fbd14865f 100644 --- a/src/network/Packet.php +++ b/src/network/Packet.php @@ -62,15 +62,16 @@ class Packet{ case 0xc0: case 0xa0: $cnt = 0; - $this->addRaw(Utils::writeShort(floor(count($this->data[$field]) / 2))); + $this->addRaw(Utils::writeShort(ceil(count($this->data[$field]) / 2))); foreach($this->data[$field] as $i => $count){ - if(($cnt % 2) === 0){ + if(($cnt % 2) === 0 or $cnt === 0){ if(count($this->data[$field]) > 1){ $this->addRaw(Utils::writeBool(false)); }else{ $this->addRaw(Utils::writeBool(true)); } } + ++$cnt; $this->addRaw(strrev(Utils::writeTriad($count))); unset($this->data[$field][$i]); }