Bukkit написание библиотеки и "разделение" работы функций от проверки условия
Пишется библиотека, поэтому нужно много потенциала расширения. В частности как эффективно решить данную проблему:
Нужно отслеживать BlockPlaceEvent и проверять условие к примеру if(event.getBlock().getType() == Material.DIAMOND_BLOCK){ ... } else { ... };
Если утверждение верно - то нужно обработать евент одними "фильтрами", если не верно - другими.
Представим что у нас есть "специальные блоки" и если мы их ставим - то должны проверяться одни функции, если ставим не "специальный блок" то другие функции.
!!!: Это можно решить создав два своих класса ("SpecialTypeBlockPlace", "DefaultTypeBlockPlace") Вызывать их, и на основе isCancelled() отменять евент или нет или делать другие действия .. Но переписывать все евенты в org.bukkit.event.block.* долго. Плюс вызов этих евентов - их создание, передача в конструктор всего того, что есть в евенте BlockPlaceEvent...
Можно и сделать статические списки List Predicate или List Consumer , для того, чтобы плагины могли добовлять свои "фильтры" у нашей библиотеки и она будет их обрабатывать, на основе чего отменять евент или нет или делать что-то... но это тоже загроможденно и "не элегантно"
Что вы можете предложить.