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

Странно то, что пробовал такую же конструкцию но с активаторами button и plate работает, а с rgenter нет. Или может это потому, что раньше в этом активаторе были другие действия, которые я изменял, а пробные с кнопками и плитами я новые создавал.
нет, попробовал удалить старый и создать новый активатор, с другим именем, результат тот же (
fromgate сказал(а):
Вечером попробую этот активатор, напишу.
:whistle:
 
Тут один вопросец возник. Возможно ли сделать так чтобы действие power_set работало на все блоки реагирующие на красную пыль (лампы, поршни, сама красная пыль)? Или здесь появляются проблемы с кодом?
 
Собственно на то что можно влиять - оно влияет ;) Принудительно "включить" редстоун-провод возможности пока нет. С факелом по моему такая же история.
 
Я понял что не работает в моем случае, проверка флага и все действия/противодействия активатора rgenter проводится именно при входе, влете, вплыве в регион (то есть при попытке пересечь границу привата), а если вас перемещает внутрь привата действием TP или командой, например /tppos, или любым другим перемещением (варп, портал) то получается такая фигня как у меня, то есть или не работает совсем, или только наполовину (((
 
Последнее редактирование:
Здравствуйте. Рассмотрим связку reactions + crackshot. Есть версия craftbukkit 1.5.2 r0.1, версия reactions'а 0.5.2 и версия crackshot'а 0.93 (все для майнкрафта 1.5.2). Создаём активатор pvp_kill, добавляем любое действие, убиваем игрока оружием из плагина crackshot, и активатор срабатывает, действие производится. Но если заменить reaction на более позднюю версию, например 0.9.2, то активатор не срабатывает. То же самое с активатором pvp_death. Прошу вернуть эту важную (по крайней мере для меня) функцию в следующих обновлениях плагина, если это возможно. Также предлагаю ввести новый параметр для действия shoot, который будет отвечать за тип выстрела. Первый тип будет pvp выстрелом, при котором срабатывали бы активаторы pvp_kill/pvp_death, а второй тип будет non-pvp выстрелом при котором НЕ срабатывали бы активаторы pvp_kill/pvp_death. Спасибо за внимание.
 
На фоне лета и назначения на должность модератора bukkit'a полезность идей крайне мала, но на всякий случай озвучу.

Предложения:
Возможность использовать плейсхолдеры переменных в табличках.
 
@ValeraSTK
Так расшифруй что именно имелось в виду.
Сейчас конечно, пока времени нет, но это думаю на начальном этапе - пока на проверку отдельного плагина у меня там уходит довольно много времени, но после освоения инструментов будет быстрее.

В планах, есть добавить активатор на сообщения (на основе кода плагина MessageCommander).

Ну а вообще, про ReActions сняли видео!
Причем это даже вполне себе туториал! Огромное спасибо автору ролика.

 
При смене языка и перезагрузке выдает:
Код:
10:47:44 [SEVERE] Caused by: while parsing a block mapping
 in "<string>", line 1, column 1:
    msg_outdated: '%1% устарел'
    ^
expected <block end>, but found Scalar
 in "<string>", line 325, column 20:
    placeholder_CALC: 'Вычисляет значение выражения и п ...
                       ^

10:47:44 [SEVERE]       at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(ParserImpl.java:575)
10:47:44 [SEVERE]       at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:161)
10:47:44 [SEVERE]       at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:146)
10:47:44 [SEVERE]       at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:230)
10:47:44 [SEVERE]       at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160)
10:47:44 [SEVERE]       at org.yaml.snakeyaml.composer.Composer.composeDocument(Composer.java:123)
10:47:44 [SEVERE]       at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:106)
10:47:44 [SEVERE]       at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:121)
10:47:44 [SEVERE]       at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:480)
10:47:44 [SEVERE]       at org.yaml.snakeyaml.Yaml.load(Yaml.java:399)
10:47:44 [SEVERE]       at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:53)
10:47:44 [SEVERE]       ... 28 more
Потом пытался подправить локализацию, в итоге - то же самое.
 
Версия точно последняя? Если есть russian.lng - удалите его. Там в какой-то предыдущей версии не стояла закрывающая кавычка " ' " в строке - из-за этого YAML'у было плохо.
 
Версия точно последняя? Если есть russian.lng - удалите его. Там в какой-то предыдущей версии не стояла закрывающая кавычка " ' " в строке - из-за этого YAML'у было плохо.
Да, ставил то не последнюю, спасибо, в теме уже нашел. :)
Подскажите пожалуйста, можно ли сделать так, чтобы войдя в регион, плагин проверял наличие предмета у игрока?
(Пример:. У меня есть паутина в инвентаре - я смогу зайти в регион, а если у меня ее нет - телепортирует на спаун.)
 
