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

Статус
Закрыто для дальнейших ответов.

IlyaHaker

Активный участник
Пользователь
Баллы
76
Нужно запретить участникам региона ломать все блоки, но разрешить ломать некоторые. Как это можно сделать?
Запретить, понятно, установить нужно флагу BUILD значение deny
 
Проверять тип ломаемого блока. Если отсутствует в белом списке - отменять событие
 
Проверять тип ломаемого блока. Если отсутствует в белом списке - отменять событие
проблема не в этом, во-первых, нужно еще запретить строить в этом регионе, а, во-вторых, не все регионы будут обладать таким свойством
Вопрос в том, можно ли с помощью worldguard api дать игроку возможность ломать блок, если флаг это запрещает
Видел там метод canBuild(LocalPlayer), может, есть и setBuild какой-нибудь, хз
 
проблема не в этом, во-первых, нужно еще запретить строить в этом регионе, а, во-вторых, не все регионы будут обладать таким свойством
Вопрос в том, можно ли с помощью worldguard api дать игроку возможность ломать блок, если флаг это запрещает
Видел там метод canBuild(LocalPlayer), может, есть и setBuild какой-нибудь, хз
Сделать свой флаг вроде break-listed. Создать сет материалов, разрешенных к поломке, и отменять разрушение блока, если он есть в сете. Ну, либо же хранить этот список материалов в самом флаге.
Либо при разрушении блока проверять, отменено ли событие. Если отменено - проверить, разрушаем ли материал блока(опять же, заранее создать сет блоков). Если разрушаем - проверять регионы, в которых был разрушен этот блок, и наконец, если в нем был флаг build со значением deny - возобновлять событие через Event#setCancelled(false)
 
Сделать свой флаг вроде break-listed. Создать сет материалов, разрешенных к поломке, и отменять разрушение блока, если он есть в сете. Ну, либо же хранить этот список материалов в самом флаге.
Либо при разрушении блока проверять, отменено ли событие. Если отменено - проверить, разрушаем ли материал блока(опять же, заранее создать сет блоков). Если разрушаем - проверять регионы, в которых был разрушен этот блок, и наконец, если в нем был флаг build со значением deny - возобновлять событие через Event#setCancelled(false)
Спасибо, вот буквально только что подумал создать свой флаг.
Второй вариант первым пришел в голову, но он не подошел - блок ломался, а в чат выводилось сообщение, мол, нельзя ломать блоки тут
 
Оказалось, можно просто прослушать событие из worldguard "BreakBlockEvent" и, если попался нужный блок, то сделать:
e.setResult(Result.ALLOW);
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх