Скачать PassengerAPI — Minecraft Моды — MetaMods

PassengerAPI

Активный

Установок

0

Последнее обновление

1 год назад

Версии

1.19 — 1.21
Сервер
Игровые механики
Оптимизация игры
Утилиты

Решение проблем совместимости пассажиров с помощью PassengerAPI

PassengerAPI — это специализированный плагин, который решает распространённые проблемы совместимости между различными модификациями, управляющими системой пассажиров сущностей. Когда разные плагины независимо работают с пассажирами путём отправки сетевых пакетов, возникают конфликты, приводящие к непредсказуемому поведению и откреплению ранее установленных пассажиров.

Как устраняются конфликты совместимости

Пассажирский API централизует управление пассажирами сущностей, предотвращая типичные проблемы, такие как:

  • Потеря визуальных элементов
  • Некорректные отображения
  • Неожиданное открепление пассажиров

Полная совместимость из коробки — плагин начинает работать сразу после установки в папку plugins и перезагрузки сервера.

(Требуется установленный Packet Events)

Демонстрация в действии

Примеры совместной работы плагинов

PassengerAPI обеспечивает бесшовную интеграцию между такими популярными модификациями как:

  • Better Chat Bubbles
  • ProdigyCape
  • VanillaMinimaps
  • PlayerMounts

Без PassengerAPI различные плагины не могут одновременно устанавливать пассажиров, поскольку они отправляют собственные пассажирские пакеты независимо друг от друга.

Настройки и управление

Конфигурация

# НЕ ИЗМЕНЯЙТЕ НИЧЕГО В ЭТОМ ФАЙЛЕ,
# ЕСЛИ НЕ УВЕРЕНЫ НА 100% В СВОИХ ДЕЙСТВИЯХ!

AutoPassengerDetection:
  SetPassengerPacket: true
  EntityDestroyPacket: true

Команды администратора

Разрешение: passengerapi.commands

/passengerapi debug
/passengerapi reload

Примечание: В режиме отладки с блоком в руке вы будете получать расширенную диагностическую информацию в чате.

Для разработчиков: сильный функционал API

PassengerAPI предоставляет разработчикам инструменты для полного контроля над пассажирами сущностей без уничтожения самой сущности.

Получение экземпляра PassengerActions

PassengerActions passengerActions = PassengerAPI.getAPI(yourPluginInstance);

Замените yourPluginInstance на экземпляр основного класса вашего плагина (обычно используйте this для вызова из основного класса).

Управление пассажирами

// Добавление одного пассажира
passengerActions.addPassenger(targetEntityId, passengerEntityId);

// Добавление нескольких пассажиров
passengerActions.addPassengers(targetEntityId, Set.of(passenger1Id, passenger2Id, ...));

// Удаление пассажира
passengerActions.removePassenger(targetEntityId, passengerEntityId);

// Удаление нескольких пассажиров
passengerActions.removePassengers(targetEntityId, Set.of(passenger1Id, passenger2Id, ...));

// Удаление всех пассажиров для сущности
passengerActions.removeAllPassengers(targetEntityId);

// Получение пассажиров
Set<Integer> passengers = passengerActions.getPassengers(targetEntityId);

// глобальные методы для пассажиров от всех плагинов
passengerActions.removeGlobalPassengers(targetEntityId, Set.of(passenger1Id, passenger2Id, ...));
passengerActions.removeAllGlobalPassengers(targetEntityId);
Set<Integer> globalPassengers = passengerActions.getGlobalPassengers(targetEntityId);

Важно: Все сущности идентифицируются по ID сущности (не по UUID).

Система событий

PassengerAPI предоставляет набор событий для реагирования на изменения пассажиров:

@EventHandler
public void onAddPassenger(AddPassengerEvent event) {
    // Название плагина, пытающегося добавить пассажиров
    String pluginName = event.getPluginName();
    int targetEntity = event.getTargetEntityID();
    Set<Integer> passengers = event.getPassengerList();
    // Ваш код обработки
}

@EventHandler
public void onRemovePassenger(RemovePassengerEvent event) {
    // Плагин, удаляющий пассажиров
    String pluginName = event.getPluginName();
    int targetEntity = event.getTargetEntityID();
    Set<Integer> removedPassengers = event.getPassengerList();
    // Ваша логика обработки
}

@EventHandler
public void onPassengerPacket(PassengerPacketEvent event) {
    int targetEntity = event.getTargetEntityID();
    Set<Integer> passengers = event.getPassengerList();
    // Список игроков для получения пакета (можно модифицировать)
    List<Player> receivers = event.getPacketReceivers();
    // Дополнительная обработка
}

Не забудьте зарегистрировать свои классы событий для их обработки.

Участники проекта
maximde

maximde

Разработчик

Создан: 31 мая 2024

ID: 25403