Плагин [MECH/FUN] ReActions - Что? Тогда? Иначе! [BukkitDev]

Можно ли как-то делать проверку пермишена в меню? Что бы в зависимости от пермишена менять лор и запрещать повторную покупку к примеру?

upd: что здесь не так?
Код:
  buy_fly:
    flags:
    - PERM=essentials.fly
    - MONEY=100
    actions:
    - IF_ELSE=
        if:{'%perm_flag%'=='true'}
          then:run:actions:{
            action1:{message=Возможность FLY уже приобретена!}
        } else:run:actions:{
          action1:{IF_ELSE=if:{'%money_flag%'=='100'}
            then:run:actions:{
              action1:{message=купил}
              action2:{CMD_CONSOLE=pex user %player_name% add essentials.fly}
            } else:run:actions:{ action1:{MSG=мало} }} }
    reactions:
    - MESSAGE=%ifelsedebug%
 
Последнее редактирование:
Paper при входе
Код:
[11:56:45] [Server thread/ERROR]: Could not pass event PlayerJoinEvent to ReActions v0.11.0
org.bukkit.event.EventException: null
    at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:72) ~[PaperSpigot-latest.jar:git-Paper-1385]
    at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:78) ~[PaperSpigot-latest.jar:git-Paper-1385]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[PaperSpigot-latest.jar:git-Paper-1385]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:515) [PaperSpigot-latest.jar:git-Paper-1385]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:500) [PaperSpigot-latest.jar:git-Paper-1385]
    at net.minecraft.server.v1_12_R1.PlayerList.onPlayerJoin(PlayerList.java:370) [PaperSpigot-latest.jar:git-Paper-1385]
    at net.minecraft.server.v1_12_R1.PlayerList.a(PlayerList.java:183) [PaperSpigot-latest.jar:git-Paper-1385]
    at protocolsupport.zplatform.impl.spigot.network.handler.SpigotLoginListenerPlay.joinGame(SpigotLoginListenerPlay.java:124) [ProtocolSupport(8).jar:?]
    at protocolsupport.protocol.packet.handler.AbstractLoginListenerPlay.tryJoin(AbstractLoginListenerPlay.java:130) [ProtocolSupport(8).jar:?]
    at protocolsupport.protocol.packet.handler.AbstractLoginListenerPlay.tick(AbstractLoginListenerPlay.java:92) [ProtocolSupport(8).jar:?]
    at protocolsupport.zplatform.impl.spigot.network.handler.SpigotLoginListenerPlay.e(SpigotLoginListenerPlay.java:70) [ProtocolSupport(8).jar:?]
    at net.minecraft.server.v1_12_R1.NetworkManager.a(NetworkManager.java:255) [PaperSpigot-latest.jar:git-Paper-1385]
    at net.minecraft.server.v1_12_R1.ServerConnection.c(ServerConnection.java:150) [PaperSpigot-latest.jar:git-Paper-1385]
    at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:941) [PaperSpigot-latest.jar:git-Paper-1385]
    at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:426) [PaperSpigot-latest.jar:git-Paper-1385]
    at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:767) [PaperSpigot-latest.jar:git-Paper-1385]
    at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:665) [PaperSpigot-latest.jar:git-Paper-1385]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_161]
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean
    at me.fromgate.reactions.actions.ActionIfElse.execute(ActionIfElse.java:37) ~[?:?]
    at me.fromgate.reactions.actions.Action.executeAction(Action.java:66) ~[?:?]
    at me.fromgate.reactions.actions.Actions.performAction(Actions.java:192) ~[?:?]
    at me.fromgate.reactions.actions.Actions.executeActions(Actions.java:183) ~[?:?]
    at me.fromgate.reactions.util.waiter.Task.execute(Task.java:58) ~[?:?]
    at me.fromgate.reactions.util.waiter.ActionsWaiter.refresh(ActionsWaiter.java:72) ~[?:?]
    at me.fromgate.reactions.util.listeners.RaListener.onPlayerJoin(RaListener.java:412) ~[?:?]
    at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor324.execute(Unknown Source) ~[?:?]
    at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:70) ~[PaperSpigot-latest.jar:git-Paper-1385]
    ... 17 more
 
upd: что здесь не так?
Зачем же так нагружать активатор действиями IF_ELSE?
Используй просто стронний актватор с флагом.
Код:
COMMAND:
  'cmd_buyfly':
    override: false
    regex: false
    command: buyfly
    flags:
    - PERM=essentials.fly
    actions:
    - MSG=&7Вам и так доступна возможность летать!
    - FLY=fly:true allow:true
    reactions:
    - EXECUTE=activator:moneyfly
