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

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

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

  1. Desperado

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

    Баллы:
    61
    Имя в Minecraft:
    FieryDruid
    Создал меню, но обнаружилась проблема, если кликать за пределами этого меню (ПКМ/ЛКМ), то в консоль сразу вылетают ошибки:
    _________________________________
    [Server thread/ERROR]: Could not pass event InventoryClickEvent to ReActions v0.9.2
    org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:294) ~[craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at net.minecraft.server.v1_7_R3.PlayerConnection.a(PlayerConnection.java:1364) [craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at net.minecraft.server.v1_7_R3.PacketPlayInWindowClick.a(SourceFile:32) [craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at net.minecraft.server.v1_7_R3.PacketPlayInWindowClick.handle(SourceFile:10) [craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at net.minecraft.server.v1_7_R3.NetworkManager.a(NetworkManager.java:157) [craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at net.minecraft.server.v1_7_R3.ServerConnection.c(SourceFile:134) [craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at net.minecraft.server.v1_7_R3.MinecraftServer.v(MinecraftServer.java:667) [craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at net.minecraft.server.v1_7_R3.DedicatedServer.v(DedicatedServer.java:260) [craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at net.minecraft.server.v1_7_R3.MinecraftServer.u(MinecraftServer.java:558) [craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at net.minecraft.server.v1_7_R3.MinecraftServer.run(MinecraftServer.java:469) [craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at net.minecraft.server.v1_7_R3.ThreadServerApplication.run(SourceFile:628) [craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    Caused by: java.lang.ArrayIndexOutOfBoundsException
    _______________________________________

    Ну и напишу сразу сюда.
    Есть меню, есть предмет, который открывает второе меню, но при активации выпадает следующая куча:
    _________________________________________
    [Server thread/ERROR]: Could not pass event InventoryClickEvent to ReActions v0.9.2
    org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:294) ~[craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at net.minecraft.server.v1_7_R3.PlayerConnection.a(PlayerConnection.java:1364) [craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at net.minecraft.server.v1_7_R3.PacketPlayInWindowClick.a(SourceFile:32) [craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at net.minecraft.server.v1_7_R3.PacketPlayInWindowClick.handle(SourceFile:10) [craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at net.minecraft.server.v1_7_R3.NetworkManager.a(NetworkManager.java:157) [craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at net.minecraft.server.v1_7_R3.ServerConnection.c(SourceFile:134) [craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at net.minecraft.server.v1_7_R3.MinecraftServer.v(MinecraftServer.java:667) [craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at net.minecraft.server.v1_7_R3.DedicatedServer.v(DedicatedServer.java:260) [craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at net.minecraft.server.v1_7_R3.MinecraftServer.u(MinecraftServer.java:558) [craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at net.minecraft.server.v1_7_R3.MinecraftServer.run(MinecraftServer.java:469) [craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    at net.minecraft.server.v1_7_R3.ThreadServerApplication.run(SourceFile:628) [craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    Caused by: java.lang.ArrayIndexOutOfBoundsException: -999
    at java.util.ArrayList.elementData(ArrayList.java:400) ~[?:1.7.0_55]
    at java.util.ArrayList.get(ArrayList.java:413) ~[?:1.7.0_55]
    at me.fromgate.reactions.menu.InventoryMenu.onInventoryClick(InventoryMenu.java:175) ~[?:?]
    at sun.reflect.GeneratedMethodAccessor40.invoke(Unknown Source) ~[?:?]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_55]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_55]
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:292) ~[craftbukkit-1.7.9-R0.3-20140705.002733-4.jar:git-Bukkit-1.7.9-R0.2-11-g3fd9db2-b3098jnks]
    ... 13 more
    __________________________________
    И это меню просто не желает открываться. Хотя делал до этого 2 других "пункта" с меню, работает...но это отказывается. Если нужно будет, приложу текст из .yml. Правда вряд ли это ошибка в самом конфиге, копировал с первого сделанного меню и изменял прямо там.
    Прошу помочь мне. Спасибо :)

    Update:Плагин явно ругается на "potato" в названии активатора, без этого слова - всё работает отлично, как только в названии активатора оно появляется - сыплются ошибки :D
    fromgate, признавайся, чем тебе картошка не угодила?:lol:
     
    Последнее редактирование: 25 авг 2014
  2. Korvinius

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

    Баллы:
    88
    Еще интересует такое:
    Есть плейсхолдер "targetplayer — игрок, которого убили в PVP (для PVP-активаторов)" никак нельзя вытащить в плейсхолдер "игрок, который нанес урон в PVP" и "игрок, который получил урон в PVP", то есть не доходя до смерти, только урон в ПВП?
    Ну и в идеале соответствующие активаторы "получение урона в PVP" и "нанесение урона в PVP"
     
    Последнее редактирование: 31 авг 2014
  3. olegikoligik

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

    Баллы:
    88
    Эх документация, документация... Почему-то у разработчиков не простых плагинов (кроме Reactions есть Citizens, а точнее дополнение Denizen с различными скриптами, построение конфига там куда круче чем у Reactions...) документация, мягко говоря хромает. А вить как раз таки у таких плагинов должна быть самая актуальная документация, дабы люди не мучились с подбиранием правильного строения скрипта...
    Ну а теперь к делу. Как должно правильно выглядеть действие Sound в конфиге со всеми его параметрами?
    Вот один из способов что пробовал я:
    Сам звук работает, но громкость и тональность не меняется. Пробовал по разному, и либо воспроизводится звук нажатия кнопки в меню (вместо звука поршня), либо вообще не воспроизводится.
     
    Последнее редактирование: 28 авг 2014
  4. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @olegikoligik
    Я так понимаю не у всех звуков есть возможность менять тональность/громкость. Попробуйте LEVEL_UP - на нём очень заметно.

    По поводу документации - сам страдаю, но это очень трудоемкий процесс, на который всегда не хватает времени.

    @Desperado
    Про картошку вообще никаких идей, чего это она не нравится. Попробую :)

    Ошибки тоже проверю. Как раз сейчас пытаюсь допилить версию, так что сообщение очень вовремя.

    @Korvinius
    Расширение активаторов у меня запланировано. Но там планируется ещё некоторая перестройка движка, поэтому не в грядущей версии.
     
  5. olegikoligik

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

    Баллы:
    88
    Похоже что структура команды не та. Ничего не меняется.
     
  6. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @Desperado
    Попробуйте пожалуйста эту версию: https://dl.dropboxusercontent.com/u/64799811/ReActions/ReActions.jar
    По идее ошибки связанные с меню должны уйти.

    @olegikoligik
    Сейчас попробовал:
    /react add testbutton a SOUND type:LEVEL_UP pitch:1.5

    Очень забавно так пищит.
    Да /react add bmenu a SOUND type:LEVEL_UP pitch:0.1 производит неплохое впечатление. Чем-то колокола напоминает.
     
  7. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Несколько вопросов от новичка в разборе плагина:
    Код:
    Выполнение команды от имени оператора (CMD_OP) cmd_op <Команда>
    
    Выполнение указанной команды от имени игрока. Команда выполнится, если у игрока есть соответствующее permission-право.
    
    Чат-сообщение (MESSAGE) message [Регион] [Группа] [Право] [Мир] [Игрок] <Сообщение>
    Вопрос по первому действию: что значит "есть право"? Разве оператор не обладает всеми правами? Или, имеются в виду права, которые оператору не прописано по-умолчанию? И где указание от игрока? Или выполнение команды происходит от "виртуального оператора"?

    Вопрос по второму действию: если вместо сообщения вписать команду, то будет ли она исполнена? И можно ли этим заменить действие "cmd <Команда>"? Т.е. будет ли исполнена команда от имени консоли?
     
  8. Starr

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

    Баллы:
    98
    1) Эту команду выполнит любой игрок, но с правами администратора. (То есть даже если у него нет доступа к команде, она выполнится от его лица.)
    2) Этого я не знаю. Надо спросить у @fromgate. :)
     
  9. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @Lyosha12
    1. Там действительно путаница в описании. Копи-паст недоредактированный.
    CMD - просто команда (у игрока должны быть соответствующие пермишены) CMD_OP - игрок делается опом, команда выполянется, опство снимается, CMD_CONSOLE команда выполняется от имени консоли
    2. MESSAGE и CMD - это абсолютно разные вещи. MESSAGE - это отправка сообщения игроку, CMD - выполнение команды от имени игрока
     
  10. olegikoligik

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

    Баллы:
    88
    Возможно такая идея была, и я не увидел, но всё же.
    Возможно ли создания активаторов PICKUP_ITEM и DROP_ITEM?

    P.S. Со звуками наконец-то разобрался, спасибо.
     
    Последнее редактирование: 2 сен 2014
  11. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @olegikoligik
    Это очень хорошая идея. Постараюсь не забыть :)
     
  12. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Как насчёт добавить во флаги проверку на присутствие у игрока значения какой-либо переменной из scoreboard (а так же её задания, установку и удаления в действия)? Очень сократило бы время работы.
    Вопрос: как добавить эффект зелья для входа\выхода в регион? Ни добавление, ни снятие не работают.
    Пишу: /ra add actSpleefJoin a potion type:FAST_DIGGING level:5 time:50000 - эффектов нет.
    Пишу: /ra add actSpleefJoin a potion type:3 level:5 time:50000 - эффектов нет.
    Пишу: /ra add actSpleefJoin a potion FAST_DIGGING 5 50000 - эффектов нет.
    Так же снятие не работает. Пишу: /ra add actSpleefLose a potion_remove all - эффекты не снимает.

    В конфиге пишу:
    Код:
    REGION_ENTER:
      actSpleefJoin:
        region: ReactSpleef
        flags: []
        actions:
        - cmd_console=scoreboard players set %player% SpleefInGame 1
        - POTION=FAST_DIGGING 5 50000
    
    - Ничего.
    Код:
    REGION_ENTER:
      actSpleefJoin:
        region: ReactSpleef
        flags: []
        actions:
        - cmd_console=scoreboard players set %player% SpleefInGame 1
        - POTION=FAST_DIGGING/50000/10
    
    (По примеру с первой страницы) - так же нет результата.
    Версия 0.9.2, как правильно писать надо?
    ---
    Вместо time надо delay... Ну ок, документация...
    При задании векторного рывка в консоли вот эта ересь:
    Код:
    Lyosha12 moved too quickly! 0.0,0.0,0.0 (5.1351589335068555, 7.685770247570514, 4.279299111255712)
    Как лечить? Отключение античита не помогло. Установка allow-flight=true, как советуют на англ. форумах не помогла.
     
    Последнее редактирование: 7 сен 2014
  13. Desperado

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

    Баллы:
    61
    Имя в Minecraft:
    FieryDruid
    Ошибок больше нет, спасибо, @fromgate :)
     
  14. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Можно ли сделать с активатором-рычагом следующее... Если да, то как?
    При включении рычага выполняется действие 1. Если рычаг не был выключен за, допустим, 3 секунды, то выполняется действие 2. Если рычаг был выключен до истечения трёх секунд, то действие 2 не выполняется (или выполняется реакция)?
     
  15. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Ну собственно можно:
    Во-первых, есть функционал DELAY (т.е. можно определять что какое-то время назад игрок выполнил какое-то действие)
    Во-вторых, есть отложенное действие (или возможность запуска активатора с задержкой): т.е. можно выполнить какое-то действие через три секунды (или когда нужно)
    В-третьих, есть возможность привязывать активатор к прямому или обратному ходу рычага.
    В-четвертых, есть возможность проверить состояние любого блока (активного или пассивного ред-стоун элемента) на его "подключение" к цепи (флаг POWER)
    v0.9.3
    • Added activator MESSAGE. This activator is executing when provided message is found in provided source: ALL (any source), CHAT_INPUT (player chat input), CONSOLE_INPUT (message in server console), CHAT_OUTPUT (message displayed in chat, plugin messages supported too), LOG_OUTPUT (message in server log). You can use some method to determine message: EQUALS (messages must be equal), CONTAINS (find substring in message), START (source message must starts with provided substring), END (source message must ends with provided substring), REGEX (using regex to match strings). This activator is a logical extension of my plugins MessageFilter and MessageCommander.
    • Added activator VARIABLE. This activator is executing when provided variable changing it's value. Parameters: id:<VariableId> personal:<false/true>. Local variables provided by this activator: %var_id%, %var_old%, %var_new%
    • Fixed issue:attempt to create item-menu inside another menu caused NPE.
    Warning: This file was not checked by BukkitDev staff, link provided because there's no chance it will be approved in nearest future: http://dev.bukkit.org/bukkit-plugins/reactions/files/24-reactions-v0-9-3/
     
  16. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Из всего этого, думаю, больше подходит действие с задержкой. Но будет ли оно выполнено, если состояние рычага изменится? Ну, или, скажу по-другому: можно ли прервать выполнение действия в активаторе?
    Есть небольшая проблемка, касательно регионов:
    Нужно определить, находится игрок в мире или нет. При входе в мир (не важно, в какой точке), должно выполняться действие\рекация. Но такого активатора я не нашёл. Пытался привязывать активатор REGION к глобальному региону (__global__), но это так не работает. Есть вариант тестить присутствие игрока в мире с помощью КБ и /testfot @a, но это не будет работать, если чанк выгружен. Подскажите, как реализовать?
     
  17. Korvinius

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

    Баллы:
    88
     
  18. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Это флаг, а не активатор. На какой активатор нацепить этот флаг, чтобы проверка на присутствие игрока в мире шла всегда? Нет такого активатора.
     
  19. Korvinius

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

    Баллы:
    88
    А, да, прошу прощения, не внимательно прочитал вопрос.
    Если бы была возможность выполнять активатор относительно всех, кто есть онлайн, можно было бы создать таймер, на запуск активатора execute, например каждые 5 секунд, который бы проверял у всех игроков, в каком они игровом мире находятся и соответственные действия/противодействия в нем.
    Но что то я не вижу возможности выполнить активатор относительно всех кто онлайн, или она есть?
     
  20. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    1. Можно выполнить активатор с задержкой, в котором проверять состояние флага POWER для рычага.

    2. Можно по таймеру (я все-таки хочу их потом превратить в активаторы, как хотел изначально) вызывать активатор, в котором сделать проверку в каком мире находится игрок.
    Есть, в exec указываем параметр player:all
     

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