Раньше моя команда работала на файле по этому пути, когда перешел на новую версию Незер гейма у меня не работает файл. Куда переместили файл по этому пути pocketmine\network\mcpe\protocol\AvailableCommandsPacket
namespace 123\rank;
use pocketmine\scheduler\Task;
use pocketmine\Server;
use 123\command\CommandArgs;
use 123\command\PracticeCommand;
use 123\player\session\Session;
use 123\player\session\SessionManager;
use 123\rank\types\Rank;
use 123\rank\types\RankPriorities;
use 123\rcon\Rcon;
use 123\rcon\RconCommandSender;
use 123\translation\Translator;
use 123\utils\PracticeUtils;
use pocketmine\command\CommandSender;
use pocketmine\network\mcpe\protocol\AvailableCommandsPacket;
use pocketmine\player\Player;
use pocketmine\utils\TextFormat;
use function count;
final class RankCommand extends PracticeCommand {
private const SET_ARGUMENT = 'set';
private const GET_ARGUMENT = 'get';
private const LIST_ARGUMENT = 'list';
private const RANK_ARGUMENT = 'rank';
public function \__construct(private readonly RankManager $rankManager) {
parent::\__construct('rank', "Change player's rank.", 'Usage: /rank set <player> <rank> OR /rank get <player> OR /rank list', haveArguments: true);
$this->commandArgs = new CommandArgs();
$setKey = $this->commandArgs->addParameter(0, self::SET_ARGUMENT, AvailableCommandsPacket::ARG_FLAG_ENUM | AvailableCommandsPacket::ARG_TYPE_STRING);
$this->commandArgs->setEnum(0, $setKey, self::SET_ARGUMENT, \[self::SET_ARGUMENT\]);
$this->commandArgs->addParameter(0, self::PLAYER_ARGUMENT, AvailableCommandsPacket::ARG_TYPE_TARGET);
$rankKey = $this->commandArgs->addParameter(0, self::RANK_ARGUMENT, AvailableCommandsPacket::ARG_FLAG_ENUM | AvailableCommandsPacket::ARG_TYPE_STRING);
$this->commandArgs->setEnum(0, $rankKey, self::RANK_ARGUMENT, array_map(fn (Rank $rank): string => $rank->getName(), array_values(Rank::getAll())));
$getKey = $this->commandArgs->addParameter(1, self::GET_ARGUMENT, AvailableCommandsPacket::ARG_FLAG_ENUM | AvailableCommandsPacket::ARG_TYPE_STRING);
$this->commandArgs->setEnum(1, $getKey, self::GET_ARGUMENT, \[self::GET_ARGUMENT\]);
$this->commandArgs->addParameter(1, self::PLAYER_ARGUMENT, AvailableCommandsPacket::ARG_TYPE_TARGET, true);
$listKey = $this->commandArgs->addParameter(2, self::LIST_ARGUMENT, AvailableCommandsPacket::ARG_FLAG_ENUM | AvailableCommandsPacket::ARG_TYPE_STRING);
$this->commandArgs->setEnum(2, $listKey, self::LIST_ARGUMENT, \[self::LIST_ARGUMENT\]);
}
в CommandArgs скорее всего используется CommandEnum, его заменили на CommandHardEnum
Вот мой CommandArgs вроде правельно все
<?php
declare(strict_types=1);
namespace 123\command;
use pocketmine\network\mcpe\protocol\AvailableCommandsPacket;
use pocketmine\network\mcpe\protocol\types\command\CommandHardEnum;
use pocketmine\network\mcpe\protocol\types\command\CommandOverload;
use pocketmine\network\mcpe\protocol\types\command\CommandParameter;
use function count;
class CommandArgs {
final public const FLAG_NORMAL = 0;
/** @var CommandParameter[][] */
private array $parameters = [];
/** @var CommandOverload[] */
private array $overloads = [];
public function addParameter(int $columnId, string $name, int $type = AvailableCommandsPacket::ARG_TYPE_RAWTEXT, bool $isOptional = false, ?string $enumName = null, array $enumValues = [], bool $customType = false, ?string $postfix = null): int {
$parameter = new CommandParameter();
$parameter->paramName = $name;
$parameter->paramType = $customType ? $type : AvailableCommandsPacket::ARG_FLAG_VALID | $type;
$parameter->isOptional = $isOptional;
$parameter->postfix = $postfix;
$this->parameters[$columnId][] = $parameter;
$columnKey = count($this->parameters[$columnId]) - 1;
if (null !== $enumName) {
$this->setEnum($columnId, $columnKey, $enumName, $enumValues);
}
$this->overloads = [];
foreach ($this->parameters as $parameters) {
$this->overloads[] = new CommandOverload(false, $parameters);
}
return $columnKey;
}
public function setEnum(int $columnId, int $columnKey, ?string $name, array $values = []): bool {
$parameter = $this->parameters[$columnId][$columnKey] ?? null;
if (!$parameter instanceof CommandParameter) {
return false;
}
if (null !== $name) {
$enum = new CommandHardEnum($name, $values);
}
$parameter->enum = null === $name ? null : $enum;
return true;
}
public function getOverloads(): array {
return $this->overloads;
}
public static function noArguments(): self {
($self = new self())->addParameter(0, '', AvailableCommandsPacket::ARG_FLAG_VALID | AvailableCommandsPacket::ARG_FLAG_ENUM, false, '', ['']);
return $self;
}
}
прости не знал
ну так что