1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Релизы плагинов", создана пользователем fromgate, 16 июл 2013.

  1. Korvinius

    Korvinius Активный участник Пользователь

    Баллы:
    88
    Странно то, что пробовал такую же конструкцию но с активаторами button и plate работает, а с rgenter нет. Или может это потому, что раньше в этом активаторе были другие действия, которые я изменял, а пробные с кнопками и плитами я новые создавал.
    нет, попробовал удалить старый и создать новый активатор, с другим именем, результат тот же (
    :whistle:
     
  2. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @Korvinius

    Вообще нет идей, что может быть не так:

     
  3. olegikoligik

    olegikoligik Активный участник Пользователь

    Баллы:
    88
    Тут один вопросец возник. Возможно ли сделать так чтобы действие power_set работало на все блоки реагирующие на красную пыль (лампы, поршни, сама красная пыль)? Или здесь появляются проблемы с кодом?
     
  4. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Собственно на то что можно влиять - оно влияет ;) Принудительно "включить" редстоун-провод возможности пока нет. С факелом по моему такая же история.
     
  5. Korvinius

    Korvinius Активный участник Пользователь

    Баллы:
    88
    Я понял что не работает в моем случае, проверка флага и все действия/противодействия активатора rgenter проводится именно при входе, влете, вплыве в регион (то есть при попытке пересечь границу привата), а если вас перемещает внутрь привата действием TP или командой, например /tppos, или любым другим перемещением (варп, портал) то получается такая фигня как у меня, то есть или не работает совсем, или только наполовину (((
     
    Последнее редактирование: 28 июл 2014
  6. bugagav

    bugagav Активный участник Пользователь

    Баллы:
    63
    Имя в Minecraft:
    bugagav
    Здравствуйте. Рассмотрим связку 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. Спасибо за внимание.
     
  7. ValeraSTK

    ValeraSTK Активный участник Пользователь

    Баллы:
    78
    На фоне лета и назначения на должность модератора bukkit'a полезность идей крайне мала, но на всякий случай озвучу.

    Предложения:
    Возможность использовать плейсхолдеры переменных в табличках.
     
  8. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @ValeraSTK
    Так расшифруй что именно имелось в виду.
    Сейчас конечно, пока времени нет, но это думаю на начальном этапе - пока на проверку отдельного плагина у меня там уходит довольно много времени, но после освоения инструментов будет быстрее.

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

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

     
  9. ValeraSTK

    ValeraSTK Активный участник Пользователь

    Баллы:
    78
    Так очень просто же: на табличке пишешь что нить вроде %ra:[имя_переменной], и подставляется значение этой переменной.
     
  10. Starr

    Starr Активный участник Пользователь

    Баллы:
    98
    При смене языка и перезагрузке выдает:
    Код:
    
    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
    
    Потом пытался подправить локализацию, в итоге - то же самое.
     
  11. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Версия точно последняя? Если есть russian.lng - удалите его. Там в какой-то предыдущей версии не стояла закрывающая кавычка " ' " в строке - из-за этого YAML'у было плохо.
     
  12. Starr

    Starr Активный участник Пользователь

    Баллы:
    98
    Да, ставил то не последнюю, спасибо, в теме уже нашел. :)
    Подскажите пожалуйста, можно ли сделать так, чтобы войдя в регион, плагин проверял наличие предмета у игрока?
    (Пример:. У меня есть паутина в инвентаре - я смогу зайти в регион, а если у меня ее нет - телепортирует на спаун.)
     
  13. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @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
    
     
  14. Starr

    Starr Активный участник Пользователь

    Баллы:
    98
    Спасибо большое.
    Я использую 1.6.4, думаю конфликтов не будет.
    Пытался разобраться с функцией DELAY_PLAYER, но ничего не получилось. Только мозги вскипели.
    Хотелось бы узнать, как же с этой штукой работать.
    Мой пример использования: Я вошел в определенный регион, и больше не могу в него войти в течении 3х дней. Как это реализовать?
    Игрался с проверкой групп на регионе и выяснил, что если хоть одна группа наследует другую во флагах, то на нее реакция действовать не будет (или будет, но только также, как на ее родителя)
    Сделал лично добавлением своего пермишна нужным группам, и удалением другим соответственно.
    Возможно ли как-то не использовать inheritance групп другим способом?
     
  15. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @Starr
    Работа с группами осуществляется через Vault, а там наверное - уже глубже на основе того как работает плагин на пермишены.

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

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

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


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

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

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

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


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

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



     
  16. Starr

    Starr Активный участник Пользователь

    Баллы:
    98
    @fromgate ,
    спасибо за ответ. Принцип работы данной фичи мне понятен, а вот какие команды и с какой последовательностью писать в данной ситуации не знаю. Можете дать пример такого активатора?
    Или та же кнопка, которая дает игроку определенный предмет. Но юзать он ее может только через 12 часов после использования.
    Вот пример моей кнопки:
    [​IMG]
    При попытке установить: /rea add hal a time:12h action:ITEM_GIVE Cake*1, вываливает ошибку (не устанавливает действие)
     

    Вложения:

  17. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Вот это: /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

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

    Starr Активный участник Пользователь

    Баллы:
    98
    @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
    
     
    Последнее редактирование: 3 авг 2014
  19. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Действительно, при телепортации есть такой эффект.
    Судя по всему это связано с тем, что Вы пытаетесь телепортация игрока "внутри" обработчика события телепортации не возможна.
    Сделал вызов события через один тик - вся заработало.
    В следующей версии будет.
     
  20. Starr

    Starr Активный участник Пользователь

    Баллы:
    98
    Вот, такие вот комманды вводил:
    /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
    
     

Поделиться этой страницей