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

я тут тоже задумался, что переменные, могут и мне помочь, и именно в описании уже существующих предметов, а так как я по своей природе ленивый, то упростил себе работу так:
Код:
COMMAND:
  varart:
    override: true
    regex: false
    command: varart
    flags:
    - GROUP=admin
    actions:
    - var_set=%arg1% %PLAYER_ITEM_HAND%
и теперь просто беру предмет в руку и пишу команду /varart название_переменной и предмет в переменной, а я радуюсь)))
 
Новый вопрос:

Имеется плагин, VoxelSniper, у него есть функция выбора размера кисти (Команда: /b <размер>) и надо сделать так, чтобы его нельзя было задавать больше 5, иначе игрок просто может крашнуть сервер, но и при этом нужен пермишен, потому что архитекторам как никак нужны размеры более масштабные, то есть перм будет убирать ограничение.
 
и теперь просто беру предмет в руку и пишу команду /varart название_переменной и предмет в переменной
Ну, как вариант, только для этого предмет нужно взять в руку, а у меня почти все они выпадают дропом из полу- мини- микро- и просто боссов, а EXEC'и я под них не писал, поэтому - проще копировать текст :)
Имеется плагин, VoxelSniper,
тут вроде как обсуждают ReAction
 
Новый вопрос:

Имеется плагин, VoxelSniper, у него есть функция выбора размера кисти (Команда: /b <размер>) и надо сделать так, чтобы его нельзя было задавать больше 5, иначе игрок просто может крашнуть сервер, но и при этом нужен пермишен, потому что архитекторам как никак нужны размеры более масштабные, то есть перм будет убирать ограничение.
Значит, требуется установить ограничение на команду /b x<6, и право на /b x ∈ Z
Так как выполнение события в один тик не требуется, то мы можем растянуть действие проверки размера.

При вводе команды мы её отменяем, а аргумент x перегоняем в переменную. Вторая переменная будет содержать ник того, кто ввёл команду.

Вызываем EXEC, где проверяется условие VAR_LOWER=id:x value:6. Если верно, то выполняем CMD_OP=b x.
Если нет - кастомное сообщение о несоответствии.

Однако, т.к. ограничение можно обойти, нам нужно два активатора EXEC. Первый будет, собственно, для игроков, которые вводят радиус менее 6, а команда успешно выполняется; второй же для тех, кто вводит недопустимый радиус и не имеет соответствующего права. Для них в actions выводим сообщение об кастомной ошибке.

Параллельно в другом EXEC проверяем относительно исполнителя команды, есть ли у него кастомное право "p.x". Если есть, то без дополнительных условий выполняем ввод нужной команды от имени оператора.

Если что непонятно в литеральной части этой логики - пиши, покажу фрагменты активаторов.
 
@Lyosha12
Мне кажется можно описать активатор-команду через регулярку. Что-то вроде: "b (\d{2,}|[6-9])", а в действие влепить сообщение что так нельзя отмену события
 
@Lyosha12
Мне кажется можно описать активатор-команду через регулярку. Что-то вроде: "b (\d{2,}|[6-9])", а в действие влепить сообщение что так нельзя отмену события
Тоже вариант... Два активатора, в одном на права, в другой без прав... Мозг начинает усыхать без администрирования :D
@fromgate, а будет ли эвент роста зелени? Майн хочет вырастить дерево, а ReActions это ловит и обкладывает своими событиями. Интересно может получиться. Очень интересно. Очень-очень. ОЧЕНЬ. У меня прямо шквал идей взорвался в голове....
@fromgate, можно ли будет отслеживать дроп с блоков (любых) и изменять его, не изменяя траекторию? Например, майнкрафт хочет призвать саженец с исчезнувшей листвы. ReActions это перехватывает и изменяет саженец на, например, алмазный блок. Почему бы и нет? Можно же?
@fromgate, можно ли будет контролировать передачу предметов между игроками?
 
@fromgate, можно ли будет контролировать передачу предметов между игроками?
по этому поводу я думал - в том ключе, чтобы уники друг другу не передавали, а сами добывали, и придумал, чтобы в название уника вставлять плейсхолдер %player%.
 
Тоже вариант... Два активатора, в одном на права, в другой без прав... Мозг начинает усыхать без администрирования :D

Может это лучше в командах, либо же в видео конфига ? У меня просто мозг сейчас взорвется :D
 
по этому поводу я думал - в том ключе, чтобы уники друг другу не передавали, а сами добывали, и придумал, чтобы в название уника вставлять плейсхолдер %player%.
Я бы хотел без посторонних телодвижений: активатор получения предмета от определённого игрока с возможностью задания параметров соответствия (переменные, уровень, деньги, игровой режим и т.д.). При чём он должен работать в любой ситуации: перекладывать из сундука в сундук, выбрасывать из дроппера, смерть, выпадение из блока с инвентарём.
Аналогично нужно поступить и с активатором "передачи предмета" - работает при попадании предмета в инвентарь другого игрока.

Ну и, конечно же, это всё должно быть работоспособно и при выходе одного из испытуемых из игры.
Может это лучше в командах, либо же в видео конфига ? У меня просто мозг сейчас взорвется :D
Задавайте вопросы по тем участкам описания, которые не понятны. Смысл, если я полностью напишу систему? Вы же ни чему не научитесь.
 
@fromgate вот эта команда:
я
Код:
COMMAND:
  varart:
    override: true
    regex: false
    command: varart
    flags:
    - GROUP=admin
    actions:
    - var_set=%arg1% %PLAYER_ITEM_HAND%
добавляет переменную в файл в таком виде:
Код:
general:
  ? bow10 type:BOW data:0 amount:1 enchantments:DURABILITY:5;ARROW_INFINITE:1;ARROW_FIRE:1;ARROW_KNOCKBACK:5;ARROW_DAMAGE:8 name:{&6Лук &2из Железного Дерева} lore:{Индивидуальный артефакт} regex:false
  : ''
Вопросительный знак перед именем переменной, это нормально?
 
@fromgate вот эта команда:

добавляет переменную в файл в таком виде:
Код:
general:
  ? bow10 type:BOW data:0 amount:1 enchantments:DURABILITY:5;ARROW_INFINITE:1;ARROW_FIRE:1;ARROW_KNOCKBACK:5;ARROW_DAMAGE:8 name:{&6Лук &2из Железного Дерева} lore:{Индивидуальный артефакт} regex:false
  : ''
Вопросительный знак перед именем переменной, это нормально?
У вас нет первого аргумента, чтобы создавать переменную с именем %arg1%.
 
У вас нет первого аргумента
В смысле нет? когда я ввожу команду, я пишу название переменной, то есть этот аргумент и сама переменная создается, все нормально, просто меня смущает этот вопросительный знак.
 
В смысле нет? когда я ввожу команду, я пишу название переменной, то есть этот аргумент и сама переменная создается, все нормально, просто меня смущает этот вопросительный знак.
Возможно, создание будет адекватным, если использовать REGEX.
 
Я REGEX, вообще обхожу стороной, так как пока абсолютно не понял что это такое и с чем его едят, где можно почитать о регулярных выражениях?
http://regex101.com/
Вбиваешь в ReActions то выражение, по которому он будет искать команду. Однако, нужно быть осторожным: можно сделать так, что будет реагировать и на посторонние команды.
 
http://regex101.com/
Вбиваешь в ReActions то выражение, по которому он будет искать команду. Однако, нужно быть осторожным: можно сделать так, что будет реагировать и на посторонние команды.
спасибо, буду вникать.
Наконец у меня дошли руки к обновлению плагина до последней версии, занимаюсь переписыванием активаторов и столкнулся с такой проблемкой:
YAML:
BUTTON:
  loto:
    world: millennium
    x: 37659
    y: 90
    z: -38424
    flags:
    - ITEM=type:PAPER data:0 name:{&6Cчастливый &5билет &9v4 &eСУПЕР &cЛОТО}
    - '!GROUP=shadow'
    actions:
    - item_remove=type:PAPER data:0 amount:1 name:{&6Cчастливый &5билет &9v4 &eСУПЕР &cЛОТО}
    - message=&41111111111111111111111111111111111111111111
Активатор срабатывает, но в лог выдает такую ошибку:
Код:
[00:16:27] [Server thread/ERROR]: Could not pass event ItemClickEvent to ReActions v0.9.9
org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[middle.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[middle.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:509) [middle.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:494) [middle.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at me.fromgate.reactions.event.EventManager.raiseItemClickEvent(EventManager.java:150) [ReActions.jar:?]
    at me.fromgate.reactions.RAListener.onPlayerInteract(RAListener.java:341) [ReActions.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_85]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_85]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_85]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_85]
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:298) [middle.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) [middle.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:509) [middle.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:494) [middle.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:242) [middle.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at net.minecraft.server.v1_7_R4.PlayerInteractManager.interact(PlayerInteractManager.java:382) [middle.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java:662) [middle.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at net.minecraft.server.v1_7_R4.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:50) [middle.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at net.minecraft.server.v1_7_R4.PacketPlayInBlockPlace.handle(PacketPlayInBlockPlace.java:86) [middle.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:186) [middle.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at net.minecraft.server.v1_7_R4.ServerConnection.c(ServerConnection.java:81) [middle.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:734) [middle.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:289) [middle.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:584) [middle.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:490) [middle.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [middle.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
Caused by: java.lang.NullPointerException
    at me.fromgate.reactions.activators.ItemClickActivator.activate(ItemClickActivator.java:30) ~[?:?]
    at me.fromgate.reactions.activators.Activator.executeActivator(Activator.java:230) ~[?:?]
    at me.fromgate.reactions.activators.Activators.activate(Activators.java:288) ~[?:?]
    at me.fromgate.reactions.RAListener.onItemClickActivator(RAListener.java:472) ~[?:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_85]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_85]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_85]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_85]
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:298) ~[middle.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    ... 25 more
что у меня неправильно?
Стоп! А вдруг, этиу ошибку выдает другой активатор, ItemClick, ща пойду перепроверять...
 
Мне кажется... Или пробелы не так расставлены?
Уже не актуально, ошибка точно была в другом активаторе, а здесь все нормально, с пробелами вроде тоже.
И сразу другой вопрос, есть предмет:
Код:
EXEC:
  give-ltr-sword:
    flags:
    - DELAY_PLAYER=give-ltr-sword
    actions:
    - DELAY_PLAYER=604800/give-ltr-sword
    - item_give=type:DIAMOND_SWORD data:0 amount:1 enchantments:DAMAGE_UNDEAD:5;DAMAGE_ALL:7;KNOCKBACK:2;DAMAGE_ARTHROPODS:5;FIRE_ASPECT:7 name:{&6Gladius &2Меч легионера} lore:{Клановый артефакт\nПринадлежит клану\n(Legion the revived)}

На могу понять, почему на него, вообще никак не реагирует этот активатор:
Код:
ITEM_CLICK:
  fireball-art-ltr:
    item: type:DIAMOND_SWORD name:{&6Gladius &2Меч легионера}
    flags:
    - DELAY_PLAYER=id:fireball-art-ltr set-time:10
    - GAMEMODE=survival
    actions:
    - message=&2[&5Оружейник&2] &3- &4Получилось
    - cmd_op=fireball
    reactions:
    - message=&2[&5Оружейник&2] &3- &4Не получилось
 
Последнее редактирование:
Уже не актуально, ошибка точно была в другом активаторе, а здесь все нормально, с пробелами вроде тоже.
И сразу другой вопрос, есть предмет:
Код:
EXEC:
  give-ltr-sword:
    flags:
    - DELAY_PLAYER=give-ltr-sword
    actions:
    - DELAY_PLAYER=604800/give-ltr-sword
    - item_give=type:DIAMOND_SWORD data:0 amount:1 enchantments:DAMAGE_UNDEAD:5;DAMAGE_ALL:7;KNOCKBACK:2;DAMAGE_ARTHROPODS:5;FIRE_ASPECT:7 name:{&6Gladius &2Меч легионера} lore:{Клановый артефакт\nПринадлежит клану\n(Legion the revived)}

На могу понять, почему на него, вообще никак не реагирует этот активатор:
Код:
ITEM_CLICK:
  fireball-art-ltr:
    item: type:DIAMOND_SWORD name:{&6Gladius &2Меч легионера}
    flags:
    - DELAY_PLAYER=id:fireball-art-ltr set-time:10
    - GAMEMODE=survival
    actions:
    - message=&2[&5Оружейник&2] &3- &4Получилось
    - cmd_op=fireball
    reactions:
    - message=&2[&5Оружейник&2] &3- &4Не получилось
Попробуй использовать REGEX в имени?
 
Назад
Верх