EXEC:
  'moneyfly':
    flags:
    - MONEY=100
    actions:
    - CMD_CONSOLE=pex user %PLAYER_NAME% add essentials.fly
    - MONEY_PAY=100
    - 'MSG=&7Вы успешно купили возможность летать! Остаток средств&f: &b%money%&c$'
    reactions:
    - MSG=&7Недостаточно средств! &8(&b%calc:%money%-100%&8)

/buyfly
 
Ещё разок сформулирую свой вопрос.
Блоки из модов для действия SHOOT по умолчанию стоят, как проницаемые и поэтому их невозможно уничтожить выстрелом. Хотя в конфиге они прописаны, как разрушаемые, но как проницаемые не прописаны. Как это убрать? Как сделать блок из мода разрушаемым для выстрела?
 
Можно ли как-то делать проверку пермишена в меню? Что бы в зависимости от пермишена менять лор и запрещать повторную покупку к примеру?

upd: что здесь не так?
Код:
  buy_fly:
    flags:
    - PERM=essentials.fly
    - MONEY=100
    actions:
    - IF_ELSE=
        if:{'%perm_flag%'=='true'}
          then:run:actions:{
            action1:{message=Возможность FLY уже приобретена!}
        } else:run:actions:{
          action1:{IF_ELSE=if:{'%money_flag%'=='100'}
            then:run:actions:{
              action1:{message=купил}
              action2:{CMD_CONSOLE=pex user %player_name% add essentials.fly}
            } else:run:actions:{ action1:{MSG=мало} }} }
    reactions:
    - MESSAGE=%ifelsedebug%
Дело в том, что плейсхолдер _flag отображает значение флага, в твоём случае %perm_flag% отобразит essentials.fly.
Да, я тоже бы хотел, чтобы плейсхолдеры флагов возвращали true или false. Попробуй пр

Выйти из положения можно, как указал SOHIGH выше.
 
@fromgate, здравствуй.

В данный момент плейсхолдер флага отображает значение данного флага, если он был в активаторе. Я пока не понял, зачем он. Если он будет возвращать значение флага, то оно неизменно и пользы от него почти нет.

Предлагаю сделать так, чтобы плейсхолдер %_flag% возвращал true или false из указанного флага, в зависимости от того, что возвращает этот флаг. Таким способом можно избавиться от некрасивых костылей и дополнительных активаторов.
 
@Lomank Я не помню конкретно для чего я делал, чтобы потягивалось значение. Но как-то я это использовал )

В принципе лучше будет тогда сделать плейсхолдер <имя_флага>_flag_value, который будет иметь значение true / false.
 
Ещё разок сформулирую свой вопрос.
Блоки из модов для действия SHOOT по умолчанию стоят, как проницаемые и поэтому их невозможно уничтожить выстрелом. Хотя в конфиге они прописаны, как разрушаемые, но как проницаемые не прописаны. Как это убрать? Как сделать блок из мода разрушаемым для выстрела?
Обычные юзеры тут не в помощь, наверно. Дождитесь ответа разработчиков плагина, или отпишитесь им в ЛС
 
@fromgate, здравствуй.

В данный момент плейсхолдер флага отображает значение данного флага, если он был в активаторе. Я пока не понял, зачем он. Если он будет возвращать значение флага, то оно неизменно и пользы от него почти нет.

Предлагаю сделать так, чтобы плейсхолдер %_flag% возвращал true или false из указанного флага, в зависимости от того, что возвращает этот флаг. Таким способом можно избавиться от некрасивых костылей и дополнительных активаторов.
Плейсхолдер флага очень полезная вещь. Вот, как я когда-то использовал его:
Код:
  exec_get_player_donate:
    flags:
    - FLAG_SET=GROUP:default GROUP:fly GROUP:vip GROUP:vipp GROUP:god GROUP:mvp
    GROUP:mvpp GROUP:creative GROUP:arch GROUP:glarch GROUP:moderator GROUP:youtube
    GROUP:mladm GROUP:admin GROUP:pgl GROUP:gl GROUP:creator
    actions:
    - CMD_CONSOLE=say &eИгрок &a%player% &eимеет донат &6&l%GROUP_FLAG%
    reactions: []
 
@Lomank Я не помню конкретно для чего я делал, чтобы потягивалось значение. Но как-то я это использовал )

В принципе лучше будет тогда сделать плейсхолдер <имя_флага>_flag_value, который будет иметь значение true / false.
Плейсхолдер флага очень полезная вещь. Вот, как я когда-то использовал его:
Код:
  exec_get_player_donate:
    flags:
    - FLAG_SET=GROUP:default GROUP:fly GROUP:vip GROUP:vipp GROUP:god GROUP:mvp
    GROUP:mvpp GROUP:creative GROUP:arch GROUP:glarch GROUP:moderator GROUP:youtube
    GROUP:mladm GROUP:admin GROUP:pgl GROUP:gl GROUP:creator
    actions:
    - CMD_CONSOLE=say &eИгрок &a%player% &eимеет донат &6&l%GROUP_FLAG%
    reactions: []
Кстати да, можно просто отдельный плейсхолдер сделать, а плейсхолдер %_flag% ещё пригодится. :)
 
Проверяйте. Я ещё вчера добавил забыл написать.

#211
  • Флаги будут создавать дополнительный временный плейсхолдер <FLAG_NAME>_FLAG_VAL, который будет содержать результат проверки данного флага (true / false)
  • Добавлен флаг HEALTH — проверка здоровья игрока
  • Команда /react add теперь работает (должна ;)) на bukkit 1.7.10.
  • Исправлена ошибка, связанная с несовместимостью API разных версий spigot, проявлявшая себя периодически при стрельбе из лока, бросании зелий и т.п.
  • Информация о регистрации команд, при старте сервера, объедина в одно сообщение.
 
Проверяйте. Я ещё вчера добавил забыл написать.

#211
  • Флаги будут создавать дополнительный временный плейсхолдер <FLAG_NAME>_FLAG_VAL, который будет содержать результат проверки данного флага (true / false)
  • Добавлен флаг HEALTH — проверка здоровья игрока
  • Команда /react add теперь работает (должна ;)) на bukkit 1.7.10.
  • Исправлена ошибка, связанная с несовместимостью API разных версий spigot, проявлявшая себя периодически при стрельбе из лока, бросании зелий и т.п.
  • Информация о регистрации команд, при старте сервера, объедина в одно сообщение.
Плейсхолдер %<FLAG_NAME>_FLAG_VAL% не всегда срабатывает почему-то. Бывает просто нераскрытый плейсхолдер показывает. Не знаю с чем это связано.
 
[20:02:05] [Server thread/ERROR]: Could not pass event BlockClickEvent to ReActions v0.10.2
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:338) ~[JavaPluginLoader$1.class:1.7.10-1614.58]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[RegisteredListener.class:1.7.10-1614.58]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:507) [SimplePluginManager.class:1.7.10-1614.58]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:492) [SimplePluginManager.class:1.7.10-1614.58]
at me.fromgate.reactions.event.EventManager.raiseBlockClickEvent(EventManager.java:486) [ReActions.jar:?]
at me.fromgate.reactions.RAListener.onPlayerInteract(RAListener.java:401) [ReActions.jar:?]
at sun.reflect.GeneratedMethodAccessor42.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_161]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_161]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:334) [JavaPluginLoader$1.class:1.7.10-1614.58]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) [RegisteredListener.class:1.7.10-1614.58]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:507) [SimplePluginManager.class:1.7.10-1614.58]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:492) [SimplePluginManager.class:1.7.10-1614.58]
at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:223) [CraftEventFactory.class:1.7.10-1614.58]
at net.minecraft.server.management.ItemInWorldManager.func_73078_a(ItemInWorldManager.java:429) [mx.class:?]
at net.minecraft.network.NetHandlerPlayServer.func_147346_a(NetHandlerPlayServer.java:861) [nh.class:?]
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.func_148833_a(SourceFile:60) [jo.class:?]
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.func_148833_a(SourceFile:9) [jo.class:?]
at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:245) [ej.class:?]
at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:181) [nc.class:?]
at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:1023) [MinecraftServer.class:?]
at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:432) [lt.class:?]
at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:841) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:693) [MinecraftServer.class:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_161]
Caused by: java.lang.NoSuchMethodError: com.sk89q.worldguard.LocalPlayer.getAssociation(Ljava/util/List;)Lcom/sk89q/worldguard/domains/Association;
at me.fromgate.reactions.module.wgbridge.WGBridge6x.isPlayerIsMember(WGBridge6x.java:163) ~[?:?]
at me.fromgate.reactions.externals.RAWorldGuard.isPlayerIsMember(RAWorldGuard.java:131) ~[?:?]
at me.fromgate.reactions.flags.FlagRegion.checkFlag(FlagRegion.java:52) ~[?:?]
at me.fromgate.reactions.flags.Flags.check(Flags.java:114) ~[?:?]
at me.fromgate.reactions.flags.Flags.checkFlag(Flags.java:142) ~[?:?]
at me.fromgate.reactions.flags.Flags.checkAllFlags(Flags.java:156) ~[?:?]
at me.fromgate.reactions.flags.Flags.checkFlags(Flags.java:148) ~[?:?]
at me.fromgate.reactions.actions.Actions.executeActivator(Actions.java:151) ~[?:?]
at me.fromgate.reactions.activators.BlockClickActivator.activate(BlockClickActivator.java:83) ~[?:?]
at me.fromgate.reactions.activators.Activator.executeActivator(Activator.java:231) ~[?:?]
at me.fromgate.reactions.activators.Activators.activate(Activators.java:330) ~[?:?]
at me.fromgate.reactions.RAListener.onBlockClickActivator(RAListener.java:612) ~[?:?]
at sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_161]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_161]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:334) ~[JavaPluginLoader$1.class:1.7.10-1614.58]
... 24 more

