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

Помогите [Решено] Проверка прав игрока на разрушение блоков WG 7.0.1 (WorldEdit)

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

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

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

    Баллы:
    61
    Имя в Minecraft:
    sidey383
    В принципе проблема ясна, но казалось бы, её уже решили много раз и это уже не актуально, а нет.
    Вот, что я нашёл в документации.
    https://worldguard.enginehub.org/en/latest/developer/regions/protection-query/
    Код:
    LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player);
    Location loc = new Location(world, 10, 64, 100);
    RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer();
    RegionQuery query = container.createQuery();
    
    if (!query.testState(loc, localPlayer, Flags.BUILD)) {
        // Can't build
    }
    После этого я подправил это все под себя, но eclipse (как и сервер) выдали мне ошибки.
    Часть я поправил. Получилось что-то в этом духе.
    Код:
    org.bukkit.Location loc = e.getBlock().getLocation();
                            LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(e.getPlayer());
                            RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer();
                            RegionQuery query = container.createQuery();
                            StateFlag[] flag = new StateFlag[1];
                            flag[0] = Flags.BUILD;
                            if (!query.testState(loc, localPlayer,flag))return;
    Массив создавался из-за аргумента StateFlag... Который по каким-то непонятным мне причинам не хотел принимать Flags.BUILD. Далее loc. В методе она нужна в виде com.sk89q.worldedit.util.Location. Может кто знает как такую получить или как ещё можно проверить права игрока на разрушение блока.
     
  2. alexandrage

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

    Баллы:
    173
    Код:
        public boolean isFlagAllows(Player player, Location location, StateFlag flag) {
            return RG.testState(BukkitAdapter.adapt(location), WG.wrapPlayer(player), flag);
        }
     
Статус темы:
Закрыта.

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