@Starr
Можно. Вот пример активатора. Только вместо номеров предметов старайтесь использовать названия - неизвестно как в 1.8 это обернётся ;)
Код:
REGION_ENTER:
  rgm:
    region: rgm
    flags:
    - item_inventory=368
    actions:
    - message=&6rgm
    - item_remove_inventory=368
    reactions:
    - message=&4rgm
    - TP=world,26.175,64.0,383.542,-268.946,20.699
 
@Starr
Можно. Вот пример активатора. Только вместо номеров предметов старайтесь использовать названия - неизвестно как в 1.8 это обернётся ;)
Код:
REGION_ENTER:
  rgm:
    region: rgm
    flags:
    - item_inventory=368
    actions:
    - message=&6rgm
    - item_remove_inventory=368
    reactions:
    - message=&4rgm
    - TP=world,26.175,64.0,383.542,-268.946,20.699
Спасибо большое.
Я использую 1.6.4, думаю конфликтов не будет.
Пытался разобраться с функцией DELAY_PLAYER, но ничего не получилось. Только мозги вскипели.
Хотелось бы узнать, как же с этой штукой работать.
Мой пример использования: Я вошел в определенный регион, и больше не могу в него войти в течении 3х дней. Как это реализовать?
Игрался с проверкой групп на регионе и выяснил, что если хоть одна группа наследует другую во флагах, то на нее реакция действовать не будет (или будет, но только также, как на ее родителя)
Сделал лично добавлением своего пермишна нужным группам, и удалением другим соответственно.
Возможно ли как-то не использовать inheritance групп другим способом?
 
@Starr
Работа с группами осуществляется через Vault, а там наверное - уже глубже на основе того как работает плагин на пермишены.

Как какой плагин работает я не знаю, но я (чисто теоретически) вижу следующие варианты:
1. Есть ГРУППА и ПОДГРУППА.
ГРУППА настроена так, что она включает в себя ПОДГРУППУ.
При этом проверка игрока на ГРУППА - положительна, но на ПОДГРУППУ - нет. При этом если есть пермишен в ПОДГРУППЕ, то проверка на него должна быть.
Т.е. наследуются именно пермишены.

2. Есть ГРУППА и ПОДГРУППА.
ГРУППА настроена так, что она включает в себя ПОДГРУППУ.
При этом проверка игрока и на ГРУППА и на ПОДГРУППУ положительна. Также как и на пермишены.
Т.е. наследуется всё.

Но это по идее определяется на уровне самих плагинов пермишенов. На уровне ReActions - никак не повлиять. Тут либо свои группы сочинять и делать как хочется либо приноравливаться к конкретной конфигурации.


Насчет DELAY / DELAY_PLAYER.
Их нужно использовать в комбинации - действие и флаг.
Флаг проверяет действует ли для игрока задержка (кулдаун), а действие - задает (перезаписывает) эту задержку.
При этом не обязательно задержка должна устанавливаться в том активаторе, где используется флаг - они независимы. Т.е. можно к примеру запретить пользоваться целой кучей активаторов после определенного события.
@Starr
Работа с группами осуществляется через Vault, а там наверное - уже глубже на основе того как работает плагин на пермишены.

Как какой плагин работает я не знаю, но я (чисто теоретически) вижу следующие варианты:
1. Есть ГРУППА и ПОДГРУППА.
ГРУППА настроена так, что она включает в себя ПОДГРУППУ.
При этом проверка игрока на ГРУППА - положительна, но на ПОДГРУППУ - нет. При этом если есть пермишен в ПОДГРУППЕ, то проверка на него должна быть.
Т.е. наследуются именно пермишены.

2. Есть ГРУППА и ПОДГРУППА.
ГРУППА настроена так, что она включает в себя ПОДГРУППУ.
При этом проверка игрока и на ГРУППА и на ПОДГРУППУ положительна. Также как и на пермишены.
Т.е. наследуется всё.

Но это по идее определяется на уровне самих плагинов пермишенов. На уровне ReActions - никак не повлиять. Тут либо свои группы сочинять и делать как хочется либо приноравливаться к конкретной конфигурации.


Насчет DELAY / DELAY_PLAYER.
Их нужно использовать в комбинации - действие и флаг.
Флаг проверяет действует ли для игрока задержка (кулдаун), а действие - задает (перезаписывает) эту задержку.
При этом не обязательно задержка должна устанавливаться в том активаторе, где используется флаг - они независимы. Т.е. можно к примеру запретить пользоваться целой кучей активаторов после определенного события.

Ну и немного "грядущего".
Новый активатор MESSAGE — фактически реализует в себе функционал моих последних плагинов MessageFilter и MessageCommander.


 
@fromgate ,
спасибо за ответ. Принцип работы данной фичи мне понятен, а вот какие команды и с какой последовательностью писать в данной ситуации не знаю. Можете дать пример такого активатора?
Мой пример использования: Я вошел в определенный регион, и больше не могу в него войти в течении 3х дней. Как это реализовать?
Или та же кнопка, которая дает игроку определенный предмет. Но юзать он ее может только через 12 часов после использования.
Вот пример моей кнопки:
2014-08-03_17-51-06-png.25038
При попытке установить: /rea add hal a time:12h action:ITEM_GIVE Cake*1, вываливает ошибку (не устанавливает действие)
 

Вложения

  • 2014-08-03_17.51.06.png
    2014-08-03_17.51.06.png
    225,4 КБ · Просмотры: 190
Вот это: /rea add hal a time:12h action:ITEM_GIVE Cake*1 — не совсем понятно что.
Синтаксис добавления команды такой:

/react add <ИдАктиватора> a <НазваниеДействия> <CписокПараметров>

Судя по всему Вы хотели указать на действие ACTION_DELAYED, но это немного не то — оно выполняет действие через указанное время.

/react add <id> a ACTION_DELAYED time:1h action:{ITEM_GIVE CAKE} — обозначает выдачу тортика через один час


Для организации кулдауна нужно добавить флаг:
/react add hal f DELAY_PLAYER <ИдКулдауна>

и действие:
/react add hal a DELAY_PLAYER id:<ИдКулдауна> delay:1h

Теперь при первом нажатии на кнопку будет выдан предмет, но при этому игроку сопоставится кулдаун с идентификатором <ИдКулдауна> при повторном нажатии, флаг увидит наличие этого идентификатора, проверит время и если час ещё не прошёл — будут отработаны "противодействия"
Вот это: /rea add hal a time:12h action:ITEM_GIVE Cake*1 — не совсем понятно что.
Синтаксис добавления команды такой:

/react add <ИдАктиватора> a <НазваниеДействия> <CписокПараметров>

Судя по всему Вы хотели указать на действие ACTION_DELAYED, но это немного не то — оно выполняет действие через указанное время.

/react add <id> a ACTION_DELAYED time:1h action:{ITEM_GIVE CAKE} — обозначает выдачу тортика через один час


Для организации кулдауна нужно добавить флаг:
/react add hal f DELAY_PLAYER <ИдКулдауна>

и действие:
/react add hal a DELAY_PLAYER id:<ИдКулдауна> delay:1h

Теперь при первом нажатии на кнопку будет выдан предмет, но при этому игроку сопоставится кулдаун с идентификатором <ИдКулдауна> при повторном нажатии, флаг увидит наличие этого идентификатора, проверит время и если час ещё не прошёл — будут отработаны "противодействия"
Тут один вопросец возник. Возможно ли сделать так чтобы действие power_set работало на все блоки реагирующие на красную пыль (лампы, поршни, сама красная пыль)? Или здесь появляются проблемы с кодом?

К сожалению нет возможности просто "заставить" в каком-то месте редстоун активироваться. Можно кликнуть по кнопке, дёрнуть рычаг, открыть или закрыть дверь. Но вот сэмулировать наличие факела без его установки, к сожалению нельзя.
В общем время от времени буду возвращаться к этому вопросу, если что-то ещё можно будет активировать - буду добавлять.
Тут один вопросец возник. Возможно ли сделать так чтобы действие power_set работало на все блоки реагирующие на красную пыль (лампы, поршни, сама красная пыль)? Или здесь появляются проблемы с кодом?

К сожалению нет возможности просто "заставить" в каком-то месте редстоун активироваться. Можно кликнуть по кнопке, дёрнуть рычаг, открыть или закрыть дверь. Но вот сэмулировать наличие факела без его установки, к сожалению нельзя.
В общем время от времени буду возвращаться к этому вопросу, если что-то ещё можно будет активировать - буду добавлять.
 
@fromgate,
Большое спасибо за помощь! :)

Стоп.
Противодействие вроде как должно отрабатываться, если кулдаун еще не истек.
Но тут есть одно но. Мне по-прежнему спокойно выдает торт.
А вот в консоль сыпет экспешены:
Код:
2014-08-03 22:03:25 [SEVERE] Could not pass event ButtonEvent to ReActions v0.9.1
org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427)
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
    at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:36)
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462)
    at me.fromgate.reactions.event.EventManager.raiseButtonEvent(EventManager.java:153)
    at me.fromgate.reactions.RAListener.onPlayerInteract(RAListener.java:288)
    at sun.reflect.GeneratedMethodAccessor116.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
    at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:36)
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462)
    at org.bukkit.craftbukkit.v1_6_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:190)
    at net.minecraft.server.v1_6_R3.PlayerInteractManager.interact(PlayerInteractManager.java:373)
    at net.minecraft.server.v1_6_R3.PlayerConnection.a(PlayerConnection.java:630)
    at net.minecraft.server.v1_6_R3.Packet15Place.handle(SourceFile:58)
    at net.minecraft.server.v1_6_R3.NetworkManager.b(NetworkManager.java:296)
    at net.minecraft.server.v1_6_R3.PlayerConnection.e(PlayerConnection.java:116)
    at net.minecraft.server.v1_6_R3.ServerConnection.b(SourceFile:37)
    at net.minecraft.server.v1_6_R3.DedicatedServerConnection.b(SourceFile:30)
    at net.minecraft.server.v1_6_R3.MinecraftServer.t(MinecraftServer.java:592)
    at net.minecraft.server.v1_6_R3.DedicatedServer.t(DedicatedServer.java:227)
    at net.minecraft.server.v1_6_R3.MinecraftServer.s(MinecraftServer.java:488)
    at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java:421)
    at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:583)
Caused by: java.lang.NumberFormatException: For input string: "id:CakeDelay time:6"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:492)
    at java.lang.Integer.parseInt(Integer.java:527)
    at me.fromgate.reactions.FGUtilCore.parseTime(FGUtilCore.java:1177)
    at me.fromgate.reactions.actions.ActionDelay.execute(ActionDelay.java:58)
    at me.fromgate.reactions.actions.Action.executeAction(Action.java:75)
    at me.fromgate.reactions.actions.Actions.performAction(Actions.java:185)
    at me.fromgate.reactions.actions.Actions.executeActivator(Actions.java:177)
    at me.fromgate.reactions.activators.ButtonActivator.activate(ButtonActivator.java:67)
    at me.fromgate.reactions.activators.Activator.executeActivator(Activator.java:274)
    at me.fromgate.reactions.activators.Activators.activate(Activators.java:360)
    at me.fromgate.reactions.RAListener.onButton(RAListener.java:326)
    at sun.reflect.GeneratedMethodAccessor334.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
    ... 27 more
 
Последнее редактирование:
Я понял что не работает в моем случае, проверка флага и все действия/противодействия активатора rgenter проводится именно при входе, влете, вплыве в регион (то есть при попытке пересечь границу привата), а если вас перемещает внутрь привата действием TP или командой, например /tppos, или любым другим перемещением (варп, портал) то получается такая фигня как у меня, то есть или не работает совсем, или только наполовину (((

Действительно, при телепортации есть такой эффект.
Судя по всему это связано с тем, что Вы пытаетесь телепортация игрока "внутри" обработчика события телепортации не возможна.
Сделал вызов события через один тик - вся заработало.
В следующей версии будет.
 
Вот, такие вот комманды вводил:
/ra add hal f delay_player CakeDelay
/ra add hal a delay_player id:CakeDelay time:6h
Сыпет ошибки и не обрабатывает кулдаун, что я описал выше.
И еще:
Попытался сделать по видео часики на табличке, почему-то не отображает их. :(
Заметил, что тут тоже ошибку выдает:
Код:
2014-08-03 23:14:26 [SEVERE] Could not pass event ExecEvent to ReActions v0.9.1
org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427)
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
    at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:36)
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462)
    at me.fromgate.reactions.event.EventManager$1.run(EventManager.java:213)
    at org.bukkit.craftbukkit.v1_6_R3.scheduler.CraftTask.run(CraftTask.java:53)
    at org.bukkit.craftbukkit.v1_6_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:345)
    at net.minecraft.server.v1_6_R3.MinecraftServer.t(MinecraftServer.java:524)
    at net.minecraft.server.v1_6_R3.DedicatedServer.t(DedicatedServer.java:227)
    at net.minecraft.server.v1_6_R3.MinecraftServer.s(MinecraftServer.java:488)
    at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java:421)
    at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:583)
Caused by: java.lang.NoClassDefFoundError: me/fromgate/playeffect/Util
    at me.fromgate.reactions.actions.ActionSignSet.execute(ActionSignSet.java:43)
    at me.fromgate.reactions.actions.Action.executeAction(Action.java:75)
    at me.fromgate.reactions.actions.Actions.performAction(Actions.java:185)
    at me.fromgate.reactions.actions.Actions.executeActivator(Actions.java:177)
    at me.fromgate.reactions.activators.ExecActivator.activate(ExecActivator.java:28)
    at me.fromgate.reactions.activators.Activator.executeActivator(Activator.java:274)
    at me.fromgate.reactions.activators.Activators.activate(Activators.java:360)
    at me.fromgate.reactions.RAListener.onRegionLeave(RAListener.java:352)
    at sun.reflect.GeneratedMethodAccessor601.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
    ... 12 more
 
Назад
Верх