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

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

Начиная с версии 7.1.0, EliteMobs поддерживает интеграцию с Vault (используя VaultAPI 1.7). Вы можете включить Vault, чтобы объединить экономику EliteMobs с экономикой вашего сервера.

А теперь о том, почему это плохая идея:

В EliteMobs нет системы уровней. Система прогрессии завязана на получении лучших предметов через убийство Элитных мобов и прокачке навыков оружия и брони ради доступа к более высокоуровневой добыче, более высокоуровневым мобам, более высокоуровневым заданиям, а также более высокоуровневым испытаниям на аренах и подземельям.

Кроме того, в EliteMobs очень тонкий баланс в том, что касается покупки чармов и перепродажи добычи, полученной с Элитных мобов.

Поэтому, если вы объедините экономику своего сервера с экономикой EliteMobs, игроки смогут легко «купить» себе путь на вершину, потенциально обходя кривую обучения.

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

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

Требования

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

  • Плагин Vault (версия, совместимая с VaultAPI 1.7+)
  • Плагин экономики, который регистрируется в Vault (EssentialsX, CMI и т.д.)
  • Оба плагина правильно настроены и запущены

EliteMobs автоматически обнаружит Vault и будет использовать его, если он включён в конфиге.

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

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

  1. Убедитесь, что плагин Vault установлен на вашем сервере
  2. Убедитесь, что у вас есть плагин экономики, работающий с Vault (например, EssentialsX, CMI и т.д.)
  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 включена:

  • Вся валюта EliteMobs (Elite Coins) конвертируется в основную валюту экономики вашего сервера
  • Игроки зарабатывают валюту вашей экономики вместо Elite Coins при убийстве Элитных мобов
  • Транзакции в магазине, улучшения навыков и все остальные функции экономики EliteMobs используют экономику вашего сервера
  • Система экономики EliteMobs полностью заменяется Vault

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

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

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

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

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

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

Без Vault:

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

С Vault:

  • Игрок убивает Элитного моба 50 уровня
  • Получает 100 [валюты вашей экономики] (хранятся в Vault/плагине экономики)
  • Может тратить деньги в магазинах EliteMobs И где угодно ещё на сервере
  • Другие игроки могут отправлять деньги, чтобы покупать услуги 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"

    • Причина: плагин экономики не создал учётную запись игрока
    • Решение: проверьте конфигурацию своего плагина экономики
  4. Если включено, но EliteMobs всё равно использует Elite Coins:

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

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

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

  • Статус Vault: проверьте VaultCompatibility.VAULT_ENABLED (статический boolean)
  • API экономики: используйте методы EconomyHandler (а не VaultCompatibility напрямую)
  • Поддерживаемые операции: add, subtract, check (set отключён)
  • Точность валюты: внутренняя система использует 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 должен присутствовать на сервере во время работы.