Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов 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. Хостинг MineCraft
    <
  3. serega6531

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Баллы:
    103
    Skype:
    makssofez
    Нет, не совсем верно.
    Допустим 5 человек на сервере. Допустим рандомно выпало число 5. Никому ещё непонятно к чему я клоню? Никому ещё непонятно почему будет ArrayIndexOutOfBoundsException?
    Потому что надо ch-1.
    Индексы начинаются с нуля.
     
  12. 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
  13. makssof

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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