Войти или зарегистрироваться

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

Ого! Это самый запрашиваемый активатор :)
Спасибо. Я довольро-таки хорошо разобрался в Вашем плагине, теперь создавать активаторы или действия не составляет особого труда.
Этот активатор я ещё не достаточно хорошо проверил. Поэтому, буду ждать комментарии первых тестировщиков.

Спасибо.
 
Описание изменений от @maxdikiy

Новый активатор Block_Click

Применение:
Этот активатор срабатывает, когда игрок кликает по блоку левой или правой кнопкой мыши. Он даёт возможность контролировать действия над блоками. Можно запретить как уничтожения блоков так и их установку. Можно применять эти правила, как для одного блока, так и группы блоков. Активатор можно настроить на запрет открытия любого инвентаря, который открывается при клике на соответствующие блоки (CHEST, HOPPER, BEACON, ... и т.п. ).

/react add BLOCK_CLICK <ИмяАктиватора> [type:<ТипМатериала>] [click:left | right | any] [location:<loc>]

type - тип материала блока. Может принимать пустое значение, если необходимо отслеживать воздействия на все типы блоков.
click: <left | right | any> - какой клик мыши по блоку необходимо отслеживать.
location:<loc> - координаты блока, который необходимо контролировать.
Временные плейсхолдеры, действующие в этом активаторе:
%blocktype% - тип блока
%blocklocation% - координаты блока
%click% - "left" или "right" в зависимости от того какой кнопкой мыши кликнули по блоку.

Примеры:

1. Запрет на редактирование мира. Нельзя ни поставить блоки, ни сломать их:
/react add BLOCK_CLICK bc
/react add bc a CANCEL_EVENT true
или
Код:
BLOCK_CLICK:
bc:
block-type: ''
click-type: ANY
actions:
- CANCEL_EVENT=true
2. Запрет открытия всех сундуков в мире:
/react add BLOCK_CLICK bc2 type:CHEST click:right
/react add bc2 a CANCEL_EVENT true
или
Код:
BLOCK_CLICK:
bc2:
block-type: CHEST
click-type: RIGHT
actions:
- CANCEL_EVENT=true
В этом примере, если click-type: LEFT, то запрещено будет разбивать все сундуки, но разрешено открывать. Если click-type: ANY, то будет запрещено и разбивать и открывать сундуки.

3. Контроль только над одним сундуком (блоком):
/react add BLOCK_CLICK bc3 type:CHEST click:right loc:world,100,60,100
/react add bc3 a CANCEL_EVENT true
или
Код:
BLOCK_CLICK:
bc3:
block-type: CHEST
click-type: RIGHT
location: world,100,60,100
actions:
- CANCEL_EVENT=true
где location: world,100,60,100 - координаты сундука

4. Запретить ломать определённые блоки в мире:
/react add BLOCK_CLICK bc4 click:left
/react add bc4 f COMPARE param:%blocktype% value1:GOLD_BLOCK value2:GRASS value3:STONE
/react add bc4 a CANCEL_EVENT true
или
Код:
BLOCK_CLICK:
bc4:
block-type: ''
click-type: LEFT
flags:
- COMPARE=param:%blocktype% value1:GOLD_BLOCK value2:GRASS value3:STONE
actions:
- CANCEL_EVENT=true
Можно ещё много вещей придумать с этим активатром.
 
Боже! Спасибо Вам! Наконец-то это произошло :lol:
Уже бегу пробовать) Ещё Block_Break и было бы шикарно!
Кстати, можно ли добавить click: middle для колеса мыши?
 
Спасибо @maxdikiy :)

Я там немного добавил - если тип блоки и координаты не указаны явно, то по команде /react add block_click активатору будут назначаться координаты блока, на который смотришь.
 
Я там немного добавил - если тип блоки и координаты не указаны явно, то по команде /react add block_click активатору будут назначаться координаты блока, на который смотришь.
Замечательно! :)
Как раз это я уже делаю. Возможно, даже не только будет click: middle, но и все типы кликов:
https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/inventory/ClickType.html
 
вау!!! нет слов. Вопрос только - как оно на 188 пойдет?
 
вау!!! нет слов. Вопрос только - как оно на 188 пойдет?

По идее - да. Если что-то вылезет (двуручие какое-то - будут ошибки в логе сервера), пишите.

Сейчас ещё подправил. ООООЧЕНЬ давно хотел сделать. Изменения чисто техническое - оптимизировал код, касающийся команды /react add активатор. Благодаря этом будет чуть меньше геморроя при добавлении новых активаторов.

Поэтому если вдруг эта команда начнёт себя странно вести - тоже сообщайте.
 
Поэтому если вдруг эта команда начнёт себя странно вести - тоже сообщайте.
Объясните тупому, где там по ссылке качать, у меня че-то затмение. Тестировать буду сегодня же - задумок на него море, сервер приблизится к своему идеалу весьма заметно. Еще раз - огромное спасибо!
 
Объясните тупому, где там по ссылке качать, у меня че-то затмение. Тестировать буду сегодня же - задумок на него море, сервер приблизится к своему идеалу весьма заметно. Еще раз - огромное спасибо!
Вот ссылка на страницу:
https://circleci.com/gh/fromgate/ReActions/40#artifacts/containers/0
Там найдёте ссылку на скачивания: ReActions-1.0-SNAPSHOT.jar
 
Вот ссылка на страницу:
https://circleci.com/gh/fromgate/ReActions/40#artifacts/containers/0
Там найдёте ссылку на скачивания: ReActions-1.0-SNAPSHOT.jar
спасибо!
PS на 188 подцепился без проблем, сейчас затестирую.
Рапортую: Блоки обрабатываются правильно, но перестал работать флаг ITEM - проверка предмета в руке у игрока. ITEM_INVENTORY работает исправно. Версия 1.8.8 Перепроверил специально - поставил старую версию - все отлично, новая (40-я) - не видит в руке предмет.

в лог пишет следующее:
[03:51:28 INFO]: [ReActions] Methods "getItemInHand" and "getItemInMainHand" are not declared in PlayerInventory class

Я подозреваю, что это связано с версией. Очень прошу - сделайте вариант под 1.8.8
 
Последнее редактирование:
А как там с обрезанием символа-маски активатора MESSAGE ?
 
@fromgate
Я добавил ещё один активатор INVENTORY_CLICK в пуллреквест. Взгляните пожалуйста.
Спасибо.
Добавлен новый активатор INVENTORY_CLICK

https://circleci.com/gh/fromgate/ReActions/42#artifacts/containers/0

Этот активатор срабатывает, когда игрок выполняет действия с инвентарём с помощью мыши или клавиш.
/react add INVENTORY_CLICK <ИмяАктиватора> [click:< ClickType >]

click: < ClickType > - Тип клика, из-за которого сработал активатор. Поддерживаемые типы:
CONTROL_DROP, CREATIVE, DOUBLE_CLICK, DROP, LEFT, MIDDLE, NUMBER_KEY, RIGHT, SHIFT_LEFT, SHIFT_RIGHT, UNKNOWN, WINDOW_BORDER_LEFT, WINDOW_BORDER_RIGHT
По умолчанию click: ANY - срабатывает при любом действии.

Временные плейсхолдеры, действующие в этом активаторе:
%click% - показывает, на какое действие сработал активатор.

Примеры:

1. Покажем тип клика из-за которого сработал активатор
/react add INVENTORY_CLICK ic
/react add ic a message %click%
или
Код:
INVENTORY_CLICK:
  ic:
    click-type: ANY
    actions:
    - message=%click%
2. Запретим вытаскивать предметы из креатива
/react add INVENTORY_CLICK ic2 click:CREATIVE
/react add ic2 a CANCEL_EVENT true
или
Код:
INVENTORY_CLICK:
  ic2:
    click-type: CREATIVE
    actions:
    - CANCEL_EVENT=true
 
@fromgate
Я обратил внимание, что вы немного подправили код активатора. Это то, до чего, я вчера ни как не мог допереть, по причине нехватки опыта/знаний в java. Теперь, по этому примеру я дополню активатор INVENTORY_CLICK дополнительными возможностями.

Да, и ещё, я выполняю кодинг проекта в notepad++, а синтаксис проверяю на этапе компиляции с помощью gradlew. Знаю, это не красиво, поэтому, попытался поднять проект в eclipse, но чего-то у меня не вышло.
Есть ли способ, без особых усилий, поднять проект ReActions в eclipse?

Спасибо.
 
Попробуйте билд #43
Да, спасибо большое, теперь активатор работает. Это было из-за наличия двух рук в 1.9 и выше?

в лог постоянно гадит следующее:

[14:54:45 ERROR]: Could not pass event PlayerInteractEntityEvent to ReActions v0.9.11
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot_server.jar:git-Spigot-5f38d38-18fbb24]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot_server.jar:git-Spigot-5f38d38-18fbb24]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:1315) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
at net.minecraft.server.v1_8_R3.PacketPlayInUseEntity.a(SourceFile:52) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
at net.minecraft.server.v1_8_R3.PacketPlayInUseEntity.a(SourceFile:11) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [?:1.7.0_121]
at java.util.concurrent.FutureTask.run(FutureTask.java:262) [?:1.7.0_121]
at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
at java.lang.Thread.run(Thread.java:745) [?:1.7.0_121]
Caused by: java.lang.NoSuchMethodError: org.bukkit.event.player.PlayerInteractEntityEvent.getHand()Lorg/bukkit/inventory/EquipmentSlot;
at me.fromgate.reactions.RAListener.onPlayerClickMob(RAListener.java:186) ~[?:?]
at sun.reflect.GeneratedMethodAccessor280.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_121]
at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_121]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot_server.jar:git-Spigot-5f38d38-18fbb24]
... 15 more
 
Последнее редактирование:
Да, и ещё, я выполняю кодинг проекта в notepad++, а синтаксис проверяю на этапе компиляции с помощью gradlew. Знаю, это не красиво, поэтому, попытался поднять проект в eclipse, но чего-то у меня не вышло.
Есть ли способ, без особых усилий, поднять проект ReActions в eclipse?
Спасибо.

По идее там можно как-то имортировать проект. Я уже не помню. Но в любом случае рекомендую Intellij IDEA. Версия Community Edition у них бесплатна, а работа с github'ом сделана на голову лучше чем в Eclipse. Да и вообще после IDEA возвращаться обратно в Eclipse совсем не хочется.
Да, спасибо большое, теперь активатор работает. Это было из-за наличия двух рук в 1.9 и выше?

в лог постоянно гадит следующее:

Ага, это ещё одна несовместимость. Посмотрю.
 
еще проблема с совместимостью: активатор REGION_ENTER не работает, пишет в лог:
[20:07:09 WARN]: [ReActions] Task #334596 for ReActions v0.9.11 generated an exception
java.lang.IncompatibleClassChangeError: Found class com.sk89q.worldguard.protection.ApplicableRegionSet, but interface was expected
at me.fromgate.reactions.module.wgbridge.WGBridge5x.getRegions(WGBridge5x.java:44) ~[?:?]
at me.fromgate.reactions.module.wgbridge.WGBridge5x.getRegions(WGBridge5x.java:52) ~[?:?]
at me.fromgate.reactions.module.wgbridge.WGBridge5x.isPlayerInRegion(WGBridge5x.java:76) ~[?:?]
at me.fromgate.reactions.externals.RAWorldGuard.isPlayerInRegion(RAWorldGuard.java:107) ~[?:?]
at me.fromgate.reactions.event.EventManager.setFutureRegionCheck(EventManager.java:337) ~[?:?]
at me.fromgate.reactions.event.EventManager.raiseRegionEvent(EventManager.java:327) ~[?:?]
at me.fromgate.reactions.event.EventManager.access$000(EventManager.java:65) ~[?:?]
at me.fromgate.reactions.event.EventManager$3$1.run(EventManager.java:297) ~[?:?]
at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftTask.run(CraftTask.java:71) ~[spigot_server.jar:git-Spigot-5f38d38-18fbb24]
at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:350) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:723) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
at java.lang.Thread.run(Thread.java:745) [?:1.7.0_121]
 
@fromgate
Я добавил еще несколько возможностей в активатор INVENTORY_CLICK. Посмотрите пожалуйста
Спасибо.
 
Попробуйте ещё раз - вроде эти две ошибки должный уйти.
в 44 сборке - осталиcь проблемы, связанные с активаторами REGION_ENTER и REGION
в 48 сборке - кажется тоже:
[03:05:43 WARN]: [ReActions] Task #368 for ReActions v0.9.11 generated an exception
java.lang.IncompatibleClassChangeError: Found class com.sk89q.worldguard.protection.ApplicableRegionSet, but interface was expected
at me.fromgate.reactions.module.wgbridge.WGBridge5x.getRegions(WGBridge5x.java:44) ~[?:?]
at me.fromgate.reactions.module.wgbridge.WGBridge5x.getRegions(WGBridge5x.java:52) ~[?:?]
at me.fromgate.reactions.module.wgbridge.WGBridge5x.isPlayerInRegion(WGBridge5x.java:76) ~[?:?]
at me.fromgate.reactions.externals.RAWorldGuard.isPlayerInRegion(RAWorldGuard.java:107) ~[?:?]
at me.fromgate.reactions.event.EventManager.setFutureRegionCheck(EventManager.java:337) ~[?:?]
at me.fromgate.reactions.event.EventManager.raiseRegionEvent(EventManager.java:327) ~[?:?]
at me.fromgate.reactions.event.EventManager.access$000(EventManager.java:65) ~[?:?]
at me.fromgate.reactions.event.EventManager$3$1.run(EventManager.java:297) ~[?:?]
at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftTask.run(CraftTask.java:71) ~[spigot_server.jar:git-Spigot-5f38d38-18fbb24]
at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:350) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:723) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
at java.lang.Thread.run(Thread.java:745) [?:1.7.0_121]
BUTTON, PLATE, ITEM- Работа.n как надо.
У меня непрофессиональный вопрос: а нельзя ли просто два новых активатора (или хотя бы один - BLOCK_CLICK) - просто пришить к старой версии РеАкшн, которая работала с 188. У меня версия, в которой файлы в jar'e имеют дату 26 и 27 июля 2015 года - работает безупречно (0.9.9 вроде как)
 
Назад
Верх