Помогите Библиотека; На основе проверки в евенте выбирать действия других плагинов

  • Автор темы Автор темы Ratewio
  • Дата начала Дата начала

Ratewio

Активный участник
Заблокирован
Пользователь
Баллы
61
Имя в Minecraft
Ratewio
Пишется библиотека, поэтому нужно много потенциала расширения.
В частности как эффективно решить данную проблему:

Нужно отслеживать BlockPlaceEvent и проверять условие к примеру if(event.getBlock().getType() == Material.DIAMOND_BLOCK){ ... } else { ... };

Если утверждение верно - то нужно обработать евент одними "фильтрами", если не верно - другими.

Представим что у нас есть "специальные блоки" и если мы их ставим - то должны проверяться одни функции, если ставим не "специальный блок" то другие функции.

!!!:
Это можно решить создав два своих класса ("SpecialTypeBlockPlace", "DefaultTypeBlockPlace")
Вызывать их, и на основе isCancelled() отменять евент или нет или делать другие действия ..
Но переписывать все евенты в org.bukkit.event.block.* долго.
Плюс вызов этих евентов - их создание, передача в конструктор всего того, что есть в евенте BlockPlaceEvent...

Можно и сделать статические списки List<Predicate> или List<Consumer>, для того, чтобы плагины могли добовлять свои "фильтры" у нашей библиотеки и она будет их обрабатывать, на основе чего отменять евент или нет или делать что-то...
но это тоже загроможденно и "не элегантно"

Что вы можете предложить.
 
Интересно, зачем отдельная библиотека для таких простых действий? :eek:
 
Для начала действительно расскажи, что ты хочешь получить в конечном итоге?
Я не понимаю, зачем ты хочешь заставить других разработчиков регистрировать установку блоков через твой плагин. Что им мешает зарегистрировать слушатель обычных баккитовских событий?
Да и событий разных огромная гора, все-то тебе зачем?

Ну, при большом желании для установки блоков можешь сделать что-то такое, но точно ли тебе это нужно?
upload_2022-7-13_18-30-23.png
 
Назад
Верх