mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-09-06 17:59:48 +00:00
Multiple tree packet handling
This commit is contained in:
@ -52,30 +52,50 @@ class CustomPacketHandler{
|
||||
case 0x60:
|
||||
case 0x40:
|
||||
if($this->c === false){
|
||||
$this->data["counter"] = Utils::readTriad($this->get(3));
|
||||
if($pid === 0x60){
|
||||
$this->data["unknown1"] = $this->get(4);
|
||||
}
|
||||
$this->data["packets"] = array();
|
||||
$i = 0;
|
||||
while($this->offset < strlen($this->raw)){
|
||||
if($i > 0){
|
||||
$pid = ord($this->get(1));
|
||||
}
|
||||
$len = Utils::readShort($this->get(2), false) >> 3;
|
||||
$c = Utils::readTriad($this->get(3));
|
||||
if($pid === 0x60 and $i === 0){
|
||||
$this->data["unknown1"] = $this->get(4);
|
||||
}
|
||||
$id = ord($this->get(1));
|
||||
$raw = $this->get(true);
|
||||
$raw = $this->get($len - 1);
|
||||
$pk = new CustomPacketHandler($id, $raw);
|
||||
$pk->data["lenght"] = $len;
|
||||
$pk->data["id"] = $id;
|
||||
$pk->data["counter"] = $c;
|
||||
$pk->data["packetName"] = $pk->name;
|
||||
$this->data["packets"][] = array($pid, $pk->data, $raw);
|
||||
if($pid === 0x60 and $i === 0){
|
||||
$l = $this->get(3);
|
||||
if(strlen($l) === 3){
|
||||
$this->data["unknown2"] = $this->get(Utils::readTriad($l));
|
||||
}
|
||||
}
|
||||
++$i;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0x82:
|
||||
if($this->c === false){
|
||||
$this->data["username"] = $this->get(Utils::readShort($this->get(2), false));
|
||||
$this->data["unknown1"] = $this->get(5);
|
||||
$this->data["unknown1"] = $this->get(8);
|
||||
}else{
|
||||
$this->raw .= Utils::writeShort(strlen($this->data["username"])).$this->data["username"];
|
||||
$this->raw .= "\x00\x00\x00\x08\x00";
|
||||
$this->raw .= "\x00\x00\x00\x07\x00\x00\x00\x07";
|
||||
}
|
||||
break;
|
||||
break;
|
||||
case 0x86:
|
||||
if($this->c === false){
|
||||
$this->data["time"] = Utils::readInt($this->get(4));
|
||||
}else{
|
||||
$this->raw .= Utils::writeInt($this->data["time"]);
|
||||
}
|
||||
break;
|
||||
case 0x09:
|
||||
if($this->c === false){
|
||||
@ -132,12 +152,13 @@ class CustomPacketHandler{
|
||||
$this->data["unknown2"] = $this->get(13);
|
||||
}else{
|
||||
$this->raw .= "\x04\x3f\x57\xff";
|
||||
$this->raw .= "\x3d";
|
||||
$this->raw .= "\x3e";
|
||||
$this->raw .= Utils::writeShort($this->data["port"]);
|
||||
$w = array_shift($this->data["dataArray"]);
|
||||
$this->raw .= chr(strlen($w)).$w;
|
||||
$this->raw .= Utils::writeDataArray($this->data["dataArray"]);
|
||||
$this->raw .= "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
|
||||
$this->raw .= "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
|
||||
$this->raw .= "\x00\xae\x21\x4e";
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
Reference in New Issue
Block a user