mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-07-09 11:31:49 +00:00
Merge branch 'next-minor'
This commit is contained in:
commit
c36377ea5a
@ -7,7 +7,7 @@ includes:
|
|||||||
- tests/phpstan/configs/runtime-type-checks.neon
|
- tests/phpstan/configs/runtime-type-checks.neon
|
||||||
|
|
||||||
parameters:
|
parameters:
|
||||||
level: 4
|
level: 5
|
||||||
autoload_files:
|
autoload_files:
|
||||||
- tests/phpstan/bootstrap.php
|
- tests/phpstan/bootstrap.php
|
||||||
- src/PocketMine.php
|
- src/PocketMine.php
|
||||||
|
@ -35,12 +35,12 @@ class Location extends Position{
|
|||||||
public $pitch;
|
public $pitch;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param int $x
|
* @param float|int $x
|
||||||
* @param int $y
|
* @param float|int $y
|
||||||
* @param int $z
|
* @param float|int $z
|
||||||
* @param float $yaw
|
* @param float $yaw
|
||||||
* @param float $pitch
|
* @param float $pitch
|
||||||
* @param World $world
|
* @param World $world
|
||||||
*/
|
*/
|
||||||
public function __construct($x = 0, $y = 0, $z = 0, float $yaw = 0.0, float $pitch = 0.0, ?World $world = null){
|
public function __construct($x = 0, $y = 0, $z = 0, float $yaw = 0.0, float $pitch = 0.0, ?World $world = null){
|
||||||
$this->yaw = $yaw;
|
$this->yaw = $yaw;
|
||||||
|
@ -123,9 +123,9 @@ class Language{
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $str
|
* @param string $str
|
||||||
* @param string[] $params
|
* @param (float|int|string)[] $params
|
||||||
* @param string|null $onlyPrefix
|
* @param string|null $onlyPrefix
|
||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
|
@ -29,8 +29,8 @@ class TranslationContainer extends TextContainer{
|
|||||||
protected $params = [];
|
protected $params = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $text
|
* @param string $text
|
||||||
* @param string[] $params
|
* @param (float|int|string)[] $params
|
||||||
*/
|
*/
|
||||||
public function __construct(string $text, array $params = []){
|
public function __construct(string $text, array $params = []){
|
||||||
parent::__construct($text);
|
parent::__construct($text);
|
||||||
|
@ -32,10 +32,10 @@ class Position extends Vector3{
|
|||||||
public $world = null;
|
public $world = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param int $x
|
* @param float|int $x
|
||||||
* @param int $y
|
* @param float|int $y
|
||||||
* @param int $z
|
* @param float|int $z
|
||||||
* @param World $world
|
* @param World $world
|
||||||
*/
|
*/
|
||||||
public function __construct($x = 0, $y = 0, $z = 0, ?World $world = null){
|
public function __construct($x = 0, $y = 0, $z = 0, ?World $world = null){
|
||||||
parent::__construct($x, $y, $z);
|
parent::__construct($x, $y, $z);
|
||||||
|
@ -85,8 +85,8 @@ trait LegacyAnvilChunkTrait{
|
|||||||
$chunk->getInt("xPos"),
|
$chunk->getInt("xPos"),
|
||||||
$chunk->getInt("zPos"),
|
$chunk->getInt("zPos"),
|
||||||
$subChunks,
|
$subChunks,
|
||||||
$chunk->hasTag("Entities", ListTag::class) ? $chunk->getListTag("Entities")->getValue() : [],
|
$chunk->hasTag("Entities", ListTag::class) ? self::getCompoundList("Entities", $chunk->getListTag("Entities")) : [],
|
||||||
$chunk->hasTag("TileEntities", ListTag::class) ? $chunk->getListTag("TileEntities")->getValue() : [],
|
$chunk->hasTag("TileEntities", ListTag::class) ? self::getCompoundList("TileEntities", $chunk->getListTag("TileEntities")) : [],
|
||||||
$biomeIds
|
$biomeIds
|
||||||
);
|
);
|
||||||
$result->setPopulated($chunk->getByte("TerrainPopulated", 0) !== 0);
|
$result->setPopulated($chunk->getByte("TerrainPopulated", 0) !== 0);
|
||||||
|
@ -87,8 +87,8 @@ class McRegion extends RegionWorldProvider{
|
|||||||
$chunk->getInt("xPos"),
|
$chunk->getInt("xPos"),
|
||||||
$chunk->getInt("zPos"),
|
$chunk->getInt("zPos"),
|
||||||
$subChunks,
|
$subChunks,
|
||||||
$chunk->hasTag("Entities", ListTag::class) ? $chunk->getListTag("Entities")->getValue() : [],
|
$chunk->hasTag("Entities", ListTag::class) ? self::getCompoundList("Entities", $chunk->getListTag("Entities")) : [],
|
||||||
$chunk->hasTag("TileEntities", ListTag::class) ? $chunk->getListTag("TileEntities")->getValue() : [],
|
$chunk->hasTag("TileEntities", ListTag::class) ? self::getCompoundList("TileEntities", $chunk->getListTag("TileEntities")) : [],
|
||||||
$biomeIds
|
$biomeIds
|
||||||
);
|
);
|
||||||
$result->setPopulated($chunk->getByte("TerrainPopulated", 0) !== 0);
|
$result->setPopulated($chunk->getByte("TerrainPopulated", 0) !== 0);
|
||||||
|
@ -23,6 +23,9 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace pocketmine\world\format\io\region;
|
namespace pocketmine\world\format\io\region;
|
||||||
|
|
||||||
|
use pocketmine\nbt\NBT;
|
||||||
|
use pocketmine\nbt\tag\ListTag;
|
||||||
|
use pocketmine\nbt\tag\CompoundTag;
|
||||||
use pocketmine\utils\Utils;
|
use pocketmine\utils\Utils;
|
||||||
use pocketmine\world\format\Chunk;
|
use pocketmine\world\format\Chunk;
|
||||||
use pocketmine\world\format\io\BaseWorldProvider;
|
use pocketmine\world\format\io\BaseWorldProvider;
|
||||||
@ -187,6 +190,31 @@ abstract class RegionWorldProvider extends BaseWorldProvider{
|
|||||||
*/
|
*/
|
||||||
abstract protected function deserializeChunk(string $data) : Chunk;
|
abstract protected function deserializeChunk(string $data) : Chunk;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $context
|
||||||
|
* @param ListTag $list
|
||||||
|
*
|
||||||
|
* @return CompoundTag[]
|
||||||
|
* @throws CorruptedChunkException
|
||||||
|
*/
|
||||||
|
protected static function getCompoundList(string $context, ListTag $list) : array{
|
||||||
|
if($list->count() === 0){ //empty lists might have wrong types, we don't care
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
if($list->getTagType() !== NBT::TAG_Compound){
|
||||||
|
throw new CorruptedChunkException("Expected TAG_List<TAG_Compound> for '$context'");
|
||||||
|
}
|
||||||
|
$result = [];
|
||||||
|
foreach($list as $tag){
|
||||||
|
if(!($tag instanceof CompoundTag)){
|
||||||
|
//this should never happen, but it's still possible due to lack of native type safety
|
||||||
|
throw new CorruptedChunkException("Expected TAG_List<TAG_Compound> for '$context'");
|
||||||
|
}
|
||||||
|
$result[] = $tag;
|
||||||
|
}
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param int $chunkX
|
* @param int $chunkX
|
||||||
* @param int $chunkZ
|
* @param int $chunkZ
|
||||||
|
Loading…
x
Reference in New Issue
Block a user