Перейти к основному содержимому

Интеграция с Vault

EliteMobs может использовать экономический провайдер Vault вместо внутреннего денежного баланса. Плагин компилируется с VaultAPI 1.7; установите на сервер совместимые плагины Vault и экономики.

Влияние на прогрессию​

Прогрессия EliteMobs сочетает навыки оружия и брони, добычу и необязательное обучение классам. Обычно игроки получают снаряжение и валюту в боях EliteMobs. Деньги из другой экономики меняют скорость, с которой игроки могут покупать снаряжение и услуги.

Перед подключением внешней экономики пересмотрите цены магазинов, стоимость перепродажи добычи и платные услуги.

Отдельные требования к навыкам продолжают действовать, если включены. Vault не выдаёт опыт навыков, не открывает классы и не позволяет пропустить испытания тренера. При включении интеграции согласуйте экономику с ценами магазинов и услуг EliteMobs, чтобы внешний доход не обесценивал боевые награды.

Требования​

Чтобы использовать интеграцию с Vault, у вас должно быть:

  • Включённый плагин Vault, совместимый с вызовами VaultAPI в EliteMobs
  • Плагин экономики, регистрирующий сервис Vault Economy
  • Оба плагина правильно настроены и запущены

EliteMobs обнаруживает включённый Vault при инициализации и выбирает его экономический путь при useVault: true. Обнаружение Vault само по себе не подтверждает наличие экономического провайдера.

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

Чтобы включить интеграцию с Vault:

  1. Убедитесь, что плагин Vault установлен на вашем сервере
  2. Убедитесь, что плагин экономики регистрирует свой провайдер Vault до инициализации EliteMobs
  3. Откройте EconomySettings.yml в папке плагина EliteMobs
  4. Установите useVault: true
  5. Перезапустите сервер

Пример конфигурации:

# Whether to use Vault for the economy instead of the built-in system.
# NOT RECOMMENDED! See: https://wiki.nightbreak.io/EliteMobs/vault
useVault: false

Как это работает​

Когда интеграция с Vault включена и провайдер работает:

  • Последующие операции используют экономический провайдер Vault. Существующие Elite Coins в базе EliteMobs не конвертируются и не переносятся автоматически.
  • Игроки зарабатывают валюту вашей экономики вместо Elite Coins при убийстве Элитных мобов
  • Покупки в магазинах и другие услуги с денежной оплатой используют экономику сервера. Для ремонта по-прежнему нужен лом.
  • Vault управляет денежным балансом; EliteMobs продолжает учитывать игорный долг и вычитать его из поступлений EliteMobs перед зачислением остатка.

Операции с валютой:

  • Пополнения: Деньги добавляются на баланс игрока в Vault
  • Списания: Деньги снимаются с баланса игрока в Vault
  • Проверка баланса: Запрашивает баланс игрока в Vault
  • Прямая установка баланса: ОТКЛЮЧЕНА в целях безопасности (используйте свой плагин экономики)

При инициализации включённый Vault вместе с useVault: true устанавливает VAULT_ENABLED до поиска провайдера. Поэтому отсутствие провайдера может оставить режим Vault активным без рабочей экономики. Запросы баланса тогда выдают предупреждение и возвращают 0; обычные пополнения и списания могут завершиться ошибкой, а вспомогательные методы покупки с проверкой результата возвращают отказ. Если Vault отсутствует или выключен при новом запуске, используется внутренняя экономика. Перехваченное исключение при настройке Vault также выключает режим Vault.

После включения режима Vault автоматического возврата к внутренней экономике или повторного подключения провайдера во время работы нет. Исправьте регистрацию провайдера и перезапустите сервер до приёма платежей. currencyName остаётся отдельной настройкой отображения EliteMobs: включение Vault не меняет её автоматически.

Функции безопасности​

В целях безопасности EliteMobs НЕ поддерживает прямую установку баланса валюты игрока через Vault. Любая такая попытка будет заблокирована и записана в лог. Используйте команды своего плагина экономики, чтобы установить балансы напрямую, если это необходимо.

Пример сценария​

