Помогите Аргументы команды без багов.

Bomber123

Активный участник
Пользователь
Баллы
76
Проблема в том что когда я пишу команду типа: /ma create <arenaname> если я пишу только /ma create то выдаёт ошибку а если с названием арены то всё чики пуки. Как исправить ошибку?
 
А не проще просто проверить:
if(args.length < 2) {
Error
return true;
}
Зачем использовать "else", когда есть return?
Как минимум потому что вариаций команд может быть БОЛЬШЕ ОДНОЙ. Т.е. если аргументов меньше (как у меня в примере) и сработает else, то возможно игрок захотел посмотреть информацию о своём клане, а не кого либо другого. Я показал общий принцип, далее он сам решит что и как.
 
А чтоб не в одной каше, можно так.
if (args.length == 1) return one(sender, args);
if (args.length == 2) return two(sender, args);
 
Как вариант:
Код:
    public void parse(String[] args, Player player) {
        switch(args[0].toLowerCase()) {
            case "set":
                parseSet(args, player);
                break;
            case "delete":
               parseDelete(args, player);
               break;
            default:
              //выводить помощь
        }
    }
}
Использовать советую так:
Код:
if(sender instanceof Player) {
parse(args, (Player) sender);
}
if(sender instanceof ConsoleCommandSender) {
parseConsole(args, (ConsoleCommandSender) sender); //отдельный метод для консоли, не все команды можно с консоли спокойно выполнить
}
 
Последнее редактирование:
Как вариант:
Код:
    public void parse(String[] args, Player player) {
        switch(args[0]) {
            case "set":
                parseSet(args, player);
                break;
            case "delete":
               parseDelete(args, player);
               break;
            default:
              //выводить помощь
        }
    }
}
А если аргумент будет в верхнем регистре?
 
Как минимум потому что вариаций команд может быть БОЛЬШЕ ОДНОЙ. Т.е. если аргументов меньше (как у меня в примере) и сработает else, то возможно игрок захотел посмотреть информацию о своём клане, а не кого либо другого. Я показал общий принцип, далее он сам решит что и как.
Особенно тебе.
 
Как вариант:
Код:
    public void parse(String[] args, Player player) {
        switch(args[0].toLowerCase()) {
            case "set":
                parseSet(args, player);
                break;
            case "delete":
               parseDelete(args, player);
               break;
            default:
              //выводить помощь
        }
    }
}
Использовать советую так:
Код:
if(sender instanceof Player) {
parse(args, (Player) sender);
}
if(sender instanceof ConsoleCommandSender) {
parseConsole(args, (ConsoleCommandSender) sender); //отдельный метод для консоли, не все команды можно с консоли спокойно выполнить
}
И тебе тож большое спасибо!
 
У меня новая проблема я интегрировал WorldEdit и сделал проверку существует ли выделение и если его не существует то игроку пишется сообщение Выделите арену. Она выглядит вот так
Код:
if(sel.getMinimumPoint() == null && sel.getMaximumPoint() == null)
{
    p.sendMessage("Выделите арену");
    return true;
}
И мне выдаёт ошибку NullPointerExeption. Если чё не так подправьте.
 
У меня новая проблема я интегрировал WorldEdit и сделал проверку существует ли выделение и если его не существует то игроку пишется сообщение Выделите арену. Она выглядит вот так
Код:
if(sel.getMinimumPoint() == null && sel.getMaximumPoint() == null)
{
    p.sendMessage("Выделите арену");
    return true;
}
И мне выдаёт ошибку NullPointerExeption. Если чё не так подправьте.
Ты саму sel проверяешь на null? Нет. А надо.
 
Так мне жёлтую ошибку выдаёт и даёт варианты либо убрать либо поставить SupornessWarnings("unused") над onCommand()
 
Назад
Верх