Войти или зарегистрироваться

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

У меня тоже билд #33, я проверал как на версии 1.10.2, так и на 1.11.2. Везде работает. Где-то у Вас в коде активаторов проблема.
Удалил все плагины, поставил чистосгенерированный РеАкшнс, и в нём единственный файл с конфигами exec1 и msg1. Результат тотже ))
 
Удалил все плагины, поставил чистосгенерированный РеАкшнс, и в нём единственный файл с конфигами exec1 и msg1. Результат тотже ))
Покажите код активаторов, которые сейчас вы тестируете. Сейчас разберёмся.
 
Топ плагин, полностью настроил лабиринт с помощью его.
Нажимные плиты, броня на игрока, проверка Gm1/0 проверка, выдача приза, все через ReActions.
Всем рекомендую, топ!
 
Покажите код активаторов, которые сейчас вы тестируете. Сейчас разберёмся.

Я был устал и ушел спать... Но сейчас я встал, я бодр и готов продолжить этот бой с нещадным активатором!

Ну вот это я собственно и тестировал. Тут ошибки быть не может!
Я попробовал и у меня работает:
Код:
EXEC:
  exec1:
    actions:
    - 'CMD_CONSOLE=tellRaw %player% {"text":"123"}'
    - 'MESSAGE=123'
MESSAGE:
  msg1:
    source: ALL
    type: CONTAINS
    mask: '123'
    actions:
    - CANCEL_EVENT=true
    - 'MESSAGE=&eТест 1'

[upd]
...Работает при событии - игрок пишет в чат,
Работает при команде broadcast с консоли...
А при МЕСЕДЖЕ РеАкшнс, или сообщении из других плагинов - нет. Даже если взять действие - 'CMD_CONSOLE=Broadcast 123', то всеравно несработает. Хотя фактически это должно быть то же что и просто написать broadcast из консоли
Значит проблема где-то здесь. Возможно плагины отсылают сообщения в каком-то закодированом виде, которого неможет отловить ни один из типов маски MESSAGE активатора ??
 
Последнее редактирование:
Значит проблема где-то здесь. Возможно плагины отсылают сообщения в каком-то закодированом виде, которого неможет отловить ни один из типов маски MESSAGE активатора ??

Сообщения плагинов отлавливаются на уровне пакетов, через ProtocolLib. Версии сервера / ProtocolLib какие?
 
Сегодня созрел к переходу на последнюю версию плагина с 0.9.10 и вот какой результат получил в консоль:
Код:
[09:13:56] [Server thread/ERROR]: Could not pass event PlayerInteractEntityEvent to ReActions v0.9.11                                                                                          
org.bukkit.event.EventException                                                                                                                                                                
<------>at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[middle.jar:git-Spigot-db6de12-3f3c65f]                                                               
<------>at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[middle.jar:git-Spigot-db6de12-3f3c65f]                                                                 
<------>at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [middle.jar:git-Spigot-db6de12-3f3c65f]                                                               
<------>at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [middle.jar:git-Spigot-db6de12-3f3c65f]                                                               
<------>at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:1315) [middle.jar:git-Spigot-db6de12-3f3c65f]                                                                 
<------>at net.minecraft.server.v1_8_R3.PacketPlayInUseEntity.a(SourceFile:52) [middle.jar:git-Spigot-db6de12-3f3c65f]                                                                         
<------>at net.minecraft.server.v1_8_R3.PacketPlayInUseEntity.a(SourceFile:11) [middle.jar:git-Spigot-db6de12-3f3c65f]                                                                         
<------>at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [middle.jar:git-Spigot-db6de12-3f3c65f]                                                                     
<------>at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_121]                                                                                               
<------>at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_121]                                                                                                              
<------>at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [middle.jar:git-Spigot-db6de12-3f3c65f]                                                                                   
<------>at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [middle.jar:git-Spigot-db6de12-3f3c65f]                                                                    
<------>at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [middle.jar:git-Spigot-db6de12-3f3c65f]                                                                    
<------>at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [middle.jar:git-Spigot-db6de12-3f3c65f]                                                                    
<------>at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [middle.jar:git-Spigot-db6de12-3f3c65f]                                                                  
<------>at java.lang.Thread.run(Thread.java:745) [?:1.8.0_121]                                                                                                                                 
Caused by: java.lang.NoSuchMethodError: org.bukkit.event.player.PlayerInteractEntityEvent.getHand()Lorg/bukkit/inventory/EquipmentSlot;                                                        
<------>at me.fromgate.reactions.RAListener.onPlayerClickMob(RAListener.java:183) ~[?:?]                                                                                                       
<------>at sun.reflect.GeneratedMethodAccessor173.invoke(Unknown Source) ~[?:?]                                                                                                                
<------>at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_121]                                                                                
<------>at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_121]                                                                                                                     
<------>at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[middle.jar:git-Spigot-db6de12-3f3c65f]                                                               
<------>... 15 more

