From 260ac47588c76a2e6814cfba46773a990fb8c5da Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 30 Jan 2020 22:06:21 +0000 Subject: [PATCH] add some phpstan array types --- build/server-phar.php | 1 + src/pocketmine/CrashDump.php | 6 +++++- src/pocketmine/Server.php | 7 ++++++- src/pocketmine/block/BaseRail.php | 3 +++ src/pocketmine/block/Leaves.php | 1 + .../command/defaults/TimingsCommand.php | 1 + src/pocketmine/entity/DataPropertyManager.php | 12 +++++++++-- src/pocketmine/entity/Entity.php | 11 ++++++++-- src/pocketmine/entity/Living.php | 2 ++ .../event/server/QueryRegenerateEvent.php | 7 ++++++- src/pocketmine/item/Banner.php | 1 + src/pocketmine/item/Item.php | 9 +++++++++ src/pocketmine/lang/BaseLang.php | 1 + .../level/format/io/LevelProvider.php | 2 ++ .../level/format/io/LevelProviderManager.php | 5 ++++- src/pocketmine/level/generator/Flat.php | 13 ++++++++++-- src/pocketmine/level/generator/Generator.php | 2 ++ .../level/generator/GeneratorManager.php | 5 ++++- .../level/generator/GeneratorRegisterTask.php | 1 + .../level/generator/hell/Nether.php | 1 + .../level/generator/normal/Normal.php | 1 + .../network/mcpe/NetworkBinaryStream.php | 4 ++++ .../network/mcpe/protocol/AddActorPacket.php | 5 ++++- .../mcpe/protocol/AddItemActorPacket.php | 5 ++++- .../network/mcpe/protocol/AddPlayerPacket.php | 5 ++++- .../mcpe/protocol/AvailableCommandsPacket.php | 1 + .../mcpe/protocol/GameRulesChangedPacket.php | 5 ++++- .../network/mcpe/protocol/LoginPacket.php | 10 ++++++++-- .../mcpe/protocol/SetActorDataPacket.php | 5 ++++- .../network/mcpe/protocol/StartGamePacket.php | 11 ++++++++-- src/pocketmine/permission/Permission.php | 9 ++++++++- src/pocketmine/plugin/PluginDescription.php | 20 ++++++++++++++++--- src/pocketmine/scheduler/BulkCurlTask.php | 2 ++ src/pocketmine/scheduler/SendUsageTask.php | 1 + src/pocketmine/tile/Banner.php | 1 + src/pocketmine/updater/AutoUpdater.php | 7 ++++++- src/pocketmine/utils/Config.php | 17 ++++++++++++++-- src/pocketmine/utils/MainLogger.php | 1 + src/pocketmine/utils/Utils.php | 3 +++ 39 files changed, 177 insertions(+), 27 deletions(-) diff --git a/build/server-phar.php b/build/server-phar.php index fba479cd3..394e0f62c 100644 --- a/build/server-phar.php +++ b/build/server-phar.php @@ -45,6 +45,7 @@ function preg_quote_array(array $strings, string $delim = null) : array{ * @param string $stub * @param int $signatureAlgo * @param int|null $compression + * @phpstan-param array $metadata * * @return \Generator|string[] */ diff --git a/src/pocketmine/CrashDump.php b/src/pocketmine/CrashDump.php index 72d7779eb..321210dcd 100644 --- a/src/pocketmine/CrashDump.php +++ b/src/pocketmine/CrashDump.php @@ -100,7 +100,10 @@ class CrashDump{ private $fp; /** @var int */ private $time; - /** @var mixed[] */ + /** + * @var mixed[] + * @phpstan-var array + */ private $data = []; /** @var string */ private $encodedData = ""; @@ -146,6 +149,7 @@ class CrashDump{ /** * @return mixed[] + * @phpstan-return array */ public function getData() : array{ return $this->data; diff --git a/src/pocketmine/Server.php b/src/pocketmine/Server.php index 44a0e6c9f..f9d577924 100644 --- a/src/pocketmine/Server.php +++ b/src/pocketmine/Server.php @@ -314,7 +314,10 @@ class Server{ /** @var string */ private $pluginPath; - /** @var string[] */ + /** + * @var string[] + * @phpstan-var array + */ private $uniquePlayers = []; /** @var QueryHandler */ @@ -978,6 +981,7 @@ class Server{ * * @param string|null $generator Class name that extends pocketmine\level\generator\Generator * @param mixed[] $options + * @phpstan-param array $options */ public function generateLevel(string $name, int $seed = null, $generator = null, array $options = []) : bool{ if(trim($name) === "" or $this->isLevelGenerated($name)){ @@ -1999,6 +2003,7 @@ class Server{ /** * @param mixed[][]|null $trace + * @phpstan-param list>|null $trace * * @return void */ diff --git a/src/pocketmine/block/BaseRail.php b/src/pocketmine/block/BaseRail.php index c06cced4c..c5fb8b2e3 100644 --- a/src/pocketmine/block/BaseRail.php +++ b/src/pocketmine/block/BaseRail.php @@ -102,6 +102,7 @@ abstract class BaseRail extends Flowable{ /** * @param int[] $connections * @param int[][] $lookup + * @phpstan-param array> $lookup */ protected static function searchState(array $connections, array $lookup) : int{ $meta = array_search($connections, $lookup, true); @@ -170,6 +171,7 @@ abstract class BaseRail extends Flowable{ * @param int[] $constraints * * @return true[] + * @phpstan-return array */ private function getPossibleConnectionDirections(array $constraints) : array{ switch(count($constraints)){ @@ -197,6 +199,7 @@ abstract class BaseRail extends Flowable{ /** * @return true[] + * @phpstan-return array */ protected function getPossibleConnectionDirectionsOneConstraint(int $constraint) : array{ $opposite = Vector3::getOppositeSide($constraint & ~self::FLAG_ASCEND); diff --git a/src/pocketmine/block/Leaves.php b/src/pocketmine/block/Leaves.php index 95cc3aa4a..a760e604e 100644 --- a/src/pocketmine/block/Leaves.php +++ b/src/pocketmine/block/Leaves.php @@ -70,6 +70,7 @@ class Leaves extends Transparent{ /** * @param true[] $visited reference parameter + * @phpstan-param array $visited */ protected function findLog(Block $pos, array &$visited, int $distance, ?int $fromSide = null) : bool{ $index = $pos->x . "." . $pos->y . "." . $pos->z; diff --git a/src/pocketmine/command/defaults/TimingsCommand.php b/src/pocketmine/command/defaults/TimingsCommand.php index d4154c275..fea5010b7 100644 --- a/src/pocketmine/command/defaults/TimingsCommand.php +++ b/src/pocketmine/command/defaults/TimingsCommand.php @@ -128,6 +128,7 @@ class TimingsCommand extends VanillaCommand{ /** * @param string[] $data + * @phpstan-param array $data */ public function __construct(CommandSender $sender, string $host, string $agent, array $data){ parent::__construct([ diff --git a/src/pocketmine/entity/DataPropertyManager.php b/src/pocketmine/entity/DataPropertyManager.php index fb87f574b..78cdcfafa 100644 --- a/src/pocketmine/entity/DataPropertyManager.php +++ b/src/pocketmine/entity/DataPropertyManager.php @@ -32,10 +32,16 @@ use function is_string; class DataPropertyManager{ - /** @var mixed[][] */ + /** + * @var mixed[][] + * @phpstan-var array + */ private $properties = []; - /** @var mixed[][] */ + /** + * @var mixed[][] + * @phpstan-var array + */ private $dirtyProperties = []; public function __construct(){ @@ -178,6 +184,7 @@ class DataPropertyManager{ * Returns all properties. * * @return mixed[][] + * @phpstan-return array */ public function getAll() : array{ return $this->properties; @@ -187,6 +194,7 @@ class DataPropertyManager{ * Returns properties that have changed and need to be broadcasted. * * @return mixed[][] + * @phpstan-return array */ public function getDirty() : array{ return $this->dirtyProperties; diff --git a/src/pocketmine/entity/Entity.php b/src/pocketmine/entity/Entity.php index 92efee83e..2a4141b4d 100644 --- a/src/pocketmine/entity/Entity.php +++ b/src/pocketmine/entity/Entity.php @@ -319,9 +319,15 @@ abstract class Entity extends Location implements Metadatable, EntityIds{ /** @var int */ public static $entityCount = 1; - /** @var string[] */ + /** + * @var string[] + * @phpstan-var array> + */ private static $knownEntities = []; - /** @var string[][] */ + /** + * @var string[][] + * @phpstan-var array, list> + */ private static $saveNames = []; /** @@ -2056,6 +2062,7 @@ abstract class Entity extends Location implements Metadatable, EntityIds{ /** * @param Player[]|Player $player * @param mixed[][] $data Properly formatted entity data, defaults to everything + * @phpstan-param array $data */ public function sendData($player, ?array $data = null) : void{ if(!is_array($player)){ diff --git a/src/pocketmine/entity/Living.php b/src/pocketmine/entity/Living.php index 134781441..80aa45e50 100644 --- a/src/pocketmine/entity/Living.php +++ b/src/pocketmine/entity/Living.php @@ -793,6 +793,7 @@ abstract class Living extends Entity implements Damageable{ /** * @param true[] $transparent + * @phpstan-param array $transparent * * @return Block[] */ @@ -835,6 +836,7 @@ abstract class Living extends Entity implements Damageable{ /** * @param true[] $transparent + * @phpstan-param array $transparent */ public function getTargetBlock(int $maxDistance, array $transparent = []) : ?Block{ $line = $this->getLineOfSight($maxDistance, 1, $transparent); diff --git a/src/pocketmine/event/server/QueryRegenerateEvent.php b/src/pocketmine/event/server/QueryRegenerateEvent.php index 4c2b428a8..fb6693a47 100644 --- a/src/pocketmine/event/server/QueryRegenerateEvent.php +++ b/src/pocketmine/event/server/QueryRegenerateEvent.php @@ -63,7 +63,10 @@ class QueryRegenerateEvent extends ServerEvent{ /** @var string */ private $ip; - /** @var string[] */ + /** + * @var string[] + * @phpstan-var array + */ private $extraData = []; /** @var string|null */ @@ -192,6 +195,7 @@ class QueryRegenerateEvent extends ServerEvent{ * Returns the extra Query data in key => value form * * @return string[] + * @phpstan-return array */ public function getExtraData() : array{ return $this->extraData; @@ -199,6 +203,7 @@ class QueryRegenerateEvent extends ServerEvent{ /** * @param string[] $extraData + * @phpstan-param array $extraData */ public function setExtraData(array $extraData) : void{ $this->extraData = $extraData; diff --git a/src/pocketmine/item/Banner.php b/src/pocketmine/item/Banner.php index eaa9cb24b..4af379872 100644 --- a/src/pocketmine/item/Banner.php +++ b/src/pocketmine/item/Banner.php @@ -99,6 +99,7 @@ class Banner extends Item{ * Returns the data of a pattern with the given ID. * * @return mixed[] + * @phpstan-return array{Color?: int, Pattern?: string} */ public function getPatternData(int $patternId) : array{ if(!$this->patternExists($patternId)){ diff --git a/src/pocketmine/item/Item.php b/src/pocketmine/item/Item.php index 852785714..c469755bc 100644 --- a/src/pocketmine/item/Item.php +++ b/src/pocketmine/item/Item.php @@ -771,6 +771,7 @@ class Item implements ItemIds, \JsonSerializable{ * Returns an array of item stack properties that can be serialized to json. * * @return mixed[] + * @phpstan-return array{id: int, damage?: int, count?: int, nbt_b64?: string} */ final public function jsonSerialize() : array{ $data = [ @@ -795,6 +796,14 @@ class Item implements ItemIds, \JsonSerializable{ /** * Returns an Item from properties created in an array by {@link Item#jsonSerialize} * @param mixed[] $data + * @phpstan-param array{ + * id: int, + * damage?: int, + * count?: int, + * nbt?: string, + * nbt_hex?: string, + * nbt_b64?: string + * } $data */ final public static function jsonDeserialize(array $data) : Item{ $nbt = ""; diff --git a/src/pocketmine/lang/BaseLang.php b/src/pocketmine/lang/BaseLang.php index 6da49a01f..3100bf89e 100644 --- a/src/pocketmine/lang/BaseLang.php +++ b/src/pocketmine/lang/BaseLang.php @@ -45,6 +45,7 @@ class BaseLang{ /** * @return string[] + * @phpstan-return array */ public static function getLanguageList(string $path = "") : array{ if($path === ""){ diff --git a/src/pocketmine/level/format/io/LevelProvider.php b/src/pocketmine/level/format/io/LevelProvider.php index 03afe60d0..68d101ae2 100644 --- a/src/pocketmine/level/format/io/LevelProvider.php +++ b/src/pocketmine/level/format/io/LevelProvider.php @@ -54,6 +54,7 @@ interface LevelProvider{ * Generate the needed files in the path given * * @param mixed[] $options + * @phpstan-param array $options * * @return void */ @@ -66,6 +67,7 @@ interface LevelProvider{ /** * @return mixed[] + * @phpstan-return array */ public function getGeneratorOptions() : array; diff --git a/src/pocketmine/level/format/io/LevelProviderManager.php b/src/pocketmine/level/format/io/LevelProviderManager.php index dfe6ab0ca..009289f8f 100644 --- a/src/pocketmine/level/format/io/LevelProviderManager.php +++ b/src/pocketmine/level/format/io/LevelProviderManager.php @@ -31,7 +31,10 @@ use function strtolower; use function trim; abstract class LevelProviderManager{ - /** @var string[] */ + /** + * @var string[] + * @phpstan-var array> + */ protected static $providers = []; public static function init() : void{ diff --git a/src/pocketmine/level/generator/Flat.php b/src/pocketmine/level/generator/Flat.php index 9892437e7..ca05f7438 100644 --- a/src/pocketmine/level/generator/Flat.php +++ b/src/pocketmine/level/generator/Flat.php @@ -44,13 +44,19 @@ class Flat extends Generator{ private $chunk; /** @var Populator[] */ private $populators = []; - /** @var int[][] */ + /** + * @var int[][] + * @phpstan-var array + */ private $structure; /** @var int */ private $floorLevel; /** @var int */ private $biome; - /** @var mixed[] */ + /** + * @var mixed[] + * @phpstan-var array + */ private $options; /** @var string */ private $preset; @@ -65,6 +71,7 @@ class Flat extends Generator{ /** * @param mixed[] $options + * @phpstan-param array $options * * @throws InvalidGeneratorOptionsException */ @@ -97,6 +104,8 @@ class Flat extends Generator{ /** * @return int[][] + * @phpstan-return array + * * @throws InvalidGeneratorOptionsException */ public static function parseLayers(string $layers) : array{ diff --git a/src/pocketmine/level/generator/Generator.php b/src/pocketmine/level/generator/Generator.php index 9a870285f..fa44ad9d3 100644 --- a/src/pocketmine/level/generator/Generator.php +++ b/src/pocketmine/level/generator/Generator.php @@ -58,6 +58,7 @@ abstract class Generator{ * @throws InvalidGeneratorOptionsException * * @param mixed[] $settings + * @phpstan-param array $settings */ abstract public function __construct(array $settings = []); @@ -72,6 +73,7 @@ abstract class Generator{ /** * @return mixed[] + * @phpstan-return array */ abstract public function getSettings() : array; diff --git a/src/pocketmine/level/generator/GeneratorManager.php b/src/pocketmine/level/generator/GeneratorManager.php index 694a9467e..3d73aad11 100644 --- a/src/pocketmine/level/generator/GeneratorManager.php +++ b/src/pocketmine/level/generator/GeneratorManager.php @@ -30,7 +30,10 @@ use function is_subclass_of; use function strtolower; final class GeneratorManager{ - /** @var string[] name => classname mapping */ + /** + * @var string[] name => classname mapping + * @phpstan-var array> + */ private static $list = []; /** diff --git a/src/pocketmine/level/generator/GeneratorRegisterTask.php b/src/pocketmine/level/generator/GeneratorRegisterTask.php index 58daafbb2..715d3cff5 100644 --- a/src/pocketmine/level/generator/GeneratorRegisterTask.php +++ b/src/pocketmine/level/generator/GeneratorRegisterTask.php @@ -47,6 +47,7 @@ class GeneratorRegisterTask extends AsyncTask{ /** * @param mixed[] $generatorSettings + * @phpstan-param array $generatorSettings */ public function __construct(Level $level, string $generatorClass, array $generatorSettings = []){ $this->generatorClass = $generatorClass; diff --git a/src/pocketmine/level/generator/hell/Nether.php b/src/pocketmine/level/generator/hell/Nether.php index 370d2405b..4b1d8aaab 100644 --- a/src/pocketmine/level/generator/hell/Nether.php +++ b/src/pocketmine/level/generator/hell/Nether.php @@ -54,6 +54,7 @@ class Nether extends Generator{ /** * @param mixed[] $options + * @phpstan-param array $options * * @throws InvalidGeneratorOptionsException */ diff --git a/src/pocketmine/level/generator/normal/Normal.php b/src/pocketmine/level/generator/normal/Normal.php index 7cd443c27..86dfc6b96 100644 --- a/src/pocketmine/level/generator/normal/Normal.php +++ b/src/pocketmine/level/generator/normal/Normal.php @@ -62,6 +62,7 @@ class Normal extends Generator{ /** * @param mixed[] $options + * @phpstan-param array $options * * @throws InvalidGeneratorOptionsException */ diff --git a/src/pocketmine/network/mcpe/NetworkBinaryStream.php b/src/pocketmine/network/mcpe/NetworkBinaryStream.php index b9567ca6a..6bf5d4dac 100644 --- a/src/pocketmine/network/mcpe/NetworkBinaryStream.php +++ b/src/pocketmine/network/mcpe/NetworkBinaryStream.php @@ -274,6 +274,7 @@ class NetworkBinaryStream extends BinaryStream{ * @param bool $types Whether to include metadata types along with values in the returned array * * @return mixed[]|mixed[][] + * @phpstan-return array|array */ public function getEntityMetadata(bool $types = true) : array{ $count = $this->getUnsignedVarInt(); @@ -328,6 +329,7 @@ class NetworkBinaryStream extends BinaryStream{ * Writes entity metadata to the packet buffer. * * @param mixed[][] $metadata + * @phpstan-param array $metadata */ public function putEntityMetadata(array $metadata) : void{ $this->putUnsignedVarInt(count($metadata)); @@ -545,6 +547,7 @@ class NetworkBinaryStream extends BinaryStream{ * TODO: implement this properly * * @return mixed[][], members are in the structure [name => [type, value]] + * @phpstan-return array */ public function getGameRules() : array{ $count = $this->getUnsignedVarInt(); @@ -576,6 +579,7 @@ class NetworkBinaryStream extends BinaryStream{ * TODO: implement this properly * * @param mixed[][] $rules + * @phpstan-param array $rules */ public function putGameRules(array $rules) : void{ $this->putUnsignedVarInt(count($rules)); diff --git a/src/pocketmine/network/mcpe/protocol/AddActorPacket.php b/src/pocketmine/network/mcpe/protocol/AddActorPacket.php index 94893b22e..e3122dc05 100644 --- a/src/pocketmine/network/mcpe/protocol/AddActorPacket.php +++ b/src/pocketmine/network/mcpe/protocol/AddActorPacket.php @@ -163,7 +163,10 @@ class AddActorPacket extends DataPacket{ /** @var Attribute[] */ public $attributes = []; - /** @var mixed[][] */ + /** + * @var mixed[][] + * @phpstan-var array + */ public $metadata = []; /** @var EntityLink[] */ public $links = []; diff --git a/src/pocketmine/network/mcpe/protocol/AddItemActorPacket.php b/src/pocketmine/network/mcpe/protocol/AddItemActorPacket.php index 37e46d746..9e7bb0d16 100644 --- a/src/pocketmine/network/mcpe/protocol/AddItemActorPacket.php +++ b/src/pocketmine/network/mcpe/protocol/AddItemActorPacket.php @@ -42,7 +42,10 @@ class AddItemActorPacket extends DataPacket{ public $position; /** @var Vector3|null */ public $motion; - /** @var mixed[][] */ + /** + * @var mixed[][] + * @phpstan-var array + */ public $metadata = []; /** @var bool */ public $isFromFishing = false; diff --git a/src/pocketmine/network/mcpe/protocol/AddPlayerPacket.php b/src/pocketmine/network/mcpe/protocol/AddPlayerPacket.php index e4bd88c0c..fa4fbf64f 100644 --- a/src/pocketmine/network/mcpe/protocol/AddPlayerPacket.php +++ b/src/pocketmine/network/mcpe/protocol/AddPlayerPacket.php @@ -57,7 +57,10 @@ class AddPlayerPacket extends DataPacket{ public $headYaw = null; //TODO /** @var Item */ public $item; - /** @var mixed[][] */ + /** + * @var mixed[][] + * @phpstan-var array + */ public $metadata = []; //TODO: adventure settings stuff diff --git a/src/pocketmine/network/mcpe/protocol/AvailableCommandsPacket.php b/src/pocketmine/network/mcpe/protocol/AvailableCommandsPacket.php index 563472b76..d2c7104c2 100644 --- a/src/pocketmine/network/mcpe/protocol/AvailableCommandsPacket.php +++ b/src/pocketmine/network/mcpe/protocol/AvailableCommandsPacket.php @@ -362,6 +362,7 @@ class AvailableCommandsPacket extends DataPacket{ /** * @param string[] $postfixes + * @phpstan-param array $postfixes */ private function argTypeToString(int $argtype, array $postfixes) : string{ if($argtype & self::ARG_FLAG_VALID){ diff --git a/src/pocketmine/network/mcpe/protocol/GameRulesChangedPacket.php b/src/pocketmine/network/mcpe/protocol/GameRulesChangedPacket.php index 86941fba8..6c59c1672 100644 --- a/src/pocketmine/network/mcpe/protocol/GameRulesChangedPacket.php +++ b/src/pocketmine/network/mcpe/protocol/GameRulesChangedPacket.php @@ -30,7 +30,10 @@ use pocketmine\network\mcpe\NetworkSession; class GameRulesChangedPacket extends DataPacket{ public const NETWORK_ID = ProtocolInfo::GAME_RULES_CHANGED_PACKET; - /** @var mixed[][] */ + /** + * @var mixed[][] + * @phpstan-var array + */ public $gameRules = []; protected function decodePayload(){ diff --git a/src/pocketmine/network/mcpe/protocol/LoginPacket.php b/src/pocketmine/network/mcpe/protocol/LoginPacket.php index 013bc4f56..a8ad473bf 100644 --- a/src/pocketmine/network/mcpe/protocol/LoginPacket.php +++ b/src/pocketmine/network/mcpe/protocol/LoginPacket.php @@ -54,11 +54,17 @@ class LoginPacket extends DataPacket{ /** @var string */ public $locale; - /** @var string[][] (the "chain" index contains one or more JWTs) */ + /** + * @var string[][] (the "chain" index contains one or more JWTs) + * @phpstan-var array{chain?: list} + */ public $chainData = []; /** @var string */ public $clientDataJwt; - /** @var mixed[] decoded payload of the clientData JWT */ + /** + * @var mixed[] decoded payload of the clientData JWT + * @phpstan-var array + */ public $clientData = []; /** diff --git a/src/pocketmine/network/mcpe/protocol/SetActorDataPacket.php b/src/pocketmine/network/mcpe/protocol/SetActorDataPacket.php index ad419e733..c48c86420 100644 --- a/src/pocketmine/network/mcpe/protocol/SetActorDataPacket.php +++ b/src/pocketmine/network/mcpe/protocol/SetActorDataPacket.php @@ -32,7 +32,10 @@ class SetActorDataPacket extends DataPacket{ /** @var int */ public $entityRuntimeId; - /** @var mixed[][] */ + /** + * @var mixed[][] + * @phpstan-var array + */ public $metadata; protected function decodePayload(){ diff --git a/src/pocketmine/network/mcpe/protocol/StartGamePacket.php b/src/pocketmine/network/mcpe/protocol/StartGamePacket.php index 0f5e8b449..bcddf5bab 100644 --- a/src/pocketmine/network/mcpe/protocol/StartGamePacket.php +++ b/src/pocketmine/network/mcpe/protocol/StartGamePacket.php @@ -102,7 +102,10 @@ class StartGamePacket extends DataPacket{ public $commandsEnabled; /** @var bool */ public $isTexturePacksRequired = true; - /** @var mixed[][] */ + /** + * @var mixed[][] + * @phpstan-var array + */ public $gameRules = [ //TODO: implement this "naturalregeneration" => [1, false] //Hack for client side regeneration ]; @@ -152,7 +155,10 @@ class StartGamePacket extends DataPacket{ /** @var ListTag|null */ public $blockTable = null; - /** @var int[]|null string (name) => int16 (legacyID) */ + /** + * @var int[]|null string (name) => int16 (legacyID) + * @phpstan-var array|null + */ public $itemTable = null; protected function decodePayload(){ @@ -301,6 +307,7 @@ class StartGamePacket extends DataPacket{ /** * @param int[] $table + * @phpstan-param array $table */ private static function serializeItemTable(array $table) : string{ $stream = new NetworkBinaryStream(); diff --git a/src/pocketmine/permission/Permission.php b/src/pocketmine/permission/Permission.php index 197161af1..536c955ed 100644 --- a/src/pocketmine/permission/Permission.php +++ b/src/pocketmine/permission/Permission.php @@ -84,6 +84,7 @@ class Permission{ /** * @param mixed[][] $data + * @phpstan-param array> $data * * @return Permission[] */ @@ -99,6 +100,7 @@ class Permission{ /** * @param mixed[] $data * @param Permission[] $output reference parameter + * @phpstan-param array $data * * @throws \Exception */ @@ -137,7 +139,10 @@ class Permission{ /** @var string */ private $description; - /** @var bool[] */ + /** + * @var bool[] + * @phpstan-var array + */ private $children; /** @var string */ @@ -147,6 +152,7 @@ class Permission{ * Creates a new Permission object to be attached to Permissible objects * * @param bool[] $children + * @phpstan-param array $children */ public function __construct(string $name, string $description = null, string $defaultValue = null, array $children = []){ $this->name = $name; @@ -163,6 +169,7 @@ class Permission{ /** * @return bool[] + * @phpstan-return array */ public function &getChildren() : array{ return $this->children; diff --git a/src/pocketmine/plugin/PluginDescription.php b/src/pocketmine/plugin/PluginDescription.php index 4b3bcf691..cd55c9ed4 100644 --- a/src/pocketmine/plugin/PluginDescription.php +++ b/src/pocketmine/plugin/PluginDescription.php @@ -41,7 +41,10 @@ use function version_compare; use function yaml_parse; class PluginDescription{ - /** @var mixed[] */ + /** + * @var mixed[] + * @phpstan-var array + */ private $map; /** @var string */ @@ -52,7 +55,10 @@ class PluginDescription{ private $api; /** @var int[] */ private $compatibleMcpeProtocols = []; - /** @var string[][] */ + /** + * @var string[][] + * @phpstan-var array> + */ private $extensions = []; /** @var string[] */ private $depend = []; @@ -62,7 +68,10 @@ class PluginDescription{ private $loadBefore = []; /** @var string */ private $version; - /** @var mixed[][] */ + /** + * @var mixed[][] + * @phpstan-var array> + */ private $commands = []; /** @var string */ private $description = ""; @@ -80,6 +89,7 @@ class PluginDescription{ /** * @param string|mixed[] $yamlString + * @phpstan-param string|array $yamlString */ public function __construct($yamlString){ $this->loadMap(!is_array($yamlString) ? yaml_parse($yamlString) : $yamlString); @@ -87,6 +97,7 @@ class PluginDescription{ /** * @param mixed[] $plugin + * @phpstan-param array $plugin * @throws PluginException */ private function loadMap(array $plugin) : void{ @@ -189,6 +200,7 @@ class PluginDescription{ /** * @return mixed[][] + * @phpstan-return array> */ public function getCommands() : array{ return $this->commands; @@ -196,6 +208,7 @@ class PluginDescription{ /** * @return string[][] + * @phpstan-return array> */ public function getRequiredExtensions() : array{ return $this->extensions; @@ -290,6 +303,7 @@ class PluginDescription{ /** * @return mixed[] + * @phpstan-return array */ public function getMap() : array{ return $this->map; diff --git a/src/pocketmine/scheduler/BulkCurlTask.php b/src/pocketmine/scheduler/BulkCurlTask.php index e88e5b9c7..0b1fb12e9 100644 --- a/src/pocketmine/scheduler/BulkCurlTask.php +++ b/src/pocketmine/scheduler/BulkCurlTask.php @@ -46,6 +46,7 @@ class BulkCurlTask extends AsyncTask{ * * @param mixed[][] $operations * @param mixed|null $complexData + * @phpstan-param list, extraOpts?: array}> $operations */ public function __construct(array $operations, $complexData = null){ $this->storeLocal($complexData); @@ -53,6 +54,7 @@ class BulkCurlTask extends AsyncTask{ } public function onRun(){ + /** @phpstan-var list, extraOpts?: array}> $operations */ $operations = unserialize($this->operations); $results = []; foreach($operations as $op){ diff --git a/src/pocketmine/scheduler/SendUsageTask.php b/src/pocketmine/scheduler/SendUsageTask.php index 10652122a..a43bcf5cf 100644 --- a/src/pocketmine/scheduler/SendUsageTask.php +++ b/src/pocketmine/scheduler/SendUsageTask.php @@ -51,6 +51,7 @@ class SendUsageTask extends AsyncTask{ /** * @param string[] $playerList + * @phpstan-param array $playerList */ public function __construct(Server $server, int $type, array $playerList = []){ $endpoint = "http://" . $server->getProperty("anonymous-statistics.host", "stats.pocketmine.net") . "/"; diff --git a/src/pocketmine/tile/Banner.php b/src/pocketmine/tile/Banner.php index a1d4dd6aa..2037b2ce0 100644 --- a/src/pocketmine/tile/Banner.php +++ b/src/pocketmine/tile/Banner.php @@ -166,6 +166,7 @@ class Banner extends Spawnable implements Nameable{ * Returns the data of a pattern with the given ID. * * @return mixed[] + * @phpstan-return array{Color?: int, Pattern?: string} */ public function getPatternData(int $patternId) : array{ if(!$this->patternExists($patternId)){ diff --git a/src/pocketmine/updater/AutoUpdater.php b/src/pocketmine/updater/AutoUpdater.php index 2b671ac1a..e27a406da 100644 --- a/src/pocketmine/updater/AutoUpdater.php +++ b/src/pocketmine/updater/AutoUpdater.php @@ -41,7 +41,10 @@ class AutoUpdater{ protected $server; /** @var string */ protected $endpoint; - /** @var mixed[]|null */ + /** + * @var mixed[]|null + * @phpstan-var array|null + */ protected $updateInfo = null; /** @var VersionString|null */ protected $newVersion; @@ -59,6 +62,7 @@ class AutoUpdater{ * Callback used at the end of the update checking task * * @param mixed[] $updateInfo + * @phpstan-param array $updateInfo * * @return void */ @@ -153,6 +157,7 @@ class AutoUpdater{ * Returns the last retrieved update data. * * @return mixed[]|null + * @phpstan-return array|null */ public function getUpdateInfo(){ return $this->updateInfo; diff --git a/src/pocketmine/utils/Config.php b/src/pocketmine/utils/Config.php index de582eba5..c04e74fc7 100644 --- a/src/pocketmine/utils/Config.php +++ b/src/pocketmine/utils/Config.php @@ -68,10 +68,16 @@ class Config{ public const ENUM = 5; // .txt, .list, .enum public const ENUMERATION = Config::ENUM; - /** @var mixed[] */ + /** + * @var mixed[] + * @phpstan-var array + */ private $config = []; - /** @var mixed[] */ + /** + * @var mixed[] + * @phpstan-var array + */ private $nestedCache = []; /** @var string */ @@ -110,6 +116,7 @@ class Config{ * @param int $type Config type to load, -1 by default (detect) * @param mixed[] $default Array with the default values that will be written to the file if it did not exist * @param null $correct reference parameter, Sets correct to true if everything has been loaded correctly + * @phpstan-param array $default */ public function __construct(string $file, int $type = Config::DETECT, array $default = [], &$correct = null){ $this->load($file, $type, $default); @@ -142,6 +149,7 @@ class Config{ /** * @param mixed[] $default + * @phpstan-param array $default */ public function load(string $file, int $type = Config::DETECT, array $default = []) : bool{ $this->correct = true; @@ -445,6 +453,7 @@ class Config{ /** * @param mixed[] $v + * @phpstan-param array $v * * @return void */ @@ -479,6 +488,7 @@ class Config{ /** * @return mixed[] + * @phpstan-return list|array */ public function getAll(bool $keys = false) : array{ return ($keys ? array_keys($this->config) : $this->config); @@ -486,6 +496,7 @@ class Config{ /** * @param mixed[] $defaults + * @phpstan-param array $defaults * * @return void */ @@ -496,6 +507,8 @@ class Config{ /** * @param mixed[] $default * @param mixed[] $data reference parameter + * @phpstan-param array $default + * @phpstan-param array $data */ private function fillDefaults(array $default, &$data) : int{ $changed = 0; diff --git a/src/pocketmine/utils/MainLogger.php b/src/pocketmine/utils/MainLogger.php index 2a0af9f4c..f89d0ce68 100644 --- a/src/pocketmine/utils/MainLogger.php +++ b/src/pocketmine/utils/MainLogger.php @@ -189,6 +189,7 @@ class MainLogger extends \AttachableThreadedLogger{ /** * @param mixed[][]|null $trace + * @phpstan-param list>|null $trace * * @return void */ diff --git a/src/pocketmine/utils/Utils.php b/src/pocketmine/utils/Utils.php index 0ebfada3b..46e291c0d 100644 --- a/src/pocketmine/utils/Utils.php +++ b/src/pocketmine/utils/Utils.php @@ -526,6 +526,7 @@ class Utils{ /** * @return mixed[] + * @phpstan-return array */ public static function decodeJWT(string $token) : array{ list($headB64, $payloadB64, $sigB64) = explode(".", $token); @@ -574,6 +575,7 @@ class Utils{ /** * @param mixed[][] $trace + * @phpstan-param list> $trace * * @return string[] */ @@ -608,6 +610,7 @@ class Utils{ /** * @return mixed[][] + * @phpstan-return list> */ public static function currentTrace(int $skipFrames = 0) : array{ ++$skipFrames; //omit this frame from trace, in addition to other skipped frames