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

О, великий знаток ReActions, прошу ответить на еще два нуПских вопроса:
1) Та же ситуация с запретом входа в регион, если в инвентаре нет ни одного или больше одного сундука. Как сделать так, чтобы игрок мог пройти, если в инвентаре обычный сундук(и), без имени и лора? Остальные условия такие же.
2) Теперь еще с запретом команды. Опять таки, можно ли запретить команду для игрока, если у него в инвентаре лежит(ат) сундук(и) с кастомным названием и лором? (кол-во не важно). Если в инвентаре обычный сундук, то команда должна срабатывать.
Не уверен, что конкретно нужно в обоих случаях :0 Подробнее бы.

Вариант 1
1)Запрещаем вход, если нет хотя бы одного обычного сундука.
Код:
REGION_ENTER:
  NoEnter2:
    region: NoEnter2
    flags:
    - item_inventory=type:chest
    actions:
    - message=&aУ игрока есть минимум один обычный сундук. Забиваем болт.
    reactions:
    - message=&cУ игрока либо нет сундука, либо сундук кастомный. Низя.
#    - back=2
#    - tp=world,0,80,0,0,0
2)Запрещаем телепорт на спавн если нет хотя бы одного обычного сундука.
Код:
COMMAND:
  ChestSpawn:
    override: false
    regex: false
    command: cmd:spawn
    flags:
    - '!item_inventory=type:chest'
    actions:
    - cancel_event=true
    - message=&cВ инвентаре нет ни одного обычного сундука. На спавн не пущу.

Вариант 2
1)Запрещаем вход, если нет хотя бы одного обычного сундука или имеется кастомный.
Код:
REGION_ENTER:
  NoEnter2:
    region: NoEnter2
    flags:
    - item_inventory=type:chest
    - '!item_inventory=type:chest name:.+ lore:.* regex:true'
    - '!item_inventory=type:chest name:.* lore:.+ regex:true'
    actions:
    - message=&aУ игрока есть минимум один обычный сундук и нет кастомных. Забиваем болт.
    reactions:
    - message=&cУ игрока либо нет сундука, либо имеется кастомный сундук. Низя.
#    - back=2
#    - tp=world,0,80,0,0,0
2)Запрещаем телепорт на спавн если нет хотя бы одного обычного сундука, или имеется кастомный.

Код:
COMMAND:
  ChestCmd:
    override: false
    regex: false
    command: cmd:spawn
    flags:
    - item_inventory=type:chest
    - '!item_inventory=type:chest name:.+ lore:.* regex:true'
    - '!item_inventory=type:chest name:.* lore:.+ regex:true'
    reactions:
    - cancel_event=true
    - message=&cВ инвентаре нет ни одного обычного сундука, либо имеется кастомный. На спавн не пущу.
 
Короче, на конкретных примерах.

1. Тут всё просто, надо чтоб игрока пускало в регион только если у него в инвентаре имеется 1 и только 1 кастомный сундук. Если игрок несет 1, несколько обычных сундуков или не несет их вообще, то его не пускает.
2. Тут посложнее. Нужно, чтоб игрок не мог пользоваться командой /enderchest, пока у него в инвентаре есть любое количество кастомных сундуков. На обычные сундуки триггериться не должно.
 
А что, собственно, должно происходить? ._.
В действии "WAIT" не нужно прописывать "time:" - достаточно прописать само время (wait=200ms), а для таких подробностей действия "EFFECT" нужен плагин PlayEffect.
PlayEffect стоит. WAIT=time:200ms работает.
Активаторы работают правильно, если выполнять через /exec. А через меню не хотят
 
Если ReActions ещё обновляется, на что я очень надеюсь, то хочу предложить пару новых вещей для удобства, а также обратить внимание на некоторые баги.

1. Вывод в лог зарегистрированных команд (Исправление):
На данный момент для каждой команды создаётся строка в логах, что не очень удобно, когда команд достаточно много, получается нехилое засорение консоли. Предлагаю отображать зарегистрированные команды сгруппировано в одну строку. Пример:
[ReActions] Activator command registered: cmd1, cmd2, cmd3, cmd4, cmd5, cmdn, ...
Сейчас у меня ещё не много команд, но в будущем будет раза в 4, а то и в 5 больше. Будет очень зафлужена консоль на старте.
TY2CPb2.jpg

2. Активатор ITEM_CONSUME (Исправление):
Работает только тогда, когда ты съедаешь предмет из правой руки, то бишь ведущей. Когда берёшь предмет в левую руку и поглощаешь его, то активатор не запускается.

3. Флаг PLAYER_ONLINE (Добавление):
Добавить флаг, который проверяет наличие указанного игрока в данный момент на сервере.

4. Флаг PLAYER_RADIUS (Добавление):
Добавить флаг, который проверяет наличие указанного игрока в указанном радиусе от другого указанного игрока, либо, если второй игрок не указан, в радиусе от игрока, который способствовал запуску активатора.
 
@Lomank
п.1 Сделал ;)

#206
  • Исправлена ошибка, связанная с несовместимостью API разных версий spigot, проявлявшая себя периодически при стрельбе из лока, бросании зелий и т.п.
  • Информация о регистрации команд, при старте сервера, объедина в одно сообщение.
 
Как посредством IF_ELSE проверить блок, на котором стоишь?
if:{%walk_block%==70} - так?
 
Привет, делаем активатор Мини лаки-блок
Нужно чтобы после разбития блока - блок респавнился в рандомной точке опр региона, не получается этого сделать.

BLOCK_BREAK:
lucky:
block: 'type:IRON_BLOCK'
flags:
- region=world.srv_lucky_block
actions:
- execute=activator:givedrop%random:1-5%
- action_delayed=time:2s action:{execute activator:spawnlucky_iron_%random:one,two%}
EXEC:
givedrop1:
actions:
- item_give=type:{{%random:DIAMOND_,IRON_,GOLD_%}SWORD} lore:{&fДроп с &eЛаки Блока} enchantments:{{%random:Sharpness,Knockback,Smite,Fire aspect%}:{%random:1-2%}}
givedrop2:
actions:
- item_give=type:{{%random:DIAMOND_,IRON_,GOLD_%}{%random:HELMET,CHESTPLATE%} lore:{&fДроп с &eЛаки Блока} enchantments:{{%random:Thorns,Fire Protection,Protection%}:{%random:1-3%}}
givedrop3:
actions:
- item_give=type:{{%random:DIAMOND_,IRON_,GOLD_%}{%random:LEGGINGS,BOOTS%}} lore:{&fДроп с &eЛаки Блока} enchantments:{{%random:Thorns,Fire Protection,Protection%}:{%random:1-3%}}
givedrop4:
actions:
- cmd_console=eco give %player% %random:100,200,500,1000,1200,1500,2000,2500,5000%
givedrop5:
actions:
- item_give=type:golden_apple amount:%random:8,16,32% lore:{Дроп с &eЛаки Блока}
spawnlucky_iron_one:
actions:
- block_set=block:IRON_BLOCK loc:world,-%random:1602-1612%,68,-%random:1026-1032%
spawnlucky_iron_two:
actions:
- block_set=block:IRON_BLOCK loc:world,-%random:1604-1610%,68,-%random:1024-1034%

Пометил красным все что не пашет!
 
Как посредством IF_ELSE проверить блок, на котором стоишь?
if:{%walk_block%==70} - так?
Насколько я знаю нужно поставить одинарные ковычки {'%walk_block%==70'}, а насчет цифрового или буквенного айди - хз
 
Не работает. И так {"%walk_block%"=="STONE_PLATE"} - не работает
Вот тебе активатор EXEC, содержащий флаг WALK_BLOCK в себе.
Прочитав эту страницу можно понять, что нужно использовать плейсхолдер %walk_block_flag% и он будет работать только в том случае, если флаг WALK_BLOCK будет использован в активаторе.

Код:
  WALKBLOCK:
    flags:
    - WALK_BLOCK=type:1
    actions:
    - 'MSG=ACTIVATOR:ACT'
    - 'IF_ELSE=if:{''%walk_block_flag%''==''type:1''}
                then:run:actions:{
                action1:{MSG=IF_ELSE:ACT}
                }
                else:run:actions:{
                action1:{MSG=IF_ELSE:REACT}
                }'
    reactions:
    - 'MSG=ACTIVATOR:REACT'
 
Последнее редактирование:
Как сделать меч который будет наносить критический урон (дополнительный урон) с определенным шансом ?
 
Как сделать меч который будет наносить критический урон (дополнительный урон) с определенным шансом ?
Код:
MOB_DAMAGE:
  activator:
    mob-type: Ваш моб (насколько я знаю, сейчас сделать так, чтобы активатор распространялся на всех мобов, нельзя)
    mob-name: имя  моба
    item: описание меча
    flags:
    - chance=50
    actions:
    - var_temp_set=id:damage value:%calc:(%damage%)*1.5%
 
Ошибка при входе игроков:
Код:
29.03 12:01:49 [Server] ERROR Could not pass event PlayerJoinEvent to ReActions v0.11.0 
29.03 12:01:49 [Server] INFO org.bukkit.event.EventException: null 
29.03 12:01:49 [Server] INFO at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:72) ~[PaperSpigot-latest.jar:git-Paper-1364] 
29.03 12:01:49 [Server] INFO at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:78) ~[PaperSpigot-latest.jar:git-Paper-1364] 
29.03 12:01:49 [Server] INFO at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[PaperSpigot-latest.jar:git-Paper-1364] 
29.03 12:01:49 [Server] INFO at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:515) [PaperSpigot-latest.jar:git-Paper-1364] 
29.03 12:01:49 [Server] INFO at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:500) [PaperSpigot-latest.jar:git-Paper-1364] 
29.03 12:01:49 [Server] INFO at net.minecraft.server.v1_12_R1.PlayerList.onPlayerJoin(PlayerList.java:370) [PaperSpigot-latest.jar:git-Paper-1364] 29.03 12:01:49 [Server] INFO at net.minecraft.server.v1_12_R1.PlayerList.a(PlayerList.java:183) [PaperSpigot-latest.jar:git-Paper-1364] 29.03 12:01:49 [Server] INFO at protocolsupport.zplatform.impl.spigot.network.handler.SpigotLoginListenerPlay.joinGame(SpigotLoginListenerPlay.java:124) [ProtocolSupport(8).jar:?] 29.03 12:01:49 [Server] INFO at protocolsupport.protocol.packet.handler.AbstractLoginListenerPlay.tryJoin(AbstractLoginListenerPlay.java:130) [ProtocolSupport(8).jar:?] 29.03 12:01:49 [Server] INFO at protocolsupport.protocol.packet.handler.AbstractLoginListenerPlay.tick(AbstractLoginListenerPlay.java:92) [ProtocolSupport(8).jar:?] 29.03 12:01:49 [Server] INFO at protocolsupport.zplatform.impl.spigot.network.handler.SpigotLoginListenerPlay.e(SpigotLoginListenerPlay.java:70) [ProtocolSupport(8).jar:?] 29.03 12:01:49 [Server] INFO at net.minecraft.server.v1_12_R1.NetworkManager.a(NetworkManager.java:255) [PaperSpigot-latest.jar:git-Paper-1364] 29.03 12:01:49 [Server] INFO at net.minecraft.server.v1_12_R1.ServerConnection.c(ServerConnection.java:150) [PaperSpigot-latest.jar:git-Paper-1364] 29.03 12:01:49 [Server] INFO at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:941) [PaperSpigot-latest.jar:git-Paper-1364] 29.03 12:01:49 [Server] INFO at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:426) [PaperSpigot-latest.jar:git-Paper-1364] 29.03 12:01:49 [Server] INFO at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:767) [PaperSpigot-latest.jar:git-Paper-1364] 29.03 12:01:49 [Server] INFO at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:665) [PaperSpigot-latest.jar:git-Paper-1364] 29.03 12:01:49 [Server] INFO at java.lang.Thread.run(Thread.java:748) [?:1.8.0_161] 29.03 12:01:49 [Server] INFO Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean 29.03 12:01:49 [Server] INFO at me.fromgate.reactions.actions.ActionIfElse.execute(ActionIfElse.java:37) ~[?:?] 29.03 12:01:49 [Server] INFO at me.fromgate.reactions.actions.Action.executeAction(Action.java:66) ~[?:?] 29.03 12:01:49 [Server] INFO at me.fromgate.reactions.actions.Actions.performAction(Actions.java:192) ~[?:?] 29.03 12:01:49 [Server] INFO at me.fromgate.reactions.actions.Actions.executeActions(Actions.java:183) ~[?:?] 29.03 12:01:49 [Server] INFO at me.fromgate.reactions.util.waiter.Task.execute(Task.java:58) ~[?:?] 29.03 12:01:49 [Server] INFO at me.fromgate.reactions.util.waiter.ActionsWaiter.refresh(ActionsWaiter.java:72) ~[?:?] 29.03 12:01:49 [Server] INFO at me.fromgate.reactions.util.listeners.RaListener.onPlayerJoin(RaListener.java:410) ~[?:?] 29.03 12:01:49 [Server] INFO at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor302.execute(Unknown Source) ~[?:?] 29.03 12:01:49 [Server] INFO at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:70) ~[PaperSpigot-latest.jar:git-Paper-1364]

Код:
JOIN:
  start_kit:
    join-state: ANY
    flags:
    - GROUP=newkit
    actions:
    - message= &3 ◆
    - WAIT=300000ms
    - cmd_op=cmd
    - CMD_CONSOLE=cmd
    - message= &3 &m◆◆◆◆◆◆◆◆◆◆◆
 
Я боюсь представить, что будет после выхода 1.13.
Похоже проще будет новый ReActions написать )
 
Назад
Верх