майн 1.8.8, ProtocolLib v4.1.0
чуть позже попробую обновить ProtocolLib
 
Сообщения плагинов отлавливаются на уровне пакетов, через ProtocolLib. Версии сервера / ProtocolLib какие?
А версия PL никакая )) Я без неё тестировал... Как перетестирую, отпишусь.
Интересует такая штука, о плейсхолдере %random%:
Если я укажу %random:1,1,1,1,1,2,2,2,3,4% то шанс получить число 1=50%, 2=30%, 3=10% и 4=10%, правильно ?
А будет ли результат более случайным, если указать числа в хаотическом порядке, например [2,1,1,3,1,4,1,1,2,2] ?

И в какой момент определяется, какое этот плейсхолдер должен выдать число? В момент загрузки активатора в ОЗУ, или в момент применения активатора с этим плейсхолдером к игроку ?

Или он динамический? После загрузки, безперерывно бегает по циклу указанных в нём чисел и выбивает одно в момент активации ?
1730 активаторов, общий вес которых почти 3Мб это нормально ?
 
Если я укажу %random:1,1,1,1,1,2,2,2,3,4% то шанс получить число 1=50%, 2=30%, 3=10% и 4=10%, правильно ?
Правильно.
А будет ли результат более случайным, если указать числа в хаотическом порядке, например [2,1,1,3,1,4,1,1,2,2] ?
Не важно, какой порядок. Результат, в любом случае будет случайным.

И в какой момент определяется, какое этот плейсхолдер должен выдать число?
В момент применения игроком активатора с этим плейсхолдером.

Генератор случайных чисел выбирает не одно из ваших чисел, а порядковый номер расположения одного из ваших чисел.
 
