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

Создал меню, но обнаружилась проблема, если кликать за пределами этого меню (ПКМ/ЛКМ), то в консоль сразу вылетают ошибки:
_________________________________
[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:
 
Последнее редактирование:
Еще интересует такое:
Есть плейсхолдер "targetplayer — игрок, которого убили в PVP (для PVP-активаторов)" никак нельзя вытащить в плейсхолдер "игрок, который нанес урон в PVP" и "игрок, который получил урон в PVP", то есть не доходя до смерти, только урон в ПВП?
Ну и в идеале соответствующие активаторы "получение урона в PVP" и "нанесение урона в PVP"
 
Последнее редактирование:
Эх документация, документация... Почему-то у разработчиков не простых плагинов (кроме Reactions есть Citizens, а точнее дополнение Denizen с различными скриптами, построение конфига там куда круче чем у Reactions...) документация, мягко говоря хромает. А вить как раз таки у таких плагинов должна быть самая актуальная документация, дабы люди не мучились с подбиранием правильного строения скрипта...
Ну а теперь к делу. Как должно правильно выглядеть действие Sound в конфиге со всеми его параметрами?
Вот один из способов что пробовал я:
- SOUND=PISTON_EXTEND volume:0.1 pitch:0.1

Сам звук работает, но громкость и тональность не меняется. Пробовал по разному, и либо воспроизводится звук нажатия кнопки в меню (вместо звука поршня), либо вообще не воспроизводится.
 
Последнее редактирование:
@olegikoligik
Я так понимаю не у всех звуков есть возможность менять тональность/громкость. Попробуйте LEVEL_UP - на нём очень заметно.

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

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

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

@Korvinius
Расширение активаторов у меня запланировано. Но там планируется ещё некоторая перестройка движка, поэтому не в грядущей версии.
 
@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 производит неплохое впечатление. Чем-то колокола напоминает.
 
Несколько вопросов от новичка в разборе плагина:
Код:
Выполнение команды от имени оператора (CMD_OP) cmd_op <Команда>

Выполнение указанной команды от имени игрока. Команда выполнится, если у игрока есть соответствующее permission-право.

Чат-сообщение (MESSAGE) message [Регион] [Группа] [Право] [Мир] [Игрок] <Сообщение>
Вопрос по первому действию: что значит "есть право"? Разве оператор не обладает всеми правами? Или, имеются в виду права, которые оператору не прописано по-умолчанию? И где указание от игрока? Или выполнение команды происходит от "виртуального оператора"?

Вопрос по второму действию: если вместо сообщения вписать команду, то будет ли она исполнена? И можно ли этим заменить действие "cmd <Команда>"? Т.е. будет ли исполнена команда от имени консоли?
 
Несколько вопросов от новичка в разборе плагина:
Код:
Выполнение команды от имени оператора (CMD_OP) cmd_op <Команда>

Выполнение указанной команды от имени игрока. Команда выполнится, если у игрока есть соответствующее permission-право.

Чат-сообщение (MESSAGE) message [Регион] [Группа] [Право] [Мир] [Игрок] <Сообщение>
Вопрос по первому действию: что значит "есть право"? Разве оператор не обладает всеми правами? Или, имеются в виду права, которые оператору не прописано по-умолчанию? И где указание от игрока? Или выполнение команды происходит от "виртуального оператора"?

Вопрос по второму действию: если вместо сообщения вписать команду, то будет ли она исполнена? И можно ли этим заменить действие "cmd <Команда>"? Т.е. будет ли исполнена команда от имени консоли?
1) Эту команду выполнит любой игрок, но с правами администратора. (То есть даже если у него нет доступа к команде, она выполнится от его лица.)
2) Этого я не знаю. Надо спросить у @fromgate. :)
 
@Lyosha12
1. Там действительно путаница в описании. Копи-паст недоредактированный.
CMD - просто команда (у игрока должны быть соответствующие пермишены) CMD_OP - игрок делается опом, команда выполянется, опство снимается, CMD_CONSOLE команда выполняется от имени консоли
2. MESSAGE и CMD - это абсолютно разные вещи. MESSAGE - это отправка сообщения игроку, CMD - выполнение команды от имени игрока
 
Возможно такая идея была, и я не увидел, но всё же.
Возможно ли создания активаторов PICKUP_ITEM и DROP_ITEM?

P.S. Со звуками наконец-то разобрался, спасибо.
 
Последнее редактирование:
Как насчёт добавить во флаги проверку на присутствие у игрока значения какой-либо переменной из 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, как советуют на англ. форумах не помогла.
 
Последнее редактирование:
@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 производит неплохое впечатление. Чем-то колокола напоминает.
Ошибок больше нет, спасибо, @fromgate :)
 
Можно ли сделать с активатором-рычагом следующее... Если да, то как?
При включении рычага выполняется действие 1. Если рычаг не был выключен за, допустим, 3 секунды, то выполняется действие 2. Если рычаг был выключен до истечения трёх секунд, то действие 2 не выполняется (или выполняется реакция)?
 
Можно ли сделать с активатором-рычагом следующее... Если да, то как?
При включении рычага выполняется действие 1. Если рычаг не был выключен за, допустим, 3 секунды, то выполняется действие 2. Если рычаг был выключен до истечения трёх секунд, то действие 2 не выполняется (или выполняется реакция)?

Ну собственно можно:
Во-первых, есть функционал 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/
 
Из всего этого, думаю, больше подходит действие с задержкой. Но будет ли оно выполнено, если состояние рычага изменится? Ну, или, скажу по-другому: можно ли прервать выполнение действия в активаторе?
Есть небольшая проблемка, касательно регионов:
Нужно определить, находится игрок в мире или нет. При входе в мир (не важно, в какой точке), должно выполняться действие\рекация. Но такого активатора я не нашёл. Пытался привязывать активатор REGION к глобальному региону (__global__), но это так не работает. Есть вариант тестить присутствие игрока в мире с помощью КБ и /testfot @a, но это не будет работать, если чанк выгружен. Подскажите, как реализовать?
 
Из всего этого, думаю, больше подходит действие с задержкой. Но будет ли оно выполнено, если состояние рычага изменится? Ну, или, скажу по-другому: можно ли прервать выполнение действия в активаторе?
Есть небольшая проблемка, касательно регионов:
Нужно определить, находится игрок в мире или нет. При входе в мир (не важно, в какой точке), должно выполняться действие\рекация. Но такого активатора я не нашёл. Пытался привязывать активатор REGION к глобальному региону (__global__), но это так не работает. Есть вариант тестить присутствие игрока в мире с помощью КБ и /testfot @a, но это не будет работать, если чанк выгружен. Подскажите, как реализовать?

  • WORLD <world name> — проверка успешна если игрок находится в указанном мире
 
Это флаг, а не активатор. На какой активатор нацепить этот флаг, чтобы проверка на присутствие игрока в мире шла всегда? Нет такого активатора.
 
Это флаг, а не активатор. На какой активатор нацепить этот флаг, чтобы проверка на присутствие игрока в мире шла всегда? Нет такого активатора.
А, да, прошу прощения, не внимательно прочитал вопрос.
Если бы была возможность выполнять активатор относительно всех, кто есть онлайн, можно было бы создать таймер, на запуск активатора execute, например каждые 5 секунд, который бы проверял у всех игроков, в каком они игровом мире находятся и соответственные действия/противодействия в нем.
Но что то я не вижу возможности выполнить активатор относительно всех кто онлайн, или она есть?
 
1. Можно выполнить активатор с задержкой, в котором проверять состояние флага POWER для рычага.

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

Есть, в exec указываем параметр player:all
 
Назад
Верх