Предположим, награда составляет 100 монет, а у игрока нет игорного долга. Это пример суммы, а не фиксированная выплата за каждого моба 50 уровня.

Без Vault:

  • Игрок убивает Элитного моба 50 уровня
  • Получает 100 Elite Coins (хранятся в базе данных EliteMobs)
  • Может тратить Elite Coins в магазинах и на услуги EliteMobs

С Vault:

  • Игрок убивает Элитного моба 50 уровня
  • Получает 100 [валюты вашей экономики] (хранятся в Vault/плагине экономики)
  • Может тратить деньги в EliteMobs и других системах с тем же провайдером
  • Переводы от других игроков зависят от возможностей плагина экономики
  • Экономика объединена для всех плагинов

Внешний доход может ускорить доступ к снаряжению и услугам. Требования к навыкам и открытию классов действуют независимо от него.

Устранение неполадок​

Если интеграция с Vault включена, но не работает:

  1. Проверьте логи сервера на наличие: "Vault detected." (в строке лога EliteMobs)

    • Если её нет: плагин Vault не установлен или не загружается
  2. Проверьте наличие предупреждения: "Vault preference detected. This is not the recommended setting."

    • Это ожидаемо, когда интеграция с Vault включена — это напоминание, а не ошибка
    • Если Vault всё равно не работает, убедитесь, что ваш плагин экономики правильно зарегистрирован в Vault
  3. Проверьте наличие: "Player tried to check currency when they had no economy entry"

    • Это общее предупреждение о null-ссылке, а не доказательство отсутствия счёта игрока. Сам сохранённый экономический провайдер может быть null.
    • Проверьте, что провайдер зарегистрирован до инициализации EliteMobs, затем изучите обработку счетов и логи плагина экономики.
  4. Если включено, но EliteMobs всё равно использует Elite Coins:

    • Убедитесь, что ключ конфига точно: useVault: true
    • Перезапустите сервер после изменения конфига
    • Проверьте, что плагин экономики зарегистрирован в Vault
  5. Если баланс равен 0 или транзакции не проходят несмотря на сообщение об обнаружении:

    • Проверьте доступность провайдера при инициализации: сообщение подтверждает только наличие самого Vault.
    • Восстановите провайдер и перезапустите сервер. EliteMobs не подключается автоматически к вновь зарегистрированному провайдеру.

Для разработчиков​

Если вы разрабатываете аддон или интеграцию:

  • Выбор Vault: VaultCompatibility.VAULT_ENABLED не подтверждает доступность провайдера; getEconomy() может быть null
  • API экономики: используйте методы EconomyHandler (а не VaultCompatibility напрямую)
  • Поддерживаемые операции: пополнение, списание, проверка баланса, зачисление с проверкой результата, списание для покупки с проверкой результата и возврат оплаты (set отключён)
  • Любое изменение баланса должно выполняться в серверном потоке для игрока, чьи данные EliteMobs загружены (EconomyHandler.isReady); иначе выбрасывается IllegalStateException.
  • tryCredit, tryWithdraw и refundPayment выбрасывают IllegalArgumentException для отрицательной или не конечной суммы и возвращают false, если Vault отклоняет транзакцию или для этого игрока уже выполняется другое изменение. tryCredit сначала погашает игорный долг и сохраняет новый долг только после того, как Vault принял зачисление; refundPayment не погашает долг.
  • addCurrency и subtractCurrency выбрасывают IllegalStateException, если провайдер отклоняет изменение, а не завершаются ошибкой молча.
  • Точность валюты: внутренняя система использует 2 знака после запятой
  • Нет отката во время работы: когда VAULT_ENABLED равен true, EconomyHandler всегда делегирует Vault; автоматического переключения обратно на внутреннюю экономику нет

Расположение исходного кода:

  • src/main/java/com/magmaguy/elitemobs/economy/VaultCompatibility.java
  • src/main/java/com/magmaguy/elitemobs/economy/EconomyHandler.java

EliteMobs использует VaultAPI 1.7 как зависимость только для компиляции. JAR плагина Vault должен присутствовать на сервере во время работы.