Добрый день! Давненько не писал сюда, ибо функционала хватало, но вот захотелось странного, в связи с этим вопрос и предложение: сервак у меня настроен на жесткое выживание, со всеми приблудами - температура, усталость, жажда. Хочется сделать так, чтобы активировать ГУЙ печи можно было только огнивом или ведром лавы (типа, если есть, чем разжечь - то разжигай, а нет - так нет. Активатора, проверяющего клик по блоку в данном благословенном плагине нет. Тут собираются люди, которые делают сложные вещи, подскажите, плиз, есть ли плагин, реализующий взаимоотношения игрока и блоков по клику ПКМ? Версия 188. Спасибо.
 
А если чисто с точки зрения вероятности ??
Вероятность будет такой, какую вы и сами создали (%random:1,1,1,1,1,2,2,2,3,4% =>1=50%, 2=30%, 3=10% и 4=10%).
Генератор случайных чисел имеет равномерную вероятность для диапозона чисел.
 
Вероятность будет такой, какую вы и сами создали (%random:1,1,1,1,1,2,2,2,3,4% =>1=50%, 2=30%, 3=10% и 4=10%).
Генератор случайных чисел имеет равномерную вероятность для диапозона чисел.


Спасибо. Вы уже много чем помогли.

Но меня вот что ещё сейчас интересует: я пытаюсь переложить функцию локализации чата (как предложил человек несколькими постами выше) на реАкшнс (вместо ЕссентиалсЧат)

Для усиленого глобального: #Должен стоять первым, иначе не работает.
source: CHAT_INPUT
type: START
mask: '$$'
actions:
- 'CANCEL_EVENT=true'
- 'BROADCAST=%player_name% : %message%'

Для глобального:
source: CHAT_INPUT
type: START
mask: '$'
actions:
- 'CANCEL_EVENT=true'
- 'MESSAGE=player:{loc:%player_loc% radius:99999} %player_name% : %message%'

Для локального: #Должен стоять последним.
source: CHAT_INPUT
type: START
mask: ''
actions:
- 'CANCEL_EVENT=true'
- 'MESSAGE=player:{loc:%player_loc% radius:50} %player_name% : %message%'

...и есть 2 проблемы:

1. Из за CANCEL_EVENT сообщения не выводятся в лог. Выводится лишь пустая строка с ником.
Как это исправить? Может быть знаите плагин, у которого есть команда вывода заметки в лог? Тогда можна было бы дополнить формат действием в роде CMD_CONSOLE=Log %message%...

2. С этими активаторами плейсхолдер %message% выводит сообщение вместе с первым символом-маской. Можна ли его удалять и выводить сообщения без маски в начале??
Добрый день! Давненько не писал сюда, ибо функционала хватало, но вот захотелось странного, в связи с этим вопрос и предложение: сервак у меня настроен на жесткое выживание, со всеми приблудами - температура, усталость, жажда. Хочется сделать так, чтобы активировать ГУЙ печи можно было только огнивом или ведром лавы (типа, если есть, чем разжечь - то разжигай, а нет - так нет. Активатора, проверяющего клик по блоку в данном благословенном плагине нет. Тут собираются люди, которые делают сложные вещи, подскажите, плиз, есть ли плагин, реализующий взаимоотношения игрока и блоков по клику ПКМ? Версия 188. Спасибо.

И сразу чувствуешь себя частью чего-то большего. Одним из тех, кто делает эти сложные вещи...
 
Добрый день! Давненько не писал сюда, ибо функционала хватало, но вот захотелось странного, в связи с этим вопрос и предложение: сервак у меня настроен на жесткое выживание, со всеми приблудами - температура, усталость, жажда. Хочется сделать так, чтобы активировать ГУЙ печи можно было только огнивом или ведром лавы (типа, если есть, чем разжечь - то разжигай, а нет - так нет. Активатора, проверяющего клик по блоку в данном благословенном плагине нет. Тут собираются люди, которые делают сложные вещи, подскажите, плиз, есть ли плагин, реализующий взаимоотношения игрока и блоков по клику ПКМ? Версия 188. Спасибо.
Не знаю есть ли такой плагин, но написать мини-плагинчик, реализующий эту возможность довольно легко.
 
Не знаю есть ли такой плагин, но написать мини-плагинчик, реализующий эту возможность довольно легко.
Привет! Не возьмешься?
И сразу чувствуешь себя частью чего-то большего. Одним из тех, кто делает эти сложные вещи...
Это же отлично!
 
ЕРРОР: Нельзя использовать опцию hide в действии MESSAGE ( https://pastebin.com/AgqVFeLy )
Исправьте пожалуйсто, без неё плохо!

Есть идея с помощью пермишенов (в роли памяти для последующих флагов) и задержек между активаторами сделать так называемые лимитируемые чарджи: Какое-то действие, которое ты можеш использовать к примеру 3 раза подряд (3 заряда). Или 2 сразу, 1 потом, как угодно... А затем ждать пока каждый из зарядов восполнится. Откат каждого заряда должен ити независимо друг от друга, с момента его использования... Ноль зарядов=действие блокируется пока один не откатится...

Долго уже ломаю над этим голову, но пока не удалось написать правильную конфигурацию. Хотя я почти уверен что такая точно возможна.

Есть идеи ??
 
Последнее редактирование:
Какое-то действие, которое ты можеш использовать к примеру 3 раза подряд (3 заряда). Или 2 сразу, 1 потом, как угодно...
элементарно, использовать вложенные EXEC-активаторы, у каждого своя задержка.
 
ЕРРОР: Нельзя использовать опцию hide в действии MESSAGE ( https://pastebin.com/AgqVFeLy )
Исправьте пожалуйсто, без неё плохо!

Есть идея с помощью пермишенов (в роли памяти для последующих флагов) и задержек между активаторами сделать так называемые лимитируемые чарджи: Какое-то действие, которое ты можеш использовать к примеру 3 раза подряд (3 заряда). Или 2 сразу, 1 потом, как угодно... А затем ждать пока каждый из зарядов восполнится. Откат каждого заряда должен ити независимо друг от друга, с момента его использования... Ноль зарядов=действие блокируется пока один не откатится...

Долго уже ломаю над этим голову, но пока не удалось написать правильную конфигурацию. Хотя я почти уверен что такая точно возможна.

Есть идеи ??

Задать количество зарядов через переменную и, как указал товарищ выше, через EXEC активаторы восполнять заряды
 
Привет! Не возьмешься?
Не знаю, нужно ли вам ещё, но пускай будет тут
/harduse reload - перезагрузить конфиг. Условие OP или право harduse.reload
Создание "ограничений" в конфиге описано.
Обход ограничений - режим наблюдателя, креатив, OP или право harduse.bypass.all; для отдельного блока - harduse.bypass.блок
 

Вложения:

Задать количество зарядов через переменную и, как указал товарищ выше, через EXEC активаторы восполнять заряды
Через переменную наверное не получится, т.к. на эту память(пермишены) должны ориентироватся флаги из других плагинов. Тоесть сам пермишен должен быть этой переменной!
...Но сейчас буду пробывать, спс.
ВОЗМОЖНО ЛИ ВПРИНЦИПЕ...
создать фильтр, который мог бы отлавливать какой-то знак в начале/середине/конце текста, удалять его, и отправлять тот же текст но без этого знака??

я пытаюсь переложить функцию локализации чата (как предложил человек несколькими постами выше) на реАкшнс (вместо ЕссентиалсЧат)

Для усиленого глобального: #Должен стоять первым, иначе не работает.
source: CHAT_INPUT
type: START
mask: '$$'
actions:
- 'CANCEL_EVENT=true'
- 'BROADCAST=%player_name% : %message%'

Для глобального:
source: CHAT_INPUT
type: START
mask: '$'
actions:
- 'CANCEL_EVENT=true'
- 'MESSAGE=player:{loc:%player_loc% radius:99999} %player_name% : %message%'

Для локального: #Должен стоять последним.
source: CHAT_INPUT
type: START
mask: ''
actions:
- 'CANCEL_EVENT=true'
- 'MESSAGE=player:{loc:%player_loc% radius:50} %player_name% : %message%'

...и есть 2 проблемы:

1. Из за CANCEL_EVENT сообщения не выводятся в лог. Выводится лишь пустая строка с ником.
Как это исправить? Может быть знаите плагин, у которого есть команда вывода заметки в лог? Тогда можна было бы дополнить формат действием в роде CMD_CONSOLE=Log %message%...

2. С этими активаторами плейсхолдер %message% выводит сообщение вместе с первым символом-маской. Можна ли его удалять и выводить сообщения без маски в начале??
 
ВОЗМОЖНО ЛИ ВПРИНЦИПЕ...
создать фильтр, который мог бы отлавливать какой-то знак в начале/середине/конце текста, удалять его, и отправлять тот же текст но без этого знака??
Отлавливать возможно, но это будет немного не красиво. Но за неимением ничего другого, можно и это попробовать. Суть в следующем:
- весь текст сообщения отправляем в созданную вами таблицу MySQL.
- вытаскиваем этот текст из таблицы, предварительно отфильтровав его. В MySQL есть много способов фильтрации всего, что вам необходимо.

Я только, что попробовал, есть проще вариант:
Код:
SELECT SUBSTRING('$$test',3)
Здесь убираются два первых символа из текста! :)
Действие будет выглядеть следующим образом:
Код:
SQL_SELECT=query:{SELECT SUBSTRING("%message%",3)} variable:msg player:%player%
Этого очень не хватало мне для отладки активаторов. Если мне нужно было записать в лог, я просто отправлял запись с помощью команды say. Все, конечно, видели эту запись, что не очень было хорошо. Тогда я модифицировал ReActions, создав ещё одно действие под названием LOG, которое записывает в лог всё, что мне нужно.
Я, когда разберусь с ПулРеквестом, то попробую добавить свои изменения в плагин. Если, конечно автор не будет против.
 
Последнее редактирование:
Назад
Верх