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

Помогите Функция не работает. Где оступился?

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

Статус темы:
Закрыта.
  1. Автор темы
    Bars

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

    Баллы:
    173
    Она возвращает список локаций из конфига:
    Код:
    spawnpoints:
    - 1000,60,-501
    - 1000,60,-602
    - 1000,60,-703
    - 1000,60,-804
    - 1000,60,-905
    Сама функция:
    Код:
        public static List<Location> getSpawnPoints() {
            List<String> spawnpoints = new ArrayList<String>();
            List<Location> spList = new ArrayList<Location>();
            spawnpoints = plugin.getConfig().getStringList("spawnpoints");
            for (String spc : spawnpoints) {
                double x = 0, y = 0, z = 0;
                String[] l = spc.split(",");
                try {
                    x = Double.valueOf(l[0]);
                    y = Double.valueOf(l[1]);
                    z = Double.valueOf(l[2]);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                spList.add(new Location(Bukkit.getWorld("world"), x, y, z));
            }
            return spList;
        }
    UPD: Исправленный вариант :):
    Код:
        public static List<Location> getSpawnPoints() {
            List<String> spawnpoints = new ArrayList<String>();
            List<Location> spList = new ArrayList<Location>();
            spawnpoints = plugin.getConfig().getStringList("spawnpoints");
            for (String spc : spawnpoints) {
                double x = 0, y = 0, z = 0;
                String[] l = spc.split(",");
                try {
                    x = Double.parseDouble(l[0]) - 0.5;
                    y = Double.parseDouble(l[1]);
                    z = Double.parseDouble(l[2]) + 0.5;
                    spList.add(new Location(Bukkit.getWorld("world"), x, y, z));
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            return spList;
        }
    
     
    Последнее редактирование: 7 дек 2013
  2. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Какая ошибка?
    Попробуй parseDouble() вместо valueOf()
     
    МиднайтЖелаетВамДобра и Bars нравится это.
  3. Автор темы
    Bars

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

    Баллы:
    173
    NullPointerException

    Проверял весь код, ошибки только при обращении к getSpawnPoints(). Без неё ошибки нет.
     
  4. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    String[] l = spc.split(",");
    Оно скорее всего не пашет.
     
  5. skynetxxx

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

    Баллы:
    123
    На какую именно строку срабатывает NullPointerException?
     
    caNek и Bars нравится это.
  6. Автор темы
    Bars

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

    Баллы:
    173
    Если верить консоли, что ошибка на 64-й строке, то скорее всего что-то тут:
    А на 26-й её вызов:

    Сейчас гляну
     
    slavik123123123 нравится это.
  7. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Если ошибка там где ты говоришь то тогда plugin у тебя null, потому что всё остальное в этой строке null вернуть не может.
    getStringList() не моет вернуть null.
     
    Bars нравится это.
  8. skynetxxx

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

    Баллы:
    123
    Убедись, что с конфигом всё в порядке, а лучше всего проверяй getStringList на null, добавив вывод в SendMessage и log.warning.
    Кстати, вызов метода spList.add надо занести в Try, иначе у тебя будет список нулевых локаций, что неправильно логически.
     
    Bars нравится это.
  9. Автор темы
    Bars

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

    Баллы:
    173
    Нет, не оно.
     
  10. skynetxxx

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

    Баллы:
    123
    Точно, спутал.
    Где у тебя инициализируется plugin?
    Похоже, что в конструкторе не передаётся плагин, в результате чего получаем null.
     
    Bars нравится это.
  11. Автор темы
    Bars

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

    Баллы:
    173
    Да, так и есть. Всем большущее спасибо!
    И с наступающим :)
    Да, появился ещё один маленький вопрос: что такое setPitch() и setYaw()?
    Как при помощи него/них развернуть игрока лицом на север?
     
    skynetxxx нравится это.
  12. ql_Nik_lp

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

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    [​IMG]


    В движке майнкрафта Roll отсутствует ввиду невозможности вращения объектов по этой оси.
    Как на север можно легко узнать просто развернувшись на север, и использовав getPitch (Узнать сторону света можно в дебаге F3)
     
    DavidShabaev, skynetxxx и Bars нравится это.
  13. Автор темы
    Bars

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

    Баллы:
    173
    Спасибо, я уже разобрался :)
    Location l = getSpawnPoints().get(point);
    l.setYaw(180);
    p.teleport(l);
     
Статус темы:
Закрыта.

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