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

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

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

  1. Skormino

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

    Баллы:
    61
    Имя в Minecraft:
    Skormino
    И тут ещё пару вопросов накатилось:
    Можно ли реаком отменить смерть?
    И ещё интересен такой вопрос: У меня есть система авто-шахты, которая сама восстанавливается, однако для её работоспособности в регионе mine на спавне разрешено ломать блоки. Главная проблема состоит в том, что будучи в регионе спавна можно ломать те блоки, что находятся в регионе mine, а в самом mine нельзя, ибо стоит фикс реаковский. Как можно не создавая новые регионы исправить эту беду? Дело в том, что вайпы у нас происходят по строгой схеме, и вот любые изменения на спавне как не крути откатятся, а создавать доп. регионы при каждом вайпы у нас не вариант, по этому нужно думать.
     
  2. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    А ему нужно обновление? Команды вроде не работали, а вот в РеА он ещё действовал.
    Отслеживай DAMAGE. Если урон выше здоровья - отменяй. Но есть проблема - там учитывается урон, который игнорирует броню, потому что в коде плагина не учтен finalDamage. Как обойти это, кроме как исправлением в коде плагина, не знаю.
    Честно говоря, не понял вопроса. Сможешь перефразировать?
     
  3. Skormino

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

    Баллы:
    61
    Имя в Minecraft:
    Skormino
    Задача по математике 8б класса :y
    Есть на спавне 2 региона, сам спавн и шахта.
    Шахта работает на основе реака, ей важно что бы ты сломал блок, и как раз в регионе шахты разрешено ломать блоки флагом block-break в WG.
    Будучи в регионе шахты все твои сломанные блоки отменяются, то есть не ломаются, но там они дают монеты и временно всё же восстанавливаются сломанные руды.
    Выйдя за приделы шахты и будучи на спавне шахту можно ломать и ничего не отменяется.
    При вайпе слетают все изменения, по этому создавать новые регионы нельзя.
    Поставить условием, что бы блоки отменялись при ломании и когда ты в регионе спавна - не вариант, потому что другие админы могут быть против.
     
  4. Kanne47

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

    Баллы:
    66
    Имя в Minecraft:
    Kanne47
    Привет всем, как сделать выполнение команды с определенным шансом?

    допустим есть команда /kick с шансом выполнения 90%, а есть команда /ban с шансом выполнения 10%
     
  5. Skormino

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

    Баллы:
    61
    Имя в Minecraft:
    Skormino
    Ты оказался прав, команды пусть и не запускаются от самого плейЭффекта, но эффекты отображаются при запуске их реаком, что очень круто.
     
  6. Skormino

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

    Баллы:
    61
    Имя в Minecraft:
    Skormino
    Не знаю почему, но при попытке вставить больше одного CALC VELOCITY по сути перестаёт действовать.
    %CALC:0+1%,1,1 - даёт эффект.
    %CALC:0+1%,%CALC:%0+1,%CALC:0+1% - ничего не делает.
     
  7. Skormino

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

    Баллы:
    61
    Имя в Minecraft:
    Skormino
    Интересно, можно ли самолично как то это исправить в коде, звучит почти как копипаста обычного полученного урона на всегда только итоговый урон :y
     
  8. Skormino

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

    Баллы:
    61
    Имя в Minecraft:
    Skormino
    Ещё эту систему сильно убивает то, что реак не видит НБТ теги, от чего появляются уже некоторые ограничения для моего рода деятельности.
     
  9. altf4

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

    Баллы:
    66
    Имя в Minecraft:
    _Thraal_
    Лучше порвать а*ус но перейти на Skript, поверь там есть всё. (Кроме манипуляции пакетами, но их можно туда всунуть правда это ближе к java)
     
  10. Skormino

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

    Баллы:
    61
    Имя в Minecraft:
    Skormino
    Моя главная проблема заключается в том, что Я с самого начала играл подручным одной моей знакомой. У неё было всё, а у меня только команды в игре. Так и получилось, что чаще всего Я пытался всё делать через чат, даже сейчас Я бы с нуля не написал простейшие скрипты чисто в конфиге. Моей участи не позавидуешь.
     
  11. Dodique

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

    Баллы:
    61
    Есть ли возможность задать Velocity какому-то иному энтити, помимо игрока?
     
  12. boomcss1

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

    Баллы:
    76
    Имя в Minecraft:
    Pup
    Хочу сделать так, что бы игрок мог при нажатии на сундук, получить награду только один раз. Сейчас игрок получает награду столько, сколько тыкнет на сундук. В чём может быть ошибка?
    Код:
      reward1:
        block-type: CHEST
        click-type: ANY
        location: world,-877.0,74.0,-376.0,0.0,0.0
        actions:
        - VAR_PLAYER_SET=id:1
        - CMD_OP=hero admin exp %player% warrior 10
        - MESSAGE=&eВам начислен опыт
        reactions:
        - if_else=if:{%VAR_EXIST%==1}
                    then:run:actions:{
                        action1:{MESSAGE=Вы уже открывали данный сундук.}
                        action2:{CANCEL_EVENT=true}
                    }
                    else:{}
     
  13. Dodique

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

    Баллы:
    61
    Полагаю - в том, что плейсхолдера %VAR_EXIST% не существует, или вместо "==1" необходимо использовать "==true".
     
  14. boomcss1

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

    Баллы:
    76
    Имя в Minecraft:
    Pup
    Код:
    [18:58:41 ERROR]: Could not pass event ItemClickEvent to ReActions v0.11.1
    java.lang.StringIndexOutOfBoundsException: begin 7, end 5, length 5
            at java.lang.String.checkBoundsBeginEnd(String.java:3751) ~[?:?]
            at java.lang.String.substring(String.java:1907) ~[?:?]
            at java.lang.String.substring(String.java:1880) ~[?:?]
            at org.bukkit.craftbukkit.v1_17_R1.legacy.CraftLegacy.name(CraftLegacy.java:246) ~[patched_1.17.1.jar:git-Paper-408]
            at me.fromgate.reactions.util.item.VirtualItem.compare(VirtualItem.java:1153) ~[ReActions (1).jar:?]
            at me.fromgate.reactions.util.item.VirtualItem.compare(VirtualItem.java:1107) ~[ReActions (1).jar:?]
            at me.fromgate.reactions.util.item.VirtualItem.compare(VirtualItem.java:1101) ~[ReActions (1).jar:?]
            at me.fromgate.reactions.util.item.ItemUtil.compareItemStr(ItemUtil.java:175) ~[ReActions (1).jar:?]
            at me.fromgate.reactions.activators.ItemClickActivator.activate(ItemClickActivator.java:58) ~[ReActions (1).jar:?]
            at me.fromgate.reactions.activators.Activator.executeActivator(Activator.java:231) ~[ReActions (1).jar:?]
            at me.fromgate.reactions.activators.Activators.activate(Activators.java:330) ~[ReActions (1).jar:?]
            at me.fromgate.reactions.util.listeners.RaListener.onItemClickActivator(RaListener.java:600) ~[ReActions (1).jar:?]
            at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor400.execute(Unknown Source) ~[?:?]
            at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:69) ~[patched_1.17.1.jar:git-Paper-408]
            at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[patched_1.17.1.jar:git-Paper-408]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[patched_1.17.1.jar:git-Paper-408]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[patched_1.17.1.jar:git-Paper-408]
            at me.fromgate.reactions.event.EventManager.raiseItemClickEvent(EventManager.java:173) ~[ReActions (1).jar:?]
            at me.fromgate.reactions.util.listeners.RaListener.onPlayerInteract(RaListener.java:430) ~[ReActions (1).jar:?]
            at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor420.execute(Unknown Source) ~[?:?]
            at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:69) ~[patched_1.17.1.jar:git-Paper-408]
            at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[patched_1.17.1.jar:git-Paper-408]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[patched_1.17.1.jar:git-Paper-408]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[patched_1.17.1.jar:git-Paper-408]
            at org.bukkit.craftbukkit.v1_17_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:543) ~[patched_1.17.1.jar:git-Paper-408]
            at org.bukkit.craftbukkit.v1_17_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:506) ~[patched_1.17.1.jar:git-Paper-408]
            at org.bukkit.craftbukkit.v1_17_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:501) ~[patched_1.17.1.jar:git-Paper-408]
            at org.bukkit.craftbukkit.v1_17_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:497) ~[patched_1.17.1.jar:git-Paper-408]
            at net.minecraft.server.network.ServerGamePacketListenerImpl.handleUseItem(ServerGamePacketListenerImpl.java:1867) ~[app:?]
            at net.minecraft.network.protocol.game.ServerboundUseItemPacket.handle(ServerboundUseItemPacket.java:28) ~[app:?]
            at net.minecraft.network.protocol.game.ServerboundUseItemPacket.a(ServerboundUseItemPacket.java:8) ~[app:?]
            at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$1(PacketUtils.java:56) ~[app:?]
            at net.minecraft.server.TickTask.run(TickTask.java:18) ~[patched_1.17.1.jar:git-Paper-408]
            at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:149) ~[app:?]
            at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:23) ~[app:?]
            at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1426) ~[patched_1.17.1.jar:git-Paper-408]
            at net.minecraft.server.MinecraftServer.executeTask(MinecraftServer.java:192) ~[patched_1.17.1.jar:git-Paper-408]
            at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:122) ~[app:?]
            at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1404) ~[patched_1.17.1.jar:git-Paper-408]
            at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1397) ~[patched_1.17.1.jar:git-Paper-408]
            at net.minecraft.util.thread.BlockableEventLoop.runAllTasks(BlockableEventLoop.java:110) ~[app:?]
            at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1536) ~[patched_1.17.1.jar:git-Paper-408]
            at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1282) ~[patched_1.17.1.jar:git-Paper-408]
            at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:319) ~[patched_1.17.1.jar:git-Paper-408]
            at java.lang.Thread.run(Thread.java:831) ~[?:?]
    
     
  15. spiralcrew

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

    Баллы:
    61
    Не особо понятно, на что ты рассчитываешь, если у тебя не написан никакой флаг. Reactions выполняется, если флаг не выполнился. А у тебя он каждый раз втупую выполняет все твои действия в actions
     
  16. MarcusKnight

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

    Баллы:
    61
    Я пытаюсь реализовать с помощью ReActions регенератор руды для авто-шахты. Суть в том, что бы сломанная руда через определённый промежуток времени восстанавливалась на том же месте. При реализации столкнулся с такой проблемой, что после ломания нескольких руд одного типа, восстанавливается только последний сломанный блок. Для временного решения этой проблемы, сделал громоздкий костыль, где для каждого блока руды пришлось прописать отдельную переменную, которая хранит координаты c %blockbreak% этого блока и всё это засунул в очередь. Я думаю это можно сделать куда проще и лучше, но не знаю как. Может кто подскажет более практичное решение?
    Код:
    REGION_ENTER:
      varon:
        region: spawn
        actions:
        - var_player_set=id:queue value:0
    BLOCK_BREAK:
      diamond:
        block: type:diamond_ore
        flags:
        - VAR_PLAYER_COMPARE=id:queue value:0
        actions:
        - VAR_PLAYER_SET=id:cord value:%blocklocation%
        - WAIT=time:1ms
        - var_player_set=id:queue value:1
        - WAIT=time:1ms
        - block_set=block:type:STONE loc:%varp:cord%
        - MESSAGE=&2+1$
        - WAIT=time:60s
        - block_set=loc:%varp:cord% block:diamond_ore
        - VAR_PLAYER_CLEAR=id:cord
      diamond1:
        block: type:diamond_ore
        flags:
        - VAR_PLAYER_COMPARE=id:queue value:1
        actions:
        - VAR_PLAYER_SET=id:cord1 value:%blocklocation%
        - WAIT=time:1ms
        - var_player_set=id:queue value:2
        - WAIT=time:1ms
        - block_set=block:type:STONE loc:%varp:cord1%
        - MESSAGE=&2+1$
        - WAIT=time:60s
        - block_set=loc:%varp:cord1% block:diamond_ore
        - VAR_PLAYER_CLEAR=id:cord1
      diamond2:
        block: type:diamond_ore
        flags:
        - VAR_PLAYER_COMPARE=id:queue value:2
        actions:
        - VAR_PLAYER_SET=id:cord2 value:%blocklocation%
        - WAIT=time:1ms
        - var_player_set=id:queue value:3
        - WAIT=time:1ms
        - block_set=block:type:STONE loc:%varp:cord2%
        - MESSAGE=&2+1$
        - WAIT=time:60s
        - block_set=loc:%varp:cord2% block:diamond_ore
        - VAR_PLAYER_CLEAR=id:cord2
      diamond3:
        block: type:diamond_ore
        flags:
        - VAR_PLAYER_COMPARE=id:queue value:3
        actions:
        - VAR_PLAYER_SET=id:cord3 value:%blocklocation%
        - WAIT=time:1ms
        - var_player_set=id:queue value:4
        - WAIT=time:1ms
        - block_set=block:type:STONE loc:%varp:cord3%
        - MESSAGE=&2+1$
        - WAIT=time:60s
        - block_set=loc:%varp:cord3% block:diamond_ore
        - VAR_PLAYER_CLEAR=id:cord3
      diamond4:
        block: type:diamond_ore
        flags:
        - VAR_PLAYER_COMPARE=id:queue value:4
        actions:
        - VAR_PLAYER_SET=id:cord4 value:%blocklocation%
        - WAIT=time:1ms
        - var_player_set=id:queue value:0
        - WAIT=time:1ms
        - block_set=block:type:STONE loc:%varp:cord4%
        - MESSAGE=&2+1$
        - WAIT=time:60s
        - block_set=loc:%varp:cord4% block:diamond_ore
        - VAR_PLAYER_CLEAR=id:cord4
     
    Последнее редактирование: 2 июн 2022
  17. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Ну, для начала, я бы все же предложил взять полноценный плагин для этого, а не пытаться реализовать на РеА. Так будет и быстрее, и эффективнее, и просто надежнее.

    Если же все же браться... Для начала, создать две переменные, например mined-next-id - она будет отвечать за установку id для каждого сломанного блока, и mined-pointer - будет указывать, какой id должен быть регенерирован позже. Обе переменные стоит заранее установить на 0. Также будет динамично генерировать переменные mined-<id>. Далее добавляем таймер на каждую секунду, который и будет заниматься регенерированием блоков.

    При разрушении нужного блока:
    - записываем %blocklocation% в переменную mined-%var:mined-next-id%;
    - делаем DELAY (действие) на необходимое время для mined-delay-%var:mined-next-id%;
    - увеличиваем mined-next-id на 1.

    Для таймера:
    - проверяем, истек ли DELAY (флаг) у mined-delay-%var:mined-pointer% (если нет, то ничего не делаем);
    - проверяем через VAR_GREATER, является ли переменная mined-pointer больше значения %var:mined-next-id% (если да, то ничего не делаем);
    - устанавливаем нужный блок на %var:mined-%var:mined-pointer%%;
    - очищаем переменную mined-%var:mined-pointer%, чтобы место не занимало;
    - увеличиваем mined-pointer на 1.

    Подмечу, что все должно делаться не в переменных игрока, а в обычных (VAR_CLEAR, VAR_SET и т.д.). Ну, и упомяну, что алгоритм придумал только что, и соответственно, не проверял работоспособность.
     
  18. spawnrys

    spawnrys Ньюби

    Баллы:
    1
    Имя в Minecraft:
    SPAWNRYS
    Красиво
     

    Вложения:

  19. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Померло, когда датацентр OVH сгорел. Вики осталась на гитхабе.
     
  20. Dinikin

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

    Баллы:
    66
    Имя в Minecraft:
    Dinikin
    Обновил плагин, перестали работать задержки в активаторе.

    EXEC:
    block_remove_parkur:
    actions:
    - execute=activator:block_remove delay:5s

    Активатор обрабатывает моментально. Раньше этот же код работал.
     

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