1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем Ratewio, 10 июл 2022.

  1. Автор темы
    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>, для того, чтобы плагины могли добовлять свои "фильтры" у нашей библиотеки и она будет их обрабатывать, на основе чего отменять евент или нет или делать что-то...
    но это тоже загроможденно и "не элегантно"

    Что вы можете предложить.
     
  2. OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Интересно, зачем отдельная библиотека для таких простых действий? :eek:
     
  3. Dymeth

    Dymeth Активный участник Пользователь

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

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

Поделиться этой страницей