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

Помогите [Решено] Как разрешить ломать определенный блок в регионе

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

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

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

    Баллы:
    76
    Нужно запретить участникам региона ломать все блоки, но разрешить ломать некоторые. Как это можно сделать?
    Запретить, понятно, установить нужно флагу BUILD значение deny
     
  2. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Проверять тип ломаемого блока. Если отсутствует в белом списке - отменять событие
     
  3. Автор темы
    IlyaHaker

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

    Баллы:
    76
    проблема не в этом, во-первых, нужно еще запретить строить в этом регионе, а, во-вторых, не все регионы будут обладать таким свойством
    Вопрос в том, можно ли с помощью worldguard api дать игроку возможность ломать блок, если флаг это запрещает
    Видел там метод canBuild(LocalPlayer), может, есть и setBuild какой-нибудь, хз
     
  4. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Сделать свой флаг вроде break-listed. Создать сет материалов, разрешенных к поломке, и отменять разрушение блока, если он есть в сете. Ну, либо же хранить этот список материалов в самом флаге.
    Либо при разрушении блока проверять, отменено ли событие. Если отменено - проверить, разрушаем ли материал блока(опять же, заранее создать сет блоков). Если разрушаем - проверять регионы, в которых был разрушен этот блок, и наконец, если в нем был флаг build со значением deny - возобновлять событие через Event#setCancelled(false)
     
  5. Автор темы
    IlyaHaker

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

    Баллы:
    76
    Спасибо, вот буквально только что подумал создать свой флаг.
    Второй вариант первым пришел в голову, но он не подошел - блок ломался, а в чат выводилось сообщение, мол, нельзя ломать блоки тут
     
  6. Автор темы
    IlyaHaker

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

    Баллы:
    76
    Оказалось, можно просто прослушать событие из worldguard "BreakBlockEvent" и, если попался нужный блок, то сделать:
    e.setResult(Result.ALLOW);
     
Статус темы:
Закрыта.

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