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

  • Автор темы Автор темы 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..
}
 
Всем привет. Мне нужно получать овнера региона.. По какой-то причине, manager.getRegion(rgname).getOwners().getPlayers() выкидывает мне npe, хотя в регионе я записан как овнер, но если я получаю не getPlayers(), а getUniqueIds() все проходит нормально.. Мб я упустил какой-то момент самого апи?
Также, есть еще вопрос.. При проверке на наличие овнеров или мемберов в регионе, возвращает false (метод getRegion(rgname).hasMembersOrOwners()), хотя в регионе я есть..
PHP:
for(String playerName : manager.getRegion(rg).getOwners().getPlayers())
{
     //todo..
}
getUniqueIds()
Будет возвращать то что тебе и нужно. Ибо когда игрок создает регион или добавляется в него, он добавляется не как ник а как UUID. И на самом деле, овнером может быть одновременно UUID и ник. Аналогично с мемберами. Тебе нужно по UUID узнать ник игрока. Это можно сделать по апи Essentials или через баккитовское апи. Лучше делать через Essentials ибо там все игроки уже записаны, есть гарантия того что по UUID ты найдешь правильный ник. (исключения будет если игрока никогда не было на сервере) А если брать баккитовский, то нужно еще учесть оффлайн игрока. А тут уже могут быть лаги, ибо он иногда не правильно получает ник и подключается к моджангу в основном потоке.
 
getUniqueIds()
Будет возвращать то что тебе и нужно. Ибо когда игрок создает регион или добавляется в него, он добавляется не как ник а как UUID. И на самом деле, овнером может быть одновременно UUID и ник. Аналогично с мемберами. Тебе нужно по UUID узнать ник игрока. Это можно сделать по апи Essentials или через баккитовское апи. Лучше делать через Essentials ибо там все игроки уже записаны, есть гарантия того что по UUID ты найдешь правильный ник. (исключения будет если игрока никогда не было на сервере) А если брать баккитовский, то нужно еще учесть оффлайн игрока. А тут уже могут быть лаги, ибо он иногда не правильно получает ник и подключается к моджангу в основном потоке.
А смысл тогда от сета getPlayers() ?
 
А смысл тогда от сета getPlayers() ?
Думаю все просто. Для обратной совместимости версий сервера, где еще нет UUID, то есть ниже 1.7. Например версия 1.5.2 или 1.6.4, где все было по никам.
Но даже так, через апи можно добавлять ники, это будет работать. Правда, через /rg info они всегда будут с нижним регистром, что может не удобно.
 
Также, есть еще вопрос.. При проверке на наличие овнеров или мемберов в регионе, возвращает false (метод getRegion(rgname).hasMembersOrOwners()), хотя в регионе я есть..
Чекай наличие овнера/мембера игрока через коллекцию которую ты же получаешь.
Например
Set<UUID> uuid = region.getOwners().getUniqueIds();
Set<String> players = region.getOwners().getPlayers();
if (uuid.contains(player.getUniqueId()) || players.contains(player.getName())) {
//Делай что нибудь
}
(Мб с методами наврал, но примерно так)
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх