1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем ANTI_GREEFER, 18 апр 2013.

  1. Автор темы
    ANTI_GREEFER

    ANTI_GREEFER Активный участник Пользователь

    Баллы:
    88
    [​IMG]
    Не работает оператор IF.
    Подскажите решение или скажите где писать setCanceled(true) в командах.
     
  2. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Нужно написать в нужном месте return true
     
  3. Автор темы
    ANTI_GREEFER

    ANTI_GREEFER Активный участник Пользователь

    Баллы:
    88
    Понял. Оно возвращяет серверу bool значение, что команда завершилась? Ясно.
     
  4. limito

    limito Старожил Пользователь

    Баллы:
    103
    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, то сервер ничего не сделает.
     
    VaNnOrus, Mik1313 и Den_Abr нравится это.
  5. smilesdc

    smilesdc Няша Модератор

    Баллы:
    153
    Имя в Minecraft:
    smilesdc
    Код:
    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;
    }
    Как-то так :)
     
    slavik123123123 нравится это.
  6. Code

    Code Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo
    что значит args[1] == null??? если нет причины, то этот аргумент не нулл, а его вообще нет и будет ошибка. так что он либо причина, либо его просто нет.
     
    HoShiMin нравится это.
  7. smilesdc

    smilesdc Няша Модератор

    Баллы:
    153
    Имя в Minecraft:
    smilesdc
    Если его нет, значит null. Ошибки не будет, так как return true;.
    Если args[1] > 1, тогда все нормально.
     
    DavidShabaev нравится это.
  8. Code

    Code Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo
    если его нет, то аргумент только 1 (только ник, без причины, и то надо проверить, что он есть). то есть надо писать не if (args[1] == null) а if (args.length < 2) и этого будет достаточно
    мм, сравнение строки с единицей. восхитительно.
     
  9. smilesdc

    smilesdc Няша Модератор

    Баллы:
    153
    Имя в Minecraft:
    smilesdc
    Боже, какой Вы печальный ._.
    Я сделал проверки, чего Вы еще хотите? О_о
    Ну понятное дело, что длину массива я имел в виду, а не строку, где ваша интуиция?
     
    MineMan910 и VaNnOrus нравится это.
  10. VaNnOrus

    VaNnOrus Старожил Пользователь

    Баллы:
    123
    Когда же новички начнут читать документацию...
    Ответы на две предыдущие темы лежат на вики ведра -_-
     
  11. Code

    Code Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo
    проверка, что args[1] == null некорректна, я хочу увидеть проверку, что args.length < 2 и тогда выводит, что нехватает причины, в коде, а не на словах, что "если больше, то все нормально"
     
  12. VaNnOrus

    VaNnOrus Старожил Пользователь

    Баллы:
    123
    Что Вы прицепились к человеку? Тут людям помогают, давая примерный код, а не готовый рабочий вариант.
     
    Сникерсни нравится это.
  13. Code

    Code Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo
    у топикстартера "не работает оператор IF". из всех возможных причин, я вижу только то, что он получает в условии ошибку выхода за пределы массива. а человек, дающий примерный код эту ошибку повторяет. и где помощь тогда?
     
  14. VaNnOrus

    VaNnOrus Старожил Пользователь

    Баллы:
    123
    Еще до поста с "примерным кодом" написали о том, что проверка "args[1] == null" не корректна, если человек собирается писать плагины, то он должен понимать основы языка. Следовательно заменить проверку из "примерного кода" на правильную, которую написали чуть выше не составит труда.

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

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