Интеграция с Vault
EliteMobs может использовать экономический провайдер Vault вместо внутреннего денежного баланса. Плагин компилируется с VaultAPI 1.7; установите на сервер совместимые плагины Vault и экономики.
Влияние на прогрессию
Прогрессия EliteMobs сочетает навыки оружия и брони, добычу и необязательное обучение классам. Обычно игроки получают снаряжение и валюту в боях EliteMobs. Деньги из другой экономики меняют скорость, с которой игроки могут покупать снаряжение и услуги.
Перед подключением внешней экономики пересмотрите цены магазинов, стоимость перепродажи добычи и платные услуги.
Отдельные требования к навыкам продолжают действовать, если включены. Vault не выдаёт опыт навыков, не открывает классы и не позволяет пропустить испытания тренера. При включении интеграции согласуйте экономику с ценами магазинов и услуг EliteMobs, чтобы внешний доход не обесценивал боевые награды.
Требования
Чтобы использовать интеграцию с Vault, у вас должно быть:
- Включённый плагин Vault, совместимый с вызовами VaultAPI в EliteMobs
- Плагин экономики, регистрирующий сервис Vault
Economy - Оба плагина правильно настроены и запущены
EliteMobs обнаруживает включённый Vault при инициализации и выбирает его экономический путь при useVault: true. Обнаружение Vault само по себе не подтверждает наличие экономического провайдера.
Конфигурация
Чтобы включить интеграцию с Vault:
- Убедитесь, что плагин Vault установлен на вашем сервере
- Убедитесь, что плагин экономики регистрирует свой провайдер Vault до инициализации EliteMobs
- Откройте
EconomySettings.ymlв папке плагина EliteMobs - Установите
useVault: true - Перезапустите сервер
Пример конфигурации:
# 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 включена, но не работает:
-
Проверьте логи сервера на наличие: "Vault detected." (в строке лога EliteMobs)
- Если её нет: плагин Vault не установлен или не загружается
-
Проверьте наличие предупреждения: "Vault preference detected. This is not the recommended setting."
- Это ожидаемо, когда интеграция с Vault включена — это напоминание, а не ошибка
- Если Vault всё равно не работает, убедитесь, что ваш плагин экономики правильно зарегистрирован в Vault
-
Проверьте наличие: "Player tried to check currency when they had no economy entry"
- Это общее предупреждение о null-ссылке, а не доказательство отсутствия счёта игрока. Сам сохранённый экономический провайдер может быть null.
- Проверьте, что провайдер зарегистрирован до инициализации EliteMobs, затем изучите обработку счетов и логи плагина экономики.
-
Если включено, но EliteMobs всё равно использует Elite Coins:
- Убедитесь, что ключ конфига точно:
useVault: true - Перезапустите сервер после изменения конфига
- Проверьте, что плагин экономики зарегистрирован в Vault
- Убедитесь, что ключ конфига точно:
-
Если баланс равен 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 должен присутствовать на сервере во время работы.