Помогите WorldGuard. Получение списка участников рг

  • Автор темы Автор темы Babar
  • Дата начала Дата начала

Babar

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
Babar
Всем привет! Пытаюсь получить список участников в регионе, но выдается пустой список.
Подскажите, что не так:
Код:
WorldGuardPlugin wg = (WorldGuardPlugin) Bukkit.getPluginManager().getPlugin("WorldGuard");
for (World w : Bukkit.getWorlds())
{
  RegionManager m = wg.getRegionManager(w);
  for (ProtectedRegion rg : m.getRegions().values())
  {
     DefaultDomain pOwner = rg.getOwners(); // Список заполнен
     DefaultDomain pMember = rg.getMembers(); // Список пустой
  }
}

В регионе точно есть участники. При этом список владельцев заполнен.
Версия 1.7.10
 
Получение участников / владельцев написано правильно в коде. А как ты проверяешь на самом деле - неизвестно. Возможно не тот регион или что то другое.
 
Проверяю простым кодом:
Код:
// Так работает
if (pOwner.getPlayers().size() > 0)
   for(String pName : pOwner.getPlayers())

// Так не работает
if (pMember.getPlayers().size() > 0)
   for(String pName : pMember.getPlayers())

Я прогнал по всем регионам на сервере и везде pMember.getPlayers().size() вернула 0.
 
Проверяю простым кодом:
Код:
// Так работает
if (pOwner.getPlayers().size() > 0)
   for(String pName : pOwner.getPlayers())

// Так не работает
if (pMember.getPlayers().size() > 0)
   for(String pName : pMember.getPlayers())

Я прогнал по всем регионам на сервере и везде pMember.getPlayers().size() вернула 0.
Похоже на баг. Нужно меньше динозаврить...
 
Проверяю простым кодом:
Код:
// Так работает
if (pOwner.getPlayers().size() > 0)
   for(String pName : pOwner.getPlayers())

// Так не работает
if (pMember.getPlayers().size() > 0)
   for(String pName : pMember.getPlayers())

Я прогнал по всем регионам на сервере и везде pMember.getPlayers().size() вернула 0.
Попробуй так:
Код:
for (UUID uuid : pMember.getUniqueIds()) {
    // ...
}
В PlayerDomain хранятся игроки в двух режимах - uuid и чисто ники. Обычно это можно отличить в /rg info, когда UUID будут показываться как кешированные никнеймы, а чисто ники будут показываться малыми буквами в формате name:<nick>. Такого формата можно добавлять через флаг -n <nick> в команде. Потому тебе стоит проверять оба варианта, и в главную очередь по UUID.
 
Попробуй так:
Код:
for (UUID uuid : pMember.getUniqueIds()) {
    // ...
}
В PlayerDomain хранятся игроки в двух режимах - uuid и чисто ники. Обычно это можно отличить в /rg info, когда UUID будут показываться как кешированные никнеймы, а чисто ники будут показываться малыми буквами в формате name:<nick>. Такого формата можно добавлять через флаг -n <nick> в команде. Потому тебе стоит проверять оба варианта, и в главную очередь по UUID.
Спасибо! Так работает 🙂
Код:
for (UUID uuid : pMember.getUniqueIds())
   OfflinePlayer p = Bukkit.getOfflinePlayer(uuid);
 
Назад
Верх