Помогите Кастомный wg флаг

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

Kurumi

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Kurumi
Мне нужно сделать один кастомный флаг для вг, который будет разрешать/запрещать работу поршней.
Вроде бы есть такой флаг в вг, но он, почему-то, не фурычит.

Я почитал вики wg, там рассказывалось, что нужно создавать и подгружать свои флаги до включения сервера, в методе onLoad, а реализовывать их нужно использую handler от wg. Я посмотрел пример реализации некоторых флагов и до сих пор не въехал, как заставить мой флаг разрешать/запрещать поршням работать... Помогите, пожалуйста
 
В ивенте wg
@EventHandler(priority = EventPriority.LOWEST)
event.setResult(Result.ALLOW);
У меня есть вот это чудо
Код:
 @EventHandler(priority = EventPriority.LOWEST)
    public void onPiston(UseBlockEvent event) {
        for(Block block : event.getBlocks()) {
            if(getRegion(block.getLocation()) != null) {
                ProtectedRegion region = getRegion(block.getLocation());
                if(region.getFlag(Main.getPistonExtendFlag()) == null && !region.getFlag(Main.getPistonExtendFlag()).toString().equals("DENY")) {
                    event.setResult(Event.Result.ALLOW);
                } else {
                    event.setResult(Event.Result.DENY);
                }
            }
        }
    }

трабл в том, что я не могу туда даже ничего поставить, если этот флаг там deny. То есть, мне нужно проверять, что с блоками взаимодействует ПОРШЕНЬ, а как это сделать я не знаю. event.getCause().getFirstBlock() - возвращает NPE. Как я могу проверить, что блок толкает поршень?
 
Хелпаните плез, срочняком надо докодить =(
 
Все что мне нужно - запретить действие поршня если мой флаг deny и разрешить, если он allow. Но, почему-то, ивент вообще не отменяется, хотя все проверки проходит...
Код:
@EventHandler(priority = EventPriority.LOWEST)
public void onPiston(UseBlockEvent event) {
    if (event.getOriginalEvent().getEventName().equals("BlockPistonExtendEvent")) {
        System.out.println("call event");
        for (Block block : event.getBlocks()) {
            System.out.println("parsing blocks...");
            if(getRegion(block.getLocation()) != null && getRegion(block.getLocation()).getFlag(Main.getPistonExtendFlag()).toString().equals("ALLOW")) {
                System.out.println("flag allow");
                event.setResult(Event.Result.ALLOW);
            } else {
                System.out.println("flag deny");
                event.setResult(Event.Result.DENY);
            }
        }
    }
}
 
А ивент то точно вызывается на поршнях? Может тебе нужен обычный из ведра ивент.
Да и на запрет поршня в регионе и так есть уже флаг. К чему велик?
 
А ивент то точно вызывается на поршнях? Может тебе нужен обычный из ведра ивент.
Да и на запрет поршня в регионе и так есть уже флаг. К чему велик?
Я сделал небольшой костыль. В бакитовском ивенте block piston extend я вызываю ивент вг - use block event. В use block event от вг я проверяю оригинальный ивент, если поршень - делаю свои проверки.

Обычный ивент из ведра робит, но в нем я не могу запретить поршню двигаться, если мой флаг deny

Такой флаг есть, да, но как я писал в шапке - он нерабочий
 
Я сделал небольшой костыль. В бакитовском ивенте block piston extend я вызываю ивент вг - use block event. В use block event от вг я проверяю оригинальный ивент, если поршень - делаю свои проверки.

Обычный ивент из ведра робит, но в нем я не могу запретить поршню двигаться, если мой флаг deny

Такой флаг есть, да, но как я писал в шапке - он нерабочий
Ну вот и юзай обычный ивент.
 
Ну вот и юзай обычный ивент.
Да и проверка у тебя какая то уeбaнскaя.
RegionQuery#testState(location, associable, flag)
Так я и пишу о тгм, что я не могу в ведроивенте запретить/разрешить взаимодействие с регионом. Я хз как. setCanceled(false) не робит.

Ну а проверка хз чем тебе не нравится. Все работает. Если бы раньше знал про твой регион квери, зающал бы его. На вг адекватной документации, как я считаю, нет. Приходится пользать по сурсам этого говна и искать то что надо
 
Так я и пишу о тгм, что я не могу в ведроивенте запретить/разрешить взаимодействие с регионом. Я хз как. setCanceled(false) не робит.

Ну а проверка хз чем тебе не нравится. Все работает. Если бы раньше знал про твой регион квери, зающал бы его. На вг адекватной документации, как я считаю, нет. Приходится пользать по сурсам этого говна и искать то что надо
Подсмотрел бы в том же wgex. Все там нормально проверяется и отменяется. Без твоих костылей с не правильным ивентом из wg, который еще и все сломает. Если кто то подписан на этот ивент и ожидает он него совсем другое.
 
Чекнул встроенный флаг pistons deny. Все так же работает как часы. К чему все эти костыли с велосипедом, не понятно.
 
Чекнул встроенный флаг pistons deny. Все так же работает как часы. К чему все эти костыли с велосипедом, не понятно.
1.12.2 у меня версия. Вг 6.2.2. Ставлю в регионе pistons deny - они работают. Либо я чего-то не понимаю, либо на моей версии флаг явно не работает. Тем более мне нужно, чтобы игроки могли толкать блоки из региона 1 в региона 2 и наоборот. Гриферский сервер. Но надо запретить такую возможность на том же самом спавне, для этого мне и нужен ивент
 
1.12.2 у меня версия. Вг 6.2.2. Ставлю в регионе pistons deny - они работают. Либо я чего-то не понимаю, либо на моей версии флаг явно не работает. Тем более мне нужно, чтобы игроки могли толкать блоки из региона 1 в региона 2 и наоборот. Гриферский сервер. Но надо запретить такую возможность на том же самом спавне, для этого мне и нужен ивент
Ну pistons deny как раз и нужен тебе. Все поршни в этом регионе перестанут блоки двигать.
Да и причем тут версия? Этот флаг там давно и все еще работает.
 
из __global__ толкаю поршень в регион test. Несмотря на то, что и в глобале и в тесте стоит pistonts:allow, поршень не срабатывает
А ничего что флаг на запрет, а не на разрешение? Он по умолчанию не блокирует поршни.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх