Помогите Разрешить игроку ставить блок в чужом привате

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

Kurumi

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Kurumi
Добрый день.
Как можно разрешить игроку с пермишеном ставить какой-то блок в чужом привате?
 
Как я понимаю, приваты - WorldGuard.

Код:
   @EventHandler(priority = EventPriority.LOWEST)
   public void on(BreakBlockEvent e) {
       if(условие) {
           e.setResult(Result.ALLOW);
           или
           e.setCanceled(false);
           точно не помню
        }
   }
 
Последнее редактирование:
Лол
Я и спрашиваю в соответствующем разделе)

Я как бы выполнил свою задачу, но мне кажется, это жутко костыльно.
Просто слушаю break event, проверяю регион и пермишен, после чего отменяю event, ставлю блок через и удаляю его из рук игрока
 
Лол
Я и спрашиваю в соответствующем разделе)

Я как бы выполнил свою задачу, но мне кажется, это жутко костыльно.
Просто слушаю break event, проверяю регион и пермишен, после чего отменяю event, ставлю блок через и удаляю его из рук игрока
У wg есть свои ивенты не?
 
Лол
Я и спрашиваю в соответствующем разделе)

Я как бы выполнил свою задачу, но мне кажется, это жутко костыльно.
Просто слушаю break event, проверяю регион и пермишен, после чего отменяю event, ставлю блок через и удаляю его из рук игрока
Провтыкал с разделом, прости.
В общем, у ивентов можно выставить приоритет, сделай onBlockPlaceEvent, который будет выполнятся после проверки WorldGuard.
Проверь все необходимые условия и если это так, то event.setCanceled(false);
Должно помочь.
 
Лол
Я и спрашиваю в соответствующем разделе)

Я как бы выполнил свою задачу, но мне кажется, это жутко костыльно.
Просто слушаю break event, проверяю регион и пермишен, после чего отменяю event, ставлю блок через и удаляю его из рук игрока
Дак можно иначе же.
Делаешь максимальный приоритет ивента.
Проверяешь, кто поставил блок и где. Если это было в привате и ивент был отменен, убираешь отмену ивента и все.
 
У wg есть свои ивенты не?
Код:
    @EventHandler(priority = EventPriority.LOWEST)
    public void on(BreakBlockEvent e) {
        TODO e.setResult(Result.ALLOW);
 
3 человека в 1 время написали один и тот же ответ, ПОНИМАЮ.
Провтыкал с разделом, прости.
В общем, у ивентов можно выставить приоритет, сделай onBlockPlaceEvent, который будет выполнятся после проверки WorldGuard.
Проверь все необходимые условия и если это так, то event.setCanceled(false);
Должно помочь.
Дак можно иначе же.
Делаешь максимальный приоритет ивента.
Проверяешь, кто поставил блок и где. Если это было в привате и ивент был отменен, убираешь отмену ивента и все.
У wg есть свои ивенты не?
Код:
    @EventHandler(priority = EventPriority.LOWEST)
    public void on(BreakBlockEvent e) {
        TODO e.setResult(Result.ALLOW);
 
Не робит.
делаю event.setCancelled(false) и ничего.
Метода event.setResult у меня нет, скорее всего потому, что пишу под 1.11.2
 
Поставил приоритет MONITOR и заработало.
Но мне отсылается это сообщение от wgupload_2019-9-18_22-51-41.png
Как можно поправить?
 
Поставил приоритет MONITOR и заработало.
Но мне отсылается это сообщение от wgПосмотреть вложение 54864
Как можно поправить?
Тебе же скинул ивент от wg и не только я. Капец ты тормоз. И приоритет уже правильный.
Код:
@EventHandler(priority = EventPriority.LOWEST)
    public void on(BreakBlockEvent e) {
        TODO e.setResult(Result.ALLOW);
 
Тебе же скинул ивент от wg и не только я. Капец ты тормоз. И приоритет уже правильный.
Код:
@EventHandler(priority = EventPriority.LOWEST)
    public void on(BreakBlockEvent e) {
        TODO e.setResult(Result.ALLOW);
Точно, тупанул, сорян =(

Можно ли как-то получить в этом ивенте игрока? Не вижу метода
 
Последнее редактирование:
Хм.. Как-то странно..

Код:
Block block = cause.getFirstBlock();
Location location = block.getLocation();
Достаю локацию блока, а он мне null кидает. В чем прикол?
Код:
List<Block> blocks = event.getBlocks();
if(blocks == null || blocks.isEmpty()) return;
for(Block block : event.getBlocks()) {
    //todo
}
или сравнивать через Material (не уверен что будет работать)
Код:
if(event.getEffectiveMaterial() == Material.asd) {
    //todo
}
 
Последнее редактирование:
Код:
List<Block> blocks = event.getBlocks();
if(blocks == null || blocks.isEmpty()) return;
for(Block block : event.getBlocks()) {
    //todo
}
или сравнивать через Material (не уверен что будет работать)
Код:
if(event.getEffectiveMaterial() == Material.asd) {
    //todo
}
Отлично! Все работает, но...

Совершенно случайно я решил поставить динамит, на него уже это не сработало.. upload_2019-9-18_23-50-48.png
Как можно разрешить его установку?
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх