Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Еще одна ошибка. =C

ANTI_GREEFER

Активный участник
Пользователь
Баллы
88
6988e06793194249afa2254.png

Не работает оператор IF.
Подскажите решение или скажите где писать setCanceled(true) в командах.
 
Нужно написать в нужном месте return true
 
Понял. Оно возвращяет серверу bool значение, что команда завершилась? Ясно.
 
1. Вы уверены, что название команды - "darberplugin.kick"? Название команды - это то название, которое вводит пользователь. Например "kick".
2. if (args[1] != null).
Получите ArrayIndexOutOfBoundsException, если массив слишком маленький. Для проверки размера массива используйте array.length >= someNumber.
3. Что касается setCancelled. Обработчик команды только один, поэтому нет действия отмены команды. Если хотите завершить выполнение команды, просто используйте return true; для выхода из метода.
4. Про return. Если написать return false, то сервер покажет usage команды из plugin.yml. Если написать return true, то сервер ничего не сделает.
 
Java:
else if(cmd.getName().equalsIgnoreCase("kick"))
{
    Player p = Bukkit.getServer().getPlayer(args[0]);
    if(p == null)
        {
          sender.sendMessage(args[0] + " is offline.");
          return true;
        }
    if(args[1] == null)
        {
          sender.sendMessage("Enter rhe reason!");
          return true;
        }
    p.kickPlayer(args[1]);
    return true;
}
Как-то так :)
 
Java:
else if(cmd.getName().equalsIgnoreCase("kick"))
{
    Player p = Bukkit.getServer().getPlayer(args[0]);
    if(p == null)
        {
          sender.sendMessage(args[0] + " is offline.");
          return true;
        }
    if(args[1] == null)
        {
          sender.sendMessage("Enter rhe reason!");
          return true;
        }
    p.kickPlayer(args[1]);
    return true;
}
Как-то так :)
что значит args[1] == null??? если нет причины, то этот аргумент не нулл, а его вообще нет и будет ошибка. так что он либо причина, либо его просто нет.
 
что значит args[1] == null??? если нет причины, то этот аргумент не нулл, а его вообще нет и будет ошибка. так что он либо причина, либо его просто нет.
Если его нет, значит null. Ошибки не будет, так как return true;.
Если args[1] > 1, тогда все нормально.
 
Если его нет, значит null. Ошибки не будет, так как return true;
если его нет, то аргумент только 1 (только ник, без причины, и то надо проверить, что он есть). то есть надо писать не if (args[1] == null) а if (args.length < 2) и этого будет достаточно
Если args[1] > 1, тогда все нормально.
мм, сравнение строки с единицей. восхитительно.
 
если его нет, то аргумент только 1 (только ник, без причины, и то надо проверить, что он есть). то есть надо писать не if (args[1] == null) а if (args.length < 2) и этого будет достаточно

мм, сравнение строки с единицей. восхитительно.
Боже, какой Вы печальный ._.
Я сделал проверки, чего Вы еще хотите? О_о
Ну понятное дело, что длину массива я имел в виду, а не строку, где ваша интуиция?
 
Я сделал проверки, чего Вы еще хотите? О_о
проверка, что args[1] == null некорректна, я хочу увидеть проверку, что args.length < 2 и тогда выводит, что нехватает причины, в коде, а не на словах, что "если больше, то все нормально"
 
проверка, что args[1] == null некорректна, я хочу увидеть проверку, что args.length < 2 и тогда выводит, что нехватает причины, в коде, а не на словах, что "если больше, то все нормально"
Что Вы прицепились к человеку? Тут людям помогают, давая примерный код, а не готовый рабочий вариант.
 
Что Вы прицепились к человеку? Тут людям помогают, давая примерный код, а не готовый рабочий вариант.
у топикстартера "не работает оператор IF". из всех возможных причин, я вижу только то, что он получает в условии ошибку выхода за пределы массива. а человек, дающий примерный код эту ошибку повторяет. и где помощь тогда?
 
у топикстартера "не работает оператор IF". из всех возможных причин, я вижу только то, что он получает в условии ошибку выхода за пределы массива. а человек, дающий примерный код эту ошибку повторяет. и где помощь тогда?
Еще до поста с "примерным кодом" написали о том, что проверка "args[1] == null" не корректна, если человек собирается писать плагины, то он должен понимать основы языка. Следовательно заменить проверку из "примерного кода" на правильную, которую написали чуть выше не составит труда.

Хотя перечитал посты, понял из-за чего весь сыр-бор пошел, smilesdc не прав, ошибка, конечно, будет :)
 

Поделиться этой страницей

Назад
Верх