mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-10-16 19:59:11 +00:00
Initial spawn on 0.16
This commit is contained in:
@@ -428,8 +428,45 @@ class Binary{
|
||||
return self::readLong(strrev($str));
|
||||
}
|
||||
|
||||
//TODO: varlong, length checks
|
||||
|
||||
public static function writeLLong($value){
|
||||
return strrev(self::writeLong($value));
|
||||
}
|
||||
|
||||
public static function readVarInt($stream){
|
||||
$raw = self::readUnsignedVarInt($stream);
|
||||
$temp = ((($raw << 31) >> 31) ^ $raw) >> 1;
|
||||
return $temp ^ ($raw & (1 << 31));
|
||||
}
|
||||
|
||||
public static function readUnsignedVarInt($stream){
|
||||
$value = 0;
|
||||
$i = 0;
|
||||
do{
|
||||
$value |= ((($b = $stream->getByte()) & 0x7f) << $i);
|
||||
$i += 7;
|
||||
}while($b & 0x80);
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
public static function writeVarInt($v){
|
||||
return self::writeUnsignedVarInt(($v << 1) ^ ($v >> 31));
|
||||
}
|
||||
|
||||
public static function writeUnsignedVarInt($v){
|
||||
$buf = "";
|
||||
do{
|
||||
$w = $v & 0x7f;
|
||||
if(($v >> 7) !== 0){
|
||||
$w = $v | 0x80;
|
||||
}
|
||||
$buf .= self::writeByte($w);
|
||||
$v >>= 7;
|
||||
}while($v);
|
||||
|
||||
return $buf;
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user