Помогите Проверка регионов у игрока

  • Автор темы Автор темы reZero
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

reZero

Активный участник
Пользователь
Баллы
76
Как можно проверить, есть ли у игрока хотя бы один регион и состоит ли он в нем как овнер?
 
Последнее редактирование:
Я сделал метод типа boolean, который вернет true если игрок находится в овнерах или мембера хотя бы в одном регионе, и сделал вывод сообщения, если метод вернул true, тогда будет зеленая надпись "Есть", если метод вернул false, тогда будет красная надпись "Нет", но есть проблема, этот метод всегда возвращает true, даже если у меня нету ни одного региона. В чем ошибка?
PHP:
protected static WorldGuardPlugin wg = (WorldGuardPlugin) Bukkit.getPluginManager().getPlugin("WorldGuard");
 public static boolean hasRg(Player player)
    {
        LocalPlayer localplayer = wg.wrapPlayer(player);
        ApplicableRegionSet set = WGBukkit.getRegionManager(player.getWorld()).getApplicableRegions(player.getLocation());
        RegionManager manager = wg.getRegionContainer().get(player.getWorld());
        if(set.isMemberOfAll(localplayer) || set.isOwnerOfAll(localplayer))
        {
            return true;
        }
        return false;
    }
UPD: все работает в каком-то одном регионе, в котором я нахожусь. Это из-за того что в set я указал player.getLocation(). Мне нужно так, чтобы это работало во всем мире? а не только где находится игрок. Подскажите плиз
 
Последнее редактирование:
Я сделал метод типа boolean, который вернет true если игрок находится в овнерах или мембера хотя бы в одном регионе, и сделал вывод сообщения, если метод вернул true, тогда будет зеленая надпись "Есть", если метод вернул false, тогда будет красная надпись "Нет", но есть проблема, этот метод всегда возвращает true, даже если у меня нету ни одного региона. В чем ошибка?
PHP:
protected static WorldGuardPlugin wg = (WorldGuardPlugin) Bukkit.getPluginManager().getPlugin("WorldGuard");
 public static boolean hasRg(Player player)
    {
        LocalPlayer localplayer = wg.wrapPlayer(player);
        ApplicableRegionSet set = WGBukkit.getRegionManager(player.getWorld()).getApplicableRegions(player.getLocation());
        RegionManager manager = wg.getRegionContainer().get(player.getWorld());
        if(set.isMemberOfAll(localplayer) || set.isOwnerOfAll(localplayer))
        {
            return true;
        }
        return false;
    }
UPD: все работает в каком-то одном регионе, в котором я нахожусь. Это из-за того что в set я указал player.getLocation(). Мне нужно так, чтобы это работало во всем мире? а не только где находится игрок. Подскажите плиз
1506711815148293200.png
 
Код:
protected static WorldGuardPlugin wg = (WorldGuardPlugin) Bukkit.getPluginManager().getPlugin("WorldGuard");
Код:
    public static void test(Player player, World world) throws CommandException {
        RegionManager manager = checkRegionManager(wg, world);
        Map<String, ProtectedRegion> regions = manager.getRegions();
        for (String id : regions.keySet()) {
            ProtectedRegion region = regions.get(id);
            DefaultDomain owners = region.getOwners();
            System.out.println("uuid " + owners.contains(player.getUniqueId()));
            System.out.println("name " + owners.contains(player.getName()));
        }
    }
Код:
    protected static RegionManager checkRegionManager(WorldGuardPlugin plugin, World world) throws CommandException {
        if (!plugin.getGlobalStateManager().get(world).useRegions) {
            throw new CommandException("Region support is disabled in the target world. "
                    + "It can be enabled per-world in WorldGuard's configuration files. "
                    + "However, you may need to restart your server afterwards.");
        }

        RegionManager manager = plugin.getRegionContainer().get(world);
        if (manager == null) {
            throw new CommandException("Region data failed to load for this world. "
                    + "Please ask a server administrator to read the logs to identify the reason.");
        }
        return manager;
    }
 
Код:
protected static WorldGuardPlugin wg = (WorldGuardPlugin) Bukkit.getPluginManager().getPlugin("WorldGuard");
Код:
    public static void test(Player player, World world) throws CommandException {
        RegionManager manager = checkRegionManager(wg, world);
        Map<String, ProtectedRegion> regions = manager.getRegions();
        for (String id : regions.keySet()) {
            ProtectedRegion region = regions.get(id);
            DefaultDomain owners = region.getOwners();
            System.out.println("uuid " + owners.contains(player.getUniqueId()));
            System.out.println("name " + owners.contains(player.getName()));
        }
    }
Код:
    protected static RegionManager checkRegionManager(WorldGuardPlugin plugin, World world) throws CommandException {
        if (!plugin.getGlobalStateManager().get(world).useRegions) {
            throw new CommandException("Region support is disabled in the target world. "
                    + "It can be enabled per-world in WorldGuard's configuration files. "
                    + "However, you may need to restart your server afterwards.");
        }

        RegionManager manager = plugin.getRegionContainer().get(world);
        if (manager == null) {
            throw new CommandException("Region data failed to load for this world. "
                    + "Please ask a server administrator to read the logs to identify the reason.");
        }
        return manager;
    }
Спасибо большое! Топовый чел
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх