跳到主要内容

Vault 集成

自 7.1.0 版本起,EliteMobs 支持 Vault 集成(使用 VaultAPI 1.7)。你可以开启 Vault 以将 EliteMobs 经济与你服务器的经济统一起来。

下面来说说为什么这是个糟糕的主意:

EliteMobs 没有等级系统。其进度系统与通过击杀精英怪获取更好的物品、提升武器和护甲技能以解锁更高等级的战利品、更高等级的怪物、更高等级的任务以及更高等级的竞技场挑战和地下城相绑定。

此外,在购买护身符和转售从精英怪获取的战利品方面,EliteMobs 拥有非常微妙的平衡。

因此,如果你将服务器的经济与 EliteMobs 经济合并,玩家就能轻松地花钱登顶,从而可能跳过学习曲线。

这样一来进度系统就无法正常运作,进而导致更严重的问题。高等级的精英怪拥有各种各样的能力,玩家本应在与它们长达数十小时的战斗中慢慢学会这些能力,学会识别精英怪拥有的能力以及如何应对它们,同时学会如何为与精英怪的战斗做准备。

如果玩家直接跳到终局内容,他们会觉得战斗难度近乎不可能且极不公平,因为他们没有花时间通过长时间游玩来积累高效击杀精英怪所需的知识。

前置要求

要使用 Vault 集成,你必须具备:

  • Vault 插件(与 VaultAPI 1.7+ 兼容的版本)
  • 一个会向 Vault 注册的经济插件(EssentialsX、CMI 等)
  • 两个插件都已正确配置并运行

如果在配置中启用,EliteMobs 会自动检测 Vault 并使用它。

配置

要启用 Vault 集成:

  1. 确保服务器上已安装 Vault 插件
  2. 确保你拥有一个可与 Vault 配合工作的经济插件(如 EssentialsX、CMI 等)
  3. 打开 EliteMobs 插件文件夹中的 EconomySettings.yml
  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)都会转换为你服务器的主经济货币
  • 玩家击杀精英怪时获得的是你的经济货币,而非精英币
  • 商店交易、技能升级以及所有其他 EliteMobs 经济功能都使用你服务器的经济
  • EliteMobs 经济系统将被 Vault 完全替代

货币操作:

  • 存入:金钱被加入玩家的 Vault 余额
  • 取出:金钱从玩家的 Vault 余额中扣除
  • 余额查询:查询玩家的 Vault 余额
  • 直接设置余额:出于安全考虑已禁用(请使用你的经济插件)

注意:在启用 Vault 集成期间,所有货币操作都会被路由到 Vault。如果 Vault 在运行时变得不可用,EliteMobs 不会悄悄回退到其内部经济,因此在 useVault 开启期间,请确保你的经济插件始终向 Vault 注册。

安全特性

出于安全原因,EliteMobs 支持通过 Vault 直接设置玩家的货币余额。任何此类尝试都会被阻止并记录。如有需要,请使用你的经济插件的命令直接设置余额。

示例场景

不使用 Vault:

  • 玩家击杀一只 50 级精英怪
  • 获得 100 精英币(存储在 EliteMobs 数据库中)
  • 只能在 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 仍在使用精英币:

    • 确认配置键确实是:useVault: true
    • 修改配置后重启服务器
    • 检查是否有一个经济插件已向 Vault 注册

面向开发者

如果你正在开发扩展或集成:

  • Vault 状态:检查 VaultCompatibility.VAULT_ENABLED(静态布尔值)
  • 经济 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 作为仅编译期依赖(compile-only)。运行时服务器上必须存在 Vault 插件 JAR。