Возможно, я не разобрался дрстаточно в том, что ты предложил.
А ты плохо разрекламировал ))
Я до пнд офф, потом подключусь к происходящему заново...
Ну смотри:
Создаешь класс с командами. К каждой команде, на каждый набор фиксированых аргументов создаешь функцию.
@CommandExecutor(
cmd="тут команда",
args="тут аргументы, и если ввели именно их то вызовется функция внизу",
desc="Описание для вывода их в cmd+" help"",
perm="пермишен")
public void (sender, cmd, label, args) { }
В args он возвращает уже "пофикшеные" аргументы, где " some string blablabla" уже занимает не три разные ячейки в массиве а одну, причем скобки удаляются.
Дальше. Аргументы бывают разных типов: string, numeric, player, onplayer, location, time и тд, их можно легко добавлять/удалять/изменять. Все проверки для них тоже легко меняются. Каждый аргумент проверяется отдельно.
Если совпали все фиксед аргументы (допустим, что нужные это "command arg1 [onplayer:hahhahaSomePlayer] arg2", а введенные это "command arg1 NicknameOfOnlinePlayerThere arg2"), но игрок hahhahaSomePlayer оффлайн (а onplayer означает, что он должен быть онлайн) то система напишет в чате, что игрок такой-то - оффлайн. И так со всеми аргументами.
В ближайшее время сделаю код читабельным и добавлю систему не обезательных аргументов типа "--тутбуква"