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

Помогите Проблемы с рандомом

Тема в разделе "Разработка плагинов для новичков", создана пользователем GodlikE, 15 июл 2014.

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

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

    Баллы:
    103
    Имя в Minecraft:
    GodlikE
    Приветствую вас. У меня вот такая проблема: когда я пытаюсь выбрать рандомного игрока из всех игроков на сервере, консоль сервера выдаёт ошибку.
    Скажите, в чем может быть причина? Может ли ошибка происходить из-за недостатка человек на сервере (то есть когда там никого нет)?
    P.S. Рандом выбирал таким образом:
    Player p;
    Random r = new Random();
    int ch = r.nextInt(Bukkit.getOnlinePlayers().lenght);
    p = Bukkit.getOnlinePlayers()[ch];
     
  2. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Когда там никогда никого нет рандом будет давать 0 --> NPE
     
  3. Автор темы
    GodlikE

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

    Баллы:
    103
    Имя в Minecraft:
    GodlikE
    А с самим выбором рандомного игрока (в моём примере) все правильно?
     
  4. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Да, если на сервере есть игроки.
     
  5. Автор темы
    GodlikE

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

    Баллы:
    103
    Имя в Minecraft:
    GodlikE
    Я сейчас делаю свой GhostCraft и там мне нужно рандомом выбрать одного призрака, а всех остальных переместить на Спаун игроков и дать экипировку, отличную от экипировки призрака. Он выбирается через 30 секунд после начала работы плагина. Но когда я включаю плагин и захожу на сервер, где-то через 30 секунд консоль сервера начинает заваливаться ошибками. Я подозревают, что он не может выбрать рандом. А может быть такое, что он выбирает призрака, но не может выдать экипировку остальным игрокам, потому что их нет?
     
  6. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Ничего не понял. Посмотрите ошибку, найдите строчку с проблемой, посмотрите в отладчике.
     
  7. Автор темы
    GodlikE

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

    Баллы:
    103
    Имя в Minecraft:
    GodlikE
    [Глупый вопрос] Что такое отладчик?)) [/Глупый вопрос]
     
  8. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Мой туториал в одноименном разделе.
     
  9. Автор темы
    GodlikE

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

    Баллы:
    103
    Имя в Minecraft:
    GodlikE
    Спасибо
     
  10. makssof

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

    Баллы:
    103
    Нет, не совсем верно.
    Допустим 5 человек на сервере. Допустим рандомно выпало число 5. Никому ещё непонятно к чему я клоню? Никому ещё непонятно почему будет ArrayIndexOutOfBoundsException?
    Потому что надо ch-1.
    Индексы начинаются с нуля.
     
  11. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Так ведь в документации сказано:
    int java.util.Random.nextInt(int bound)
    Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive)
     
    Последнее редактирование: 15 июл 2014
  12. makssof

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

    Баллы:
    103
    А.. Признаю ошибку, думал до n включительно. :)
     
  13. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Тоже упустил это из виду )) Надо бы проверить, где я его использую =)
     
  14. DigitalMisha

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

    Баллы:
    58
    проверь как ты определяешь длину массива. Не lenght, а length
     
  15. makssof

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

    Баллы:
    103
    Он наверное не копировал, а писал от руки здесь.
     
  16. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Кому вообще нужен Ctrl+Space. Только вручную писать, по харду
     
  17. makssof

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

    Баллы:
    103
    Да не, я имел в виду что он писал скорее всего по памяти прямо на рубаките, а не в IDE.
     
  18. DigitalMisha

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

    Баллы:
    58
    Но проверить все-таки стоит. Хотя, если он использует нормальное IDE, то врядле.
     
  19. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    А, ну такое бывает :)
    Сам когда куда то код хочу быстро прислать, без эклипса с первого раза не напишу:D
     
  20. makssof

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

    Баллы:
    103
    Такая же история. :)
     

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