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

Плагин [ADMIN] Re:ReActions | Простейший скриптовый плагин (1.20.6+)

Тема в разделе "Неподтвержденные плагины", создана пользователем imDaniX, 6 сен 2019.

  1. MRT

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

    Баллы:
    61
    [13:45:39 INFO]: [ReActions] Registering 'ReActions' module (by fromgate, MaxDikiy, imDaniX)
    [13:45:39 ERROR]: [ReActions] Error initializing plugin 'ReActions.jar' in folder 'plugins' (Is it up to date?)
    java.lang.NoClassDefFoundError: com/comphenix/protocol/events/PacketListener
    at fun.reactions.module.basic.BasicModule.preRegister(BasicModule.java:38) ~[ReActions.jar:?]
    at fun.reactions.module.ModulesRegistry.register(ModulesRegistry.java:65) ~[ReActions.jar:?]
    at fun.reactions.module.ModulesRegistry.registerModule(ModulesRegistry.java:54) ~[ReActions.jar:?]
    at fun.reactions.ReActionsPlugin.onLoad(ReActionsPlugin.java:104) ~[ReActions.jar:?]
    at io.papermc.paper.plugin.storage.ServerPluginProviderStorage.processProvided(ServerPluginProviderStorage.java:59) ~[paper-1.19.4.jar:git-Paper-550]
    at io.papermc.paper.plugin.storage.ServerPluginProviderStorage.processProvided(ServerPluginProviderStorage.java:18) ~[paper-1.19.4.jar:git-Paper-550]
    at io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:40) ~[paper-1.19.4.jar:git-Paper-550]
    at io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:36) ~[paper-1.19.4.jar:git-Paper-550]
    at org.bukkit.craftbukkit.v1_19_R3.CraftServer.loadPlugins(CraftServer.java:431) ~[paper-1.19.4.jar:git-Paper-550]
    at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:273) ~[paper-1.19.4.jar:git-Paper-550]
    at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1104) ~[paper-1.19.4.jar:git-Paper-550]
    at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:320) ~[paper-1.19.4.jar:git-Paper-550]
    at java.lang.Thread.run(Thread.java:840) ~[?:?]
    Caused by: java.lang.ClassNotFoundException: com.comphenix.protocol.events.PacketListener
    at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:183) ~[paper-api-1.19.4-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:150) ~[paper-api-1.19.4-R0.1-SNAPSHOT.jar:?]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?]
    ... 13 more
     
  2. Автор темы
    imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Повторю два ответа ранее: 1) один из модулей требует ProtocolLib, 2) рекомендую качать дев.билды.
    В последнем билде требование в ProtocolLib исправлено, теперь он опционален. Можно остаться на релизе 0.14.4, но на сервере будет требоваться ProtocolLib.
     
  3. Автор темы
    imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Два связанных изменения (дополнения) для плейсхолдеров:
    - Добавлен плейсхолдер function (либо funct). Он вызывает активатор типа FUNCTION (раньше EXEC) и возвращает значение, указанное в локальной переменной return.
    - Малость переписан модуль PlaceholderAPI. Теперь в нём возможно использовать все плейсхолдеры ReActions.

    Таким образом можно накрутить кастомный плейсхолдер, который можно использовать повсюду.
    Код:
    FUNCTION:
      donate-description:
        actions:
        - run_function=id:donate-description1
      donate-description1:
        flags:
        - permission=donate.highest
        actions:
        - local_var=id:return value:{У вас самый высокий донат на сервере!}
        reactions:
        - run_function=id:donate-description2
      donate-description2:
        flags:
        - permission=donate.normal
        actions:
        - local_var=id:return value:{У вас средний донат, есть куда расти!}
        reactions:
        - run_function=id:donate-description3
      donate-description3:
        flags:
        - permission=donate.lowest
        actions:
        - local_var=id:return value:{У вас низший донат на сервере!}
        reactions:
        - local_var=id:return value:{У вас ещё нет доната!}
    И для вывода в других плагинах просто использовать %reactions_funct:donate-description%. В пределах ReA плейсхолдер будет доступен как %[funct:donate-description].
     
  4. DiZet

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

    Баллы:
    66
    Приветствую. Снова появилась проблема. Хочу через действие IF_ELSE в активаторе ITEM_CLICK уведомить игрока о том, что был использован такой-то предмет:
    Код:
    IF_ELSE=if:{/.+SWORD/.test("%[item-str]")} then:run:{actions:{
      action2:{MESSAGE=Вы использовали &e%[item-str]}}} else:{}
    Но не срабатывает. Пытался даже в апострофы действие заключить - ноль реакции
     
  5. Автор темы
    imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Даже если бы оно работало, я рекомендую передумать так делать. IF_ELSE использует под капотом JavaScript, а это значит, что технически могут выполняться любые действия с сервером. Сейчас это действие называется JS_CONDITIONAL, что лучше отражает его суть.
    Как ты используешь его сейчас - любой может добавить в название предмета собственный JS код и по сути взломать сервер.

    Возвращаясь к проблеме:
    1. Добавь ещё скобки для then, а-ля "then:{run:{actions:{...}}}"
    2. Список действий начинай с action1.
    3. Убедись, что нет сообщения "Couldn't find JS engine for JS_CONDITIONAL action." - оно может возникать при первом запуске действия. Это значит, что на сервере никак не поставляется JavaScript, необходимый для работы действия. Можешь попробовать поставить плагин JSEngine.

    Я пока не планирую удалять это действие полностью, но оно точно будет заменено безопасной и понятной альтернативой.
     
  6. DiZet

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

    Баллы:
    66
    Большое спасибо, проблема решилась: действительно была ошибка из-за отсутствия плагина! На счет IF_ELSE пока нашел подходящей альтернативы
     
    Последнее редактирование: 17 фев 2024
  7. DiZet

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

    Баллы:
    66
    В общем, мне эта хромая кобыла загубила целый файл activators, над которым я парился чуть ли не месяц. Ни бэкапов, ни откатов ничего нет. Произошло это после того, как я ввел команду /rea create MESSAGE chatguard:
    Код:
    [16:24:06 WARN]: [ReActions] Plugin ReActions v0.14.5-SNAPSHOT-gh302 generated an exception while executing task 109
    java.lang.NullPointerException: Cannot invoke "org.bukkit.entity.EntityType.name()" because "this.entityType" is null
            at fun.reactions.module.basic.activators.EntityClickActivator.saveOptions(EntityClickActivator.java:55) ~[ReActions-0.14.5-SNAPSHOT.jar:?]
            at fun.reactions.model.activators.Activator.saveActivator(Activator.java:39) ~[ReActions-0.14.5-SNAPSHOT.jar:?]
            at fun.reactions.model.activators.ActivatorsManager.saveGroup(ActivatorsManager.java:200) ~[ReActions-0.14.5-SNAPSHOT.jar:?]
            at fun.reactions.model.activators.ActivatorsManager.lambda$saveGroup$2(ActivatorsManager.java:172) ~[ReActions-0.14.5-SNAPSHOT.jar:?]
            at org.bukkit.craftbukkit.v1_20_R1.scheduler.CraftTask.run(CraftTask.java:101) ~[paper-1.20.1.jar:git-Paper-196]
            at org.bukkit.craftbukkit.v1_20_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57) ~[paper-1.20.1.jar:git-Paper-196]
            at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) ~[paper-1.20.1.jar:?]
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
            at java.lang.Thread.run(Thread.java:840) ~[?:?]
    
    Было бы хорошо, если бы этот Франкенштейн умел хотя бы делать копии при ошибках...
     
    Последнее редактирование: 4 мар 2024
  8. Автор темы
    imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Добавил временные рельсы на подобный случай. Система копий давно требовалась, для того же сохранения невалидных активаторов. Посмотрю, что можно сделать в ближайшем будущем.
    Если вдруг каким-то чудом сервер до сих пор не перезагружался, а /ra reload не использовался - файл можно в теории восстановить посредством удаления активатора через команду - тогда файл будет сохранён из памяти сервера.
     
  9. DiZet

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

    Баллы:
    66
    Очень напрягает работа с командами, на самом деле. Пытаюсь по разным синтаксисам (из вики или внутреннего справочника) создать или удалить какой-нибудь активатор/переменную, либо выдает ошибку, либо пишет, что создано успешно, но конфиг при этом умножается на ноль
     
  10. Автор темы
    imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX

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