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

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

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

  1. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Каюсь, мой прокол. Название не "&eКлюч от сокровищницы", а "&e&oКлюч от сокровищницы"



    Тебе нужен активатор ITEM_CONSUME

    Код:
    ITEM_CONSUME:
      AntiPotion:
        item: type:potion
        flags:
        - delay_player=id:PotiWait set-time:5s
        reactions:
        - cancel_event=true


    Словил краш, буквально пару минут назад. Виноват ли в этом ReActions, TitleManager(исполняемая команда), или таки ядро PaperSpigot 1.11.2?
    Код:
    [19:09:23] [Async Chat Thread - #543/ERROR]: Command Dispatched Async: tm amsg -silent Dron_cor §f§l§nВ радиусе §e§l§n200 блоков§f§l§n нет игроков - вас §e§l§nникто не услышал
    [19:09:23] [Async Chat Thread - #543/ERROR]: Please notify author of plugin causing this execution to fix this bug! see: http://bit.ly/1oSiM6C
    java.lang.Throwable
        at org.bukkit.craftbukkit.v1_11_R1.CraftServer.dispatchCommand(CraftServer.java:657) [paperclip.jar:git-Paper-1060]
        at me.fromgate.reactions.actions.ActionCommand.execute(ActionCommand.java:52) [ReActions-1.0-SNAPSHOT.jar:?]
        at me.fromgate.reactions.actions.Action.executeAction(Action.java:73) [ReActions-1.0-SNAPSHOT.jar:?]
        at me.fromgate.reactions.actions.Actions.performAction(Actions.java:185) [ReActions-1.0-SNAPSHOT.jar:?]
        at me.fromgate.reactions.actions.Actions.executeActions(Actions.java:177) [ReActions-1.0-SNAPSHOT.jar:?]
        at me.fromgate.reactions.actions.Actions.executeActivator(Actions.java:148) [ReActions-1.0-SNAPSHOT.jar:?]
        at me.fromgate.reactions.activators.MessageActivator.activate(MessageActivator.java:121) [ReActions-1.0-SNAPSHOT.jar:?]
        at me.fromgate.reactions.activators.Activator.executeActivator(Activator.java:231) [ReActions-1.0-SNAPSHOT.jar:?]
        at me.fromgate.reactions.activators.Activators.activate(Activators.java:287) [ReActions-1.0-SNAPSHOT.jar:?]
        at me.fromgate.reactions.RAListener.onMessageEvent(RAListener.java:473) [ReActions-1.0-SNAPSHOT.jar:?]
        at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor517.execute(Unknown Source) [?:?]
        at org.bukkit.plugin.EventExecutor$1.execute(EventExecutor.java:44) [paperclip.jar:git-Paper-1060]
        at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:74) [paperclip.jar:git-Paper-1060]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) [paperclip.jar:git-Paper-1060]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:517) [paperclip.jar:git-Paper-1060]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:502) [paperclip.jar:git-Paper-1060]
        at me.fromgate.reactions.event.EventManager.raiseMessageEvent(EventManager.java:428) [ReActions-1.0-SNAPSHOT.jar:?]
        at me.fromgate.reactions.externals.RAProtocolLib$1.onPacketSending(RAProtocolLib.java:127) [ReActions-1.0-SNAPSHOT.jar:?]
        at com.comphenix.protocol.injector.SortedPacketListenerList.invokeSendingListener(SortedPacketListenerList.java:195) [ProtocolLib.jar:4.2.1-SNAPSHOT-b347]
        at com.comphenix.protocol.injector.SortedPacketListenerList.invokePacketSending(SortedPacketListenerList.java:149) [ProtocolLib.jar:4.2.1-SNAPSHOT-b347]
        at com.comphenix.protocol.injector.PacketFilterManager.handlePacket(PacketFilterManager.java:608) [ProtocolLib.jar:4.2.1-SNAPSHOT-b347]
        at com.comphenix.protocol.injector.PacketFilterManager.invokePacketSending(PacketFilterManager.java:584) [ProtocolLib.jar:4.2.1-SNAPSHOT-b347]
        at com.comphenix.protocol.injector.netty.ProtocolInjector.packetQueued(ProtocolInjector.java:309) [ProtocolLib.jar:4.2.1-SNAPSHOT-b347]
        at com.comphenix.protocol.injector.netty.ProtocolInjector.onPacketSending(ProtocolInjector.java:269) [ProtocolLib.jar:4.2.1-SNAPSHOT-b347]
        at com.comphenix.protocol.injector.netty.ChannelInjector.processSending(ChannelInjector.java:396) [ProtocolLib.jar:4.2.1-SNAPSHOT-b347]
        at com.comphenix.protocol.injector.netty.ChannelInjector.access$500(ChannelInjector.java:77) [ProtocolLib.jar:4.2.1-SNAPSHOT-b347]
        at com.comphenix.protocol.injector.netty.ChannelInjector$5.handleScheduled(ChannelInjector.java:362) [ProtocolLib.jar:4.2.1-SNAPSHOT-b347]
        at com.comphenix.protocol.injector.netty.ChannelInjector$5.onMessageScheduled(ChannelInjector.java:330) [ProtocolLib.jar:4.2.1-SNAPSHOT-b347]
        at com.comphenix.protocol.injector.netty.ChannelProxy$2.schedulingRunnable(ChannelProxy.java:127) [ProtocolLib.jar:4.2.1-SNAPSHOT-b347]
        at com.comphenix.protocol.injector.netty.EventLoopProxy.execute(EventLoopProxy.java:95) [ProtocolLib.jar:4.2.1-SNAPSHOT-b347]
        at net.minecraft.server.v1_11_R1.NetworkManager.a(NetworkManager.java:198) [paperclip.jar:git-Paper-1060]
        at net.minecraft.server.v1_11_R1.NetworkManager.sendPacket(NetworkManager.java:143) [paperclip.jar:git-Paper-1060]
        at net.minecraft.server.v1_11_R1.PlayerConnection.sendPacket(PlayerConnection.java:1100) [paperclip.jar:git-Paper-1060]
        at org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer.sendRawMessage(CraftPlayer.java:148) [paperclip.jar:git-Paper-1060]
        at org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer.sendMessage(CraftPlayer.java:155) [paperclip.jar:git-Paper-1060]
        at com.earth2me.essentials.User.sendMessage(User.java:772) [EssentialsX-2.0.1.jar:?]
        at com.earth2me.essentials.chat.EssentialsChatPlayerListenerNormal.onPlayerChat(EssentialsChatPlayerListenerNormal.java:110) [EssentialsXChat-2.0.1.jar:?]
        at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor442.execute(Unknown Source) [?:?]
        at org.bukkit.plugin.EventExecutor$1.execute(EventExecutor.java:44) [paperclip.jar:git-Paper-1060]
        at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:74) [paperclip.jar:git-Paper-1060]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) [paperclip.jar:git-Paper-1060]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:517) [paperclip.jar:git-Paper-1060]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:499) [paperclip.jar:git-Paper-1060]
        at net.minecraft.server.v1_11_R1.PlayerConnection.chat(PlayerConnection.java:1299) [paperclip.jar:git-Paper-1060]
        at net.minecraft.server.v1_11_R1.PlayerConnection.a(PlayerConnection.java:1214) [paperclip.jar:git-Paper-1060]
        at net.minecraft.server.v1_11_R1.PacketPlayInChat$1.run(PacketPlayInChat.java:39) [paperclip.jar:git-Paper-1060]
        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 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_121]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_121]
        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_121]

    upd: теперь каждый раз крашится на этот активатор
     
    Последнее редактирование: 19 мар 2017
  2. Dankis

    Dankis Активный участник

    Баллы:
    61
    Имя в Minecraft:
    Dankis
    @fromgate,
    Как идея добавить в новой версии активатор Block-break что бы при поломке блоки он срабатывал?Желательно на версию 1.7.10
     
  3. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    @fromgate
    Я набрался смелости и по Вашим кодам скомпилировал плагин, предварительно добавив, некоторую важную для себя функциональность. Возможно, эти изменения очень помогут другим серверчанам. Вот, что мне было необходимо и я это реализовал:
    1. Мне очень не хватало плейсхолдера для группы флагов FLAG_SET, т.е. мне нужно было знать, какой флаг из группы срабатывал. Да, Вы сделали возможность получить плейсхолдер для каждого флага, но не для группы, что очень сильно бы упростило написание активаторов.
    Например, мне нужно узнать в каком мире находиться игрок или к какой группе он принадлежит. Раньше для этого я делал рекурсивный активатор, который находил нужное мне значение и это занимало некоторое время. Но теперь всё делается за один проход:
    Код:
      exec_get_player_donate:
        flags:
        - FLAG_SET=GROUP:default GROUP:fly GROUP:vip GROUP:vipp GROUP:god GROUP:mvp GROUP:mvpp GROUP:creative
        actions:
        - MESSAGE=%GROUP_FLAG%
    
    На мой взгляд, это очень полезная штука. Для этого я, всего лишь, добавил одну строчку в файл Flags.java
    Код:
     
          public static boolean checkFlag(Player p, String flag, String param, boolean not) {
              Flags ft = Flags.getByName(flag);
              if (ft == null) return false;
              Variables.setTempVar(new StringBuilder(flag).append("_flag").toString().toUpperCase(), param);
              boolean check = ft.check(p, param);
              if (not) return !check;
              return check;
          }
    
    
    2. Ещё одно, не менее важное изменение. Я добавил ещё один статус игрока, который срабатывает, когда игрок находится в режиме вселившегося внутрь другой сущности. В этом состоянии игрок или группа игроков может беспрепятственно проходить путь внутри другого игрока. При этом ни один из активаторов не срабатывает для вселившихся. Это состояние я назвал SPECTATOR_TARGET.
    Для этого, я добавил немного кода в файл FlagState.java:
    Код:
        public boolean checkFlag(Player p, String param) {
            Posture pt = Posture.getByName(param);
            if (pt == null) return false;
            switch (pt) {
                .................
                .................
                case SPECTATOR_TARGET:
                    if (p.getSpectatorTarget() != null) return true;        }
            return false;
        }
      enum Posture {
      SNEAK,
      SPRINT,
      STAND,
      VEHICLE,
      VEHICLE_MINECART,
      VEHICLE_BOAT,
      VEHICLE_PIG,
      VEHICLE_HORSE,
      FLY,
      OP,
      SPECTATOR_TARGET;
    
    Я не буду вставлять сюда скомпилированный мной jar-файл, это будет не правильно по отношению к автору. Но надеюсь, что эти дополнения будут внедрены в ваш замечательный плагин.

    Есть ещё одна важная вещь. Уж очень необходима возможность выполнять активаторы от игрока, который находится в offline. Например, нужно узнать к какой группе принадлежит этот игрок или просто, много других вещей, которые необходимо знать, когда игрока нет на сервере. Я это обходил, путём создания дополнительных переменных, и по ним определял, то что мне нужно. Но это привело к значительному увеличению количества активаторов и действий в них. А также сильно возрос файл переменных у меня он уже занимает 10МБ и при том, что online на сервере не значительный. Я уже задумался добавлять эти переменные в таблицу MySQL, но это всё равно ненужные данные, если появится возможность получать информацию об игроке, находящегося в оффлайне.
    Для решения этой проблемы я уже копал в сторону класса OfflinePlayer, но ещё не понял как внедрить в этот плагин. Всё-таки я надеюсь, такая возможность появится в скором будущем.

    Спасибо.

    Я не верный код вставил по файлу Flags.java, поэтому отредактировал пост
     
    Последнее редактирование: 19 мар 2017
  4. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @maxdikiy Так это... пулреквестом может сразу? ;)
     
  5. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    Спасибо.

    Не понял, крашится при использовании активатора ITEM_CONSUME ??
    У меня есть пару активаторов, которые выполняют команды типа give/summon. В них ооочень огромный синтаксис (включая всякие там названия, лоры и проч...) и один такой активатор буквально создаёт спам на 50-70 строк в консоли. Это немного много мешает... Можна как-то решить ??
    Не понимаю в чем разница между %PLAYER_NAME% и %PLAYER_DISPLAY% ??
    В каких случаях имя игрока может "отличаться от обычного"? Разве его можна как-то изменять??
    При срабатывании ITEM_WEAR действия вылезает еррор: http://pastebin.com/8faYSxfK
    [upd] Еррора нет лишь в том случае, когда на месте где должен быть одет предмет уже есть что-то другое...

    Версия пагина #26 (CircleCI)
    Spigot build #986 (1.10.2)


    [ВАЖНО] Почему нельзя добавить синтаксис полноценных дефолтных команд в рамках действия ITEM_SLOT к примеру??

    ----- 'ITEM_SLOT=item:wooden_shovel 1 0 {
    ----display:{
    ------Name: "Item name",
    ------Lore:[
    ------"Lore1",
    ------"Lore2",
    ------"Lore3"]},
    ----ench:[{id:34, lvl:120} ],
    ----HideFlags:63}'
    ----slot:17

    Тоесть взять предмет: [id] [Count] [Damage] {dataTags}

    и поместить его в слот №17. + правила, что должно случится если на этом месте уже что-то есть.
    Теми параметрами <предмета>, которые есть в РеАкшнс сейчас нельзя даже флаг прикрепить к предмету...
     
    Последнее редактирование: 21 мар 2017
  6. Pinkierar

    Pinkierar Новичок Пользователь

    Баллы:
    6
    Skype:
    metilan111
    Имя в Minecraft:
    Pinkierar
    Ребят, как скрыть сообщение?
    [ReActions] Warning! VELOCITY_JUMP action is under construction. In next version of plugin it could be changed, renamed or removed!
    Оно выводится в консоль при использовании Действия VELOCITY_JUMP
     
  7. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @imDaniX
    @Pinkierar
    Попробуйте последние билды с CircleCI
    @Kixot14
    Вроде исправил, смотрите последний билд.
     
  8. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    Предмет теперь можна выдать и одеть действием ITEM_WEAR, но еррор всё ещё присутствует когда слот брони пуст. Правда присутствует как-то через раз... Немогу уловить когда именно http://pastebin.com/BVtYCk6n


    А можете добавить HideFlags NBT теґ в опции <предмета> ?
    7-й по счету http://minecraft.gamepedia.com/Tutorials/Command_NBT_tags

    Или его и сейчас можна каким то боком прикрутить ?
    БАГ: когда ты в креативе, действие item_unwear иногда удаляет(а иногда дюпает) предмет (примерно каждое 7-е использование...). Даже когда указано item-action:undress

    P.S. кстате, оно (ITEM_UNWEAR) есть, но его почему то не указано в этом списке действий http://reactions.fromgate.ru/index.html?actions.htm
     
    Последнее редактирование: 22 мар 2017
  9. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @Kixot14
    В текущий вариант всё что касается NBT прикрутить не получится. Я планировал сделать отдельный плагин (даже написал его - там в помимо прочего было что-то вроде базы данных предметов), но так и не допилил взаимодействие ReActions и этого плагина.
    @Kixot14 Ага, теперь эта в другом месте вылезала, вроде починил.
    Попробую потестить. Хорошо бы как-то выяснить действие при котором вылезает ошибка.

    Ну исходники этой документации утеряны. Вопрос с удобным движком для документации открыт ;)
     
  10. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    Но повторюсь, это только когда в креативе. Ошибок не наблюдаю в консоли... Может быть какая-то дефолтная анти-дюп протекция.
    Можна ли добавить такую штуку:

    Когда у тебя в ITEM_UNWEAR добавлена опция item-action:undress, то когда заполнен инвентарь, этот предмет просто исчезает (снимается и исчезает). Можна ли в случае нехватки места в инвентаре добавить ещё одну опцию что бы заменить item-action:undress на что-то другое?? (дроп к примеру. Или переложить в enderchest/сохранить в базу...).

    Или добавить новый флаг, который мог бы проверять сколько свободных слотов есть
    Тоесть помимо всех этих функций описаных в данной документации, в РеАкшнс сейчас есть ещё много нового ??
     
  11. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @Kixot14 item-action:undress работает так - если инвентарь занят, то дропает где-то рядом с игроком.
    Про эндерчест - это интересный вариант, надо подумать
     
  12. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    Да, так и работает, извеняюсь. Первый раз тестировал в креативе, и там немного по другому. Предмет всё так же дропает когда нету места, но этот дроп сразу же поглощается и исчезает. В то время как в gm0 он продолжает лежать на земле
    Есть ещё идея при дропе предмета (когда нехватка места) выдавать этому предмету временной тег, что бы на протяжении допустим 5-ти минут его немог поднять никто кроме владельца
     
  13. Pinkierar

    Pinkierar Новичок Пользователь

    Баллы:
    6
    Skype:
    metilan111
    Имя в Minecraft:
    Pinkierar
    Пожалуйста, можно ссылочку? Ни как не разобрался с этим сайтом...
     
  14. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    Залогинься через GitHub!
     
  15. Pinkierar

    Pinkierar Новичок Пользователь

    Баллы:
    6
    Skype:
    metilan111
    Имя в Minecraft:
    Pinkierar
    Да, но как попасть к билдам?
     
  16. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
  17. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    Сделайте возможность сортировать активаторы по директориям... Очень неудобно когда их многo
    А так же возможность отключения некоторых сообщений из реакшнс...
    Какая то ошибка при использовании действия ITEM_REMOVE_INVENTORY - http://pastebin.com/QseGi2Kx
    При действии ITEM_REMOVE (без INVENTORY) такой ошибки нет.
    Ошибка при попытке "восстановления" предмета с помощью плейсхолдера %item_str%
    http://pastebin.com/cz7vwdJT
    (возможно из-за того что реАкт поддерживает не все NBT теґи...)
     
    Последнее редактирование: 23 мар 2017
  18. Pinkierar

    Pinkierar Новичок Пользователь

    Баллы:
    6
    Skype:
    metilan111
    Имя в Minecraft:
    Pinkierar
    @fromgate
    Спасибо! А так же спасибо за плагин :)
    Всё же считаю его языком программирования:whistle::good:
     
  19. AtomicScience

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

    Баллы:
    76
    Имя в Minecraft:
    AtomicScience
    Вообще-то, возможность убрать сообщения из реакшонса есть:
    upload_2017-3-23_19-50-19.png
     
  20. boomcss1

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

    Баллы:
    76
    Имя в Minecraft:
    Pup
    Ну что, знатоки этого чудесного плагина. Нуждаюсь в вашей помощи.
    Суть:
    Есть дверь(двери) которые должны быть открыты только в опр. промежутки времени. Т.е. с 2 до 3 скажем они открыты.
     

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