BLOCK_CLICK:
bc:
block-type: ''
click-type: RIGHT
flags:
- ITEM=type:4439
- REGION_MEMBER=%worldguard_region_name%
actions:
- CANCEL_EVENT=true

В чём беда? PlaceHolderApi работает, данная переменная в сочетании с другими флагами работает. Флаг REGION работает. А REGION_OWNER и REGION_MEMBER выдают вот это
 
Тут беда: org.bukkit.craftbukkit.v1_7_R4.
 
Тут беда: org.bukkit.craftbukkit.v1_7_R4.
а тут?
Paper при входе
Код:
[11:56:45] [Server thread/ERROR]: Could not pass event PlayerJoinEvent to ReActions v0.11.0
org.bukkit.event.EventException: null
    at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:72) ~[PaperSpigot-latest.jar:git-Paper-1385]
    at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:78) ~[PaperSpigot-latest.jar:git-Paper-1385]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[PaperSpigot-latest.jar:git-Paper-1385]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:515) [PaperSpigot-latest.jar:git-Paper-1385]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:500) [PaperSpigot-latest.jar:git-Paper-1385]
    at net.minecraft.server.v1_12_R1.PlayerList.onPlayerJoin(PlayerList.java:370) [PaperSpigot-latest.jar:git-Paper-1385]
    at net.minecraft.server.v1_12_R1.PlayerList.a(PlayerList.java:183) [PaperSpigot-latest.jar:git-Paper-1385]
    at protocolsupport.zplatform.impl.spigot.network.handler.SpigotLoginListenerPlay.joinGame(SpigotLoginListenerPlay.java:124) [ProtocolSupport(8).jar:?]
    at protocolsupport.protocol.packet.handler.AbstractLoginListenerPlay.tryJoin(AbstractLoginListenerPlay.java:130) [ProtocolSupport(8).jar:?]
    at protocolsupport.protocol.packet.handler.AbstractLoginListenerPlay.tick(AbstractLoginListenerPlay.java:92) [ProtocolSupport(8).jar:?]
    at protocolsupport.zplatform.impl.spigot.network.handler.SpigotLoginListenerPlay.e(SpigotLoginListenerPlay.java:70) [ProtocolSupport(8).jar:?]
    at net.minecraft.server.v1_12_R1.NetworkManager.a(NetworkManager.java:255) [PaperSpigot-latest.jar:git-Paper-1385]
    at net.minecraft.server.v1_12_R1.ServerConnection.c(ServerConnection.java:150) [PaperSpigot-latest.jar:git-Paper-1385]
    at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:941) [PaperSpigot-latest.jar:git-Paper-1385]
    at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:426) [PaperSpigot-latest.jar:git-Paper-1385]
    at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:767) [PaperSpigot-latest.jar:git-Paper-1385]
    at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:665) [PaperSpigot-latest.jar:git-Paper-1385]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_161]
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean
    at me.fromgate.reactions.actions.ActionIfElse.execute(ActionIfElse.java:37) ~[?:?]
    at me.fromgate.reactions.actions.Action.executeAction(Action.java:66) ~[?:?]
    at me.fromgate.reactions.actions.Actions.performAction(Actions.java:192) ~[?:?]
    at me.fromgate.reactions.actions.Actions.executeActions(Actions.java:183) ~[?:?]
    at me.fromgate.reactions.util.waiter.Task.execute(Task.java:58) ~[?:?]
    at me.fromgate.reactions.util.waiter.ActionsWaiter.refresh(ActionsWaiter.java:72) ~[?:?]
    at me.fromgate.reactions.util.listeners.RaListener.onPlayerJoin(RaListener.java:412) ~[?:?]
    at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor324.execute(Unknown Source) ~[?:?]
    at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:70) ~[PaperSpigot-latest.jar:git-Paper-1385]
    ... 17 more
 
Плейсхолдер %<FLAG_NAME>_FLAG_VAL% не всегда срабатывает почему-то. Бывает просто нераскрытый плейсхолдер показывает. Не знаю с чем это связано.

Скорее всего это связано с тем, что самого флага не дошла проверка.
Т.е. если флагов 3, а второй в списке вернул false, то неотработавшей считается вся конструкция. Собственно так оно и есть.
Я могу сделать полный перебор, но первый вариант оптимальнее с точки зрения производительности.
 
Я ничего не понял, в java я не понимаю ничего. Не посоветуете ли коим образом это можно исправить?
 
Назад
Верх