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

Помогите Возвращает пустой set. WorldGuardAPI

Тема в разделе "Разработка плагинов для новичков", создана пользователем reZero, 10 фев 2019.

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

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

    Баллы:
    76
    Всем привет. Мне нужно получать овнера региона.. По какой-то причине, manager.getRegion(rgname).getOwners().getPlayers() выкидывает мне npe, хотя в регионе я записан как овнер, но если я получаю не getPlayers(), а getUniqueIds() все проходит нормально.. Мб я упустил какой-то момент самого апи?
    Также, есть еще вопрос.. При проверке на наличие овнеров или мемберов в регионе, возвращает false (метод getRegion(rgname).hasMembersOrOwners()), хотя в регионе я есть..
    PHP:
    for(String playerName manager.getRegion(rg).getOwners().getPlayers())
    {
         
    //todo..
    }
     
  2. Mr Hosting
  3. Автор темы
    reZero

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

    Баллы:
    76
    Тема еще актуальна
     
  4. MurlikMurlik

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

    Баллы:
    76
    getUniqueIds()
    Будет возвращать то что тебе и нужно. Ибо когда игрок создает регион или добавляется в него, он добавляется не как ник а как UUID. И на самом деле, овнером может быть одновременно UUID и ник. Аналогично с мемберами. Тебе нужно по UUID узнать ник игрока. Это можно сделать по апи Essentials или через баккитовское апи. Лучше делать через Essentials ибо там все игроки уже записаны, есть гарантия того что по UUID ты найдешь правильный ник. (исключения будет если игрока никогда не было на сервере) А если брать баккитовский, то нужно еще учесть оффлайн игрока. А тут уже могут быть лаги, ибо он иногда не правильно получает ник и подключается к моджангу в основном потоке.
     
  5. Автор темы
    reZero

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

    Баллы:
    76
    А смысл тогда от сета getPlayers() ?
     
  6. MurlikMurlik

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

    Баллы:
    76
    Думаю все просто. Для обратной совместимости версий сервера, где еще нет UUID, то есть ниже 1.7. Например версия 1.5.2 или 1.6.4, где все было по никам.
    Но даже так, через апи можно добавлять ники, это будет работать. Правда, через /rg info они всегда будут с нижним регистром, что может не удобно.
     
  7. MurlikMurlik

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

    Баллы:
    76
    Чекай наличие овнера/мембера игрока через коллекцию которую ты же получаешь.
    Например
    Set<UUID> uuid = region.getOwners().getUniqueIds();
    Set<String> players = region.getOwners().getPlayers();
    if (uuid.contains(player.getUniqueId()) || players.contains(player.getName())) {
    //Делай что нибудь
    }
    (Мб с методами наврал, но примерно так)
     
  8. Автор темы
    reZero

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

    Баллы:
    76
    spasibo
     
Статус темы:
Закрыта.

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