Merge branch 'minor-next' into major-next

This commit is contained in:
Dylan K. Taylor
2024-11-25 14:36:25 +00:00
67 changed files with 339 additions and 130 deletions

View File

@ -70,7 +70,6 @@ final class ApiVersion{
* @return string[]
*/
public static function checkAmbiguousVersions(array $versions) : array{
/** @var VersionString[][] $indexedVersions */
$indexedVersions = [];
foreach($versions as $str){
@ -85,9 +84,8 @@ final class ApiVersion{
}
}
/** @var VersionString[] $result */
$result = [];
foreach($indexedVersions as $major => $list){
foreach($indexedVersions as $list){
if(count($list) > 1){
array_push($result, ...$list);
}

View File

@ -26,6 +26,7 @@ namespace pocketmine\plugin;
use pocketmine\permission\Permission;
use pocketmine\permission\PermissionParser;
use pocketmine\permission\PermissionParserException;
use pocketmine\utils\Utils;
use function array_map;
use function array_values;
use function get_debug_type;
@ -151,7 +152,7 @@ class PluginDescription{
$this->compatibleOperatingSystems = array_map("\strval", (array) ($plugin[self::KEY_OS] ?? []));
if(isset($plugin[self::KEY_COMMANDS]) && is_array($plugin[self::KEY_COMMANDS])){
foreach($plugin[self::KEY_COMMANDS] as $commandName => $commandData){
foreach(Utils::promoteKeys($plugin[self::KEY_COMMANDS]) as $commandName => $commandData){
if(!is_string($commandName)){
throw new PluginDescriptionParseException("Invalid Plugin commands, key must be the name of the command");
}
@ -177,7 +178,7 @@ class PluginDescription{
if(isset($plugin[self::KEY_EXTENSIONS])){
$extensions = (array) $plugin[self::KEY_EXTENSIONS];
$isLinear = $extensions === array_values($extensions);
foreach($extensions as $k => $v){
foreach(Utils::promoteKeys($extensions) as $k => $v){
if($isLinear){
$k = $v;
$v = "*";

View File

@ -23,6 +23,7 @@ declare(strict_types=1);
namespace pocketmine\plugin;
use pocketmine\utils\Utils;
use function array_flip;
use function is_array;
use function is_float;
@ -77,7 +78,7 @@ class PluginGraylist{
if(!is_array($array["plugins"])){
throw new \InvalidArgumentException("\"plugins\" must be an array");
}
foreach($array["plugins"] as $k => $v){
foreach(Utils::promoteKeys($array["plugins"]) as $k => $v){
if(!is_string($v) && !is_int($v) && !is_float($v)){
throw new \InvalidArgumentException("\"plugins\" contains invalid element at position $k");
}

View File

@ -69,10 +69,16 @@ use function strtolower;
* Manages all the plugins
*/
class PluginManager{
/** @var Plugin[] */
/**
* @var Plugin[]
* @phpstan-var array<string, Plugin>
*/
protected array $plugins = [];
/** @var Plugin[] */
/**
* @var Plugin[]
* @phpstan-var array<string, Plugin>
*/
protected array $enabledPlugins = [];
/** @var array<string, array<string, true>> */
@ -114,6 +120,7 @@ class PluginManager{
/**
* @return Plugin[]
* @phpstan-return array<string, Plugin>
*/
public function getPlugins() : array{
return $this->plugins;
@ -524,7 +531,7 @@ class PluginManager{
}
public function tickSchedulers(int $currentTick) : void{
foreach($this->enabledPlugins as $pluginName => $p){
foreach($this->enabledPlugins as $p){
$p->getScheduler()->mainThreadHeartbeat($currentTick);
}
}