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

Можно ли сделать такой таймер, чтобы через X времени происходило одно действие, ещё через X другое, потом ещё... и когда их список окончится - пойдёт всё по новому кругу?
----------------------------------------
Есть идея сделать это так:
таймер в X*кол-во_действий, но при его выполнении - стартует активатор, который выполняет первое действие, дальше задержка на X, потом второе... ну и так далее.
но вдруг есть и другой способ.
Легко:
Для начала, делаем активатор, который запускает другие активаторы.
Проверяем каждый новый активатор на соответствие глобальной переменной по арифметической прогрессии. Когда активатор выполняется, он добавляет к глобальной переменной одно значение. Когда будет новый цикл исполнения той группы активаторов, исполнится тот, значение переменной которого соответствует значению, которое установлено во флагах. Когда дойдёт до последнего - просто сбрасывать на то число, которое проверяется в первом активаторе.

С задержками будет посложнее. Можно попробовать действие остановки таймера через несколько промежутков времени в активаторе, который идёт за требуемым.
@fromgate
Зачем делать акцент на версии, где я играю? Ведь, это же положительный опыт как для Вас, так и для других разработчиков. На версии 1.5.2 играет большинство игроков, которые просто не понимают как обновится. И это, пока что, лучшая аудитория для развития. Да и в чём проблема делать обновление и для старых версий, если наименования и значения событий не изменяются?
А даже если и изменяются, почему бы не делать проверку на версию сервера, а далее уже использовать тот алгоритм, который поддерживает версия? Пусть это будет немного дольше, чем просто написать обнову, но за то Вы подаёте пример другим разработчикам, как действительно следует делать обновления.
Сколько раз я находил хороший плагин, который просто не способен работать на старой версии из-за какого-то мелкого изменения типа новой точки? Казалось бы: один параметр, а использовать уже нельзя.

Ну и плюс к крутости русской нации. Я не видел ни одного западного плагина, который бы смог заменить кучу других плагинов, стандартные возможности редстоуна и ещё улучшить их! Ваш плагин - лучшее для людей, которые умеют думать. Не останавливайтесь и покажите, что русские умеют не только бомбы делать :)
27. В качестве локации можно указывать регион по координатам. Это хорошо. Ещё лучше, если можно было бы указывать регион, который будет "вычитаться" из начального. С помощью этого можно организовать мобов-боссов по всей карте без переписывания всего ядра! Это было бы реально круто :)
 
Последнее редактирование:
@Lyosha12
Я заострил внимание на версии потому что было сказано следующее:
P.S. Как по мне (ИМХО) так для reaction было бы полезно расширение функционала а не оптимизирование его под плагины для старых версий майна. Хотя, возможно, оптимизация была легче в плане написания кода. Я в этом даже не любитель поэтому сказать точно не могу.

По этой логике мне надо было просто сделать версию RA под 1.8, а всем кто хочет новый функционал - рекомендовать обновиться до 1.8. Выпускать отдельно версии плагина под 1.4.7 (на одном сервере под ReActions используют эту версию), под 1.5.2 и т.д. не хочется. Хочется чтобы одна версия работала под всеми более менее актуальными версиями сервера. А с этим, к сожалению, есть сложности. Так что возможно дальше "модульность" плагина будет расти.
 
@fromgate, не сдавайтесь и идите к лучшему результату! :)
 
Последнее редактирование:
@fromgate, как вариант:
Делать обновления, но если версия не позволяет - просто блокировать доступ к новой части кода, чтобы не было ошибок. Это скомпилируется и запустится)
 
Мало тех, кто сидит на 1.8.
@fromgate, как вариант:
Делать обновления, но если версия не позволяет - просто блокировать доступ к новой части кода, чтобы не было ошибок. Это скомпилируется и запустится)
Согласен, такой вариант всех устроит.

Мне лично сейчас ReActions позволяет делать 99.9% того, что я придумываю :) И это радует.
 
28. Возвращаемся к теме сохранения инвентаря. Расширение: переменный инвентарь!
Суть так же, что и с переменными. Только гораздо круче. Действием предмет, что находится в руке, будет сохранятся в "личный инвентарь" игрока. Так можно делать до того момента, пока количество предметов не будет заполнять все 36 слотов инвентаря. Другим действием можно было бы выдавать весь этот комплект, что игрок сохранил. А так же возможность обнулять и удалять личные инвентари у всех или одного игрока.
С "глобальными инвентарями" аналогично.
Соответственно, если это "переменный инвентарь", то для каждого игрока он будет своим. И будет не один. :)

Хранить это всё предлагаю в отдельной папке, где будет ещё 2 папки: личные и глобальные инвентари, в которых будут соответствующие файлы. И, может быть, потребуется функция совмещения разных инвентарей в одном файле.

Данная структура будет наиболее удобная. Ну, можно и разделить просто на два файла. Но, тогда их размер будет расти даже не в геометрической, а в экспоненциальной прогрессии. И фиг их откроешь потом :D
29. Всё чаще нужна "собирательная" функция переменных. То есть, нужно выполнить действие в активаторе, проверить активатором MESSAGE, что оно выполнено, задать переменную и вернуться к первому активатору.
Знаю, что "вернуться к первому" нельзя, так как он уже отработал. Поэтому я просто его дублирую и проверяю результат на дубликате. Как следствие, нужна некая последовательность действий. Например: COMMAND-MESSAGE-COMMAND, чего добиться в одном конфиге нельзя.
 
А как спавнить мобов из модов?
 
@Lyosha12
Я заострил внимание на версии потому что было сказано следующее:


По этой логике мне надо было просто сделать версию RA под 1.8, а всем кто хочет новый функционал - рекомендовать обновиться до 1.8. Выпускать отдельно версии плагина под 1.4.7 (на одном сервере под ReActions используют эту версию), под 1.5.2 и т.д. не хочется. Хочется чтобы одна версия работала под всеми более менее актуальными версиями сервера. А с этим, к сожалению, есть сложности. Так что возможно дальше "модульность" плагина будет расти.
Я имел ввиду не совсем это. Просто не хотелось бы чтобы всё то время (которого по всей видимости - мало), которое вы можете потратить на улучшение плагина добавив новых активаторов или чего либо ещё, Вы тратили на его оптимизацию для старых версий, вместо того чтобы добавлять что-то новое. Этим я не хочу сказать что Вы что-то должны мне или кому то ещё. Вам решать чем заниматься в плагине и заниматься ли вообще.
P.S. Не переходите пожалуйста на 1.8. Во-первых, себе работы добавите (вроде бы с кодом придётся поработать); во-вторых, 95% русского "трафика" сидит максимум на 1.7.9
 
А как спавнить мобов из модов?
Честно - не знаю. Я модами практически не пользовался, потому смутно там представляю как там всё работает. Подозреваю, что никак не получится...
Моды командами спавнить мобов не позволяют? Можно было бы от имени консоли команду запускать.
 
Честно - не знаю. Я модами практически не пользовался, потому смутно там представляю как там всё работает. Подозреваю, что никак не получится...
Моды командами спавнить мобов не позволяют? Можно было бы от имени консоли команду запускать.
А можно ли будет создавать свои яйца призыва, используя неиспользуемые ID и имена яиц? Или же, пользоваться яйцами из EpicBoss? Например, спавнить босса в такой-то точке с параметрами из EpicBoss.
 
Подскажите как можно сделать: когда игрок убивает 100 зомби у него будет получено достижение и будет написано только ему в чат, что он сделал достижение и в плагине chestcommands в отдельной вкладке меню достижений будет иконка, на которой будет написано вы еще не получили это достижение, для выполнения убейте 100 зомби и когда игрок убивает 100 зомби эта иконка поменяет название на выполнено и откроется новый товар в меню магазина, также в этом плагине chestcommands, подскажите как это осуществить ?
 
Подскажите как можно сделать: когда игрок убивает 100 зомби у него будет получено достижение и будет написано только ему в чат, что он сделал достижение и в плагине chestcommands в отдельной вкладке меню достижений будет иконка, на которой будет написано вы еще не получили это достижение, для выполнения убейте 100 зомби и когда игрок убивает 100 зомби эта иконка поменяет название на выполнено и откроется новый товар в меню магазина, также в этом плагине chestcommands, подскажите как это осуществить ?
Никак. @fromgate,
30. Активатор убийства мобов (не раз предлагали)
31. Действие изменения конфигов других плагинов. Правда, вряд ли в chestcommands есть "личный инвентарь". Может, можно было бы организовать с помощью GUI и личных активаторов... Ну, Вы понимаете :D
 
Последнее редактирование:
Никак. @fromgate,
30. Активатор убийства мобов (не раз предлагали)
31. Действие изменения конфигов других плагинов. Правда, врадли в chestcommands есть "личный инвентарь". Может, можно было бы организовать с помощью GUI и личных активаторов... Ну, Вы понимаете :D
Очень печально, а хотелось бы это всё сделать, придется доучивать Java и писать свой плагин
 
С последней версией есть проблемы. Засыпает ошибками типа:
[21:34:25 ERROR]: Could not pass event PlayerMoveEvent to ReActions v0.9.4
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
va:299) ~[spigot-1.7.9-R0.3-SNAPSHOT.jar:git-Spigot-1543]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
a:62) ~[spigot-1.7.9-R0.3-SNAPSHOT.jar:git-Spigot-1543]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
ava:502) [spigot-1.7.9-R0.3-SNAPSHOT.jar:git-Spigot-1543]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
ava:487) [spigot-1.7.9-R0.3-SNAPSHOT.jar:git-Spigot-1543]
at net.minecraft.server.v1_7_R3.PlayerConnection.a(PlayerConnection.java
:248) [spigot-1.7.9-R0.3-SNAPSHOT.jar:git-Spigot-1543]
at net.minecraft.server.v1_7_R3.PacketPlayInFlying.a(SourceFile:137) [sp
igot-1.7.9-R0.3-SNAPSHOT.jar:git-Spigot-1543]
at net.minecraft.server.v1_7_R3.PacketPlayInPosition.handle(SourceFile:6
3) [spigot-1.7.9-R0.3-SNAPSHOT.jar:git-Spigot-1543]
at net.minecraft.server.v1_7_R3.NetworkManager.a(NetworkManager.java:184
) [spigot-1.7.9-R0.3-SNAPSHOT.jar:git-Spigot-1543]
at net.minecraft.server.v1_7_R3.ServerConnection.c(ServerConnection.java
:81) [spigot-1.7.9-R0.3-SNAPSHOT.jar:git-Spigot-1543]
at net.minecraft.server.v1_7_R3.MinecraftServer.v(MinecraftServer.java:7
31) [spigot-1.7.9-R0.3-SNAPSHOT.jar:git-Spigot-1543]
at net.minecraft.server.v1_7_R3.DedicatedServer.v(DedicatedServer.java:2
84) [spigot-1.7.9-R0.3-SNAPSHOT.jar:git-Spigot-1543]
at net.minecraft.server.v1_7_R3.MinecraftServer.u(MinecraftServer.java:5
84) [spigot-1.7.9-R0.3-SNAPSHOT.jar:git-Spigot-1543]
at net.minecraft.server.v1_7_R3.MinecraftServer.run(MinecraftServer.java
:490) [spigot-1.7.9-R0.3-SNAPSHOT.jar:git-Spigot-1543]
at net.minecraft.server.v1_7_R3.ThreadServerApplication.run(SourceFile:6
28) [spigot-1.7.9-R0.3-SNAPSHOT.jar:git-Spigot-1543]
Caused by: java.lang.NullPointerException
at me.fromgate.reactions.externals.wgbridge.RAWorldGuard.isConnected(RAW
orldGuard.java:91) ~[?:?]
at me.fromgate.reactions.event.EventManager.raiseRegionEvent(EventManage
r.java:255) ~[?:?]
at me.fromgate.reactions.RAListener.onPlayerMove(RAListener.java:320) ~[
?:?]
at sun.reflect.GeneratedMethodAccessor58.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1
.7.0_55]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_55]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
va:296) ~[spigot-1.7.9-R0.3-SNAPSHOT.jar:git-Spigot-1543]
... 13 more
 
Версия WG какая? 0.9.4 по умолчанию работает с WG6.0. Выше написано как его запустить с WG5.x
 
Последнее редактирование:
Новый ролик из серии "для самых маленьких", в смысле для начинающих ;)

 
Новый ролик из серии "для самых маленьких", в смысле для начинающих ;)

Как всегда, @fromgate, упрощаете жизнь людям :)
@fromgate, спасайте. Как-никогда нужно GUI-меню. Или я что-то не правильно писал, или несовместимость, как предполагали Вы. Ещё не проверили? :(
 
@fromgate, спасайте. Как-никогда нужно GUI-меню. Или я что-то не правильно писал, или несовместимость, как предполагали Вы. Ещё не проверили? :(

Дайте мне файлик где меню настроено. Я попробую разобраться.
 
Дайте мне файлик где меню настроено. Я попробую разобраться.
Хорошо, сейчас быстренько создам ещё раз...
Первый вариант:
Код:
EXEC:
  ExecTest:
    flags: []
    actions:
    - message=&7Тест 1
    reactions: []
COMMAND:
  Test:
    command: cmd:test
    flags: []
    actions:
    - MENU_ITEM=size:9 title:{§0Магазин §5Quasar'a} slot1:Тест_1$3 exec1:ExecTest
    reactions: []

Вариант с меню:
Код:
COMMAND:
  Test:
    command: cmd:test
    flags: []
    actions:
    - MENU_ITEM=menu:test
    reactions: []
Само menu.yml
Код:
test:
  title: §0Магазин §5Qasar'a
  size: 9
  slot1:
    item: DIRT
    activator: ExecTest
Оба не работают.
32. Дополняю тему о активаторе, который бы срабатывал в определённом радиусе от точки. Можно сделать срабатывание относительно определённого блока в радиусе, по ID (и имени, если установленный блок сохраняет имя). Так же сделать три типа: нахождение в радиусе, вход в радиус и выход. (А активаторы региона можно было бы объединить в один, просто создав три подтипа).
Ещё круче, если бы был и флаг такого активатора. Эдакий динамический радиус-регион.
 
Последнее редактирование:
Назад
Верх