Saltar al contenido principal

Integración con Vault

EliteMobs puede usar un proveedor de economía de Vault en lugar de su saldo interno. El plugin compila contra VaultAPI 1.7; instala versiones compatibles de Vault y del plugin de economía en el servidor.

Consideraciones sobre la progresión​

La progresión de EliteMobs combina habilidades de arma y armadura, botín y entrenamiento opcional de clases. Normalmente, los jugadores consiguen equipo y moneda mediante el combate de EliteMobs. Introducir dinero de otra economía cambia la rapidez con la que pueden comprar equipo y servicios.

Revisa los precios de las tiendas, el valor de reventa del botín y los servicios de pago antes de conectar una economía externa.

Los requisitos independientes de habilidad siguen aplicándose cuando están habilitados. Vault no concede XP de habilidades, no desbloquea clases ni permite saltarse las pruebas de entrenadores. Si activas la integración, ajusta tu economía a los precios de las tiendas y servicios de EliteMobs para que los ingresos externos no eclipsen las recompensas del combate.

Requisitos​

Para usar la integración con Vault, debes tener:

  • Un plugin Vault habilitado y compatible con las llamadas de EliteMobs a VaultAPI
  • Un plugin de economía que registre un servicio Economy de Vault
  • Ambos plugins correctamente configurados y en funcionamiento

EliteMobs detecta Vault habilitado durante la inicialización y selecciona su vía de economía cuando useVault es true. La detección por sí sola no demuestra que se haya encontrado un proveedor de economía.

Configuración​

Para habilitar la integración con Vault:

  1. Asegúrate de que el plugin Vault esté instalado en tu servidor
  2. Asegúrate de que tu plugin de economía registre su proveedor de Vault antes de que EliteMobs se inicialice
  3. Abre EconomySettings.yml en la carpeta del plugin EliteMobs
  4. Establece useVault: true
  5. Reinicia el servidor

Ejemplo de configuración:

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

Cómo funciona​

Cuando la integración con Vault está activa y tiene un proveedor operativo:

  • Las operaciones futuras usan el proveedor de economía de Vault. Los Elite Coins existentes en la base de datos de EliteMobs no se convierten ni se transfieren automáticamente.
  • Los jugadores ganan la moneda de tu economía en lugar de Monedas Élite al matar Mobs Élite
  • Las transacciones de tienda y otros servicios que cobran moneda usan la economía de tu servidor. Las reparaciones siguen consumiendo chatarra.
  • Vault gestiona el saldo de dinero; EliteMobs sigue registrando la deuda de apuestas y la descuenta de los ingresos de EliteMobs antes de depositar el resto.

Operaciones de moneda:

  • Depósitos: El dinero se añade al saldo de Vault del jugador
  • Retiros: El dinero se elimina del saldo de Vault del jugador
  • Comprobaciones de saldo: Consulta el saldo de Vault del jugador
  • Establecimiento directo de saldo: DESHABILITADO por seguridad (usa tu plugin de economía)

Durante la inicialización, Vault habilitado junto con useVault: true establece VAULT_ENABLED antes de buscar el proveedor. Por tanto, un proveedor ausente puede dejar el modo Vault activo sin una economía utilizable. Las consultas de saldo entonces advierten y devuelven cero; los depósitos o retiros ordinarios pueden fallar, mientras que las funciones de compra con comprobación devuelven un fallo. Si Vault está ausente o deshabilitado en un arranque nuevo, se conserva la economía interna. Una excepción capturada durante la configuración de Vault también desactiva ese modo.

Una vez activo el modo Vault, no hay cambio automático a la economía interna ni nueva vinculación del proveedor en tiempo de ejecución. Corrige su registro y reinicia antes de aceptar transacciones. currencyName sigue siendo un ajuste visual independiente de EliteMobs; activar Vault no cambia su nombre automáticamente.

Funciones de seguridad​

Por motivos de seguridad, EliteMobs NO admite establecer directamente el saldo de moneda de un jugador a través de Vault. Cualquier intento de hacerlo será bloqueado y registrado. Usa los comandos de tu plugin de economía para establecer saldos directamente si es necesario.

Escenario de ejemplo​

Supongamos que una recompensa paga 100 monedas y el jugador no tiene deuda de apuestas; es una cantidad ilustrativa, no un pago fijo para todos los mobs de nivel 50.

Sin Vault:

  • El jugador mata a un Mob Élite de nivel 50
  • Recibe 100 Monedas Élite (almacenadas en la base de datos de EliteMobs)
  • Puede gastar Monedas Élite en las tiendas y servicios de EliteMobs

Con Vault:

  • El jugador mata a un Mob Élite de nivel 50
  • Recibe 100 [moneda de tu economía] (almacenadas en Vault/plugin de economía)
  • Puede gastar dinero en EliteMobs y otros sistemas que usen ese proveedor
  • Las transferencias de otros jugadores dependen de las funciones del plugin de economía
  • La economía está unificada entre todos los plugins

Los ingresos externos pueden acelerar el acceso al equipo y los servicios. Los requisitos de habilidad y los desbloqueos de clase siguen aplicándose de forma independiente.

Solución de problemas​

Si la integración con Vault está habilitada pero no funciona:

  1. Comprueba los registros del servidor en busca de: "Vault detected." (en una línea de registro de EliteMobs)

    • Si falta: el plugin Vault no está instalado o no se está cargando
  2. Comprueba la advertencia: "Vault preference detected. This is not the recommended setting."

    • Esto es lo esperado cuando la integración con Vault está habilitada: es un recordatorio, no un error
    • Si Vault sigue sin funcionar, asegúrate de que tu plugin de economía esté correctamente registrado con Vault
  3. Comprueba si aparece: "Player tried to check currency when they had no economy entry"

    • Es una advertencia genérica de referencia nula, no una prueba de que falte una cuenta. El propio proveedor de economía guardado puede ser nulo.
    • Comprueba que el proveedor estuviera registrado antes de inicializar EliteMobs y después revisa la gestión de cuentas y los registros del plugin de economía.
  4. Si está habilitado pero EliteMobs sigue usando Monedas Élite:

    • Verifica que la clave de configuración sea exactamente: useVault: true
    • Reinicia el servidor tras el cambio de configuración
    • Comprueba que haya un plugin de economía registrado con Vault
  5. Si los saldos muestran cero o las transacciones fallan pese al mensaje de detección:

    • Confirma que el proveedor estuviera disponible durante la inicialización; el mensaje solo confirma Vault.
    • Restaura el proveedor y reinicia. EliteMobs no se conecta automáticamente a un proveedor recién registrado.

Para desarrolladores​

Si estás desarrollando un complemento o una integración:

  • Selección de Vault: VaultCompatibility.VAULT_ENABLED no demuestra que el proveedor esté disponible; getEconomy() puede ser nulo
  • API de economía: Usa los métodos de EconomyHandler (no VaultCompatibility directamente)
  • Operaciones admitidas: añadir, restar, consultar, abonar con comprobación, retirar para una compra con comprobación y reembolsar una compra (establecer el saldo está deshabilitado)
  • Todo cambio de saldo debe ejecutarse en el hilo del servidor y para un jugador cuyos datos de EliteMobs estén cargados (EconomyHandler.isReady); de lo contrario, lanza IllegalStateException.
  • tryCredit, tryWithdraw y refundPayment lanzan IllegalArgumentException ante un importe negativo o no finito, y devuelven false cuando Vault rechaza la transacción o ya hay otro cambio en curso para ese jugador. tryCredit cobra primero la deuda de apuestas y solo guarda la nueva deuda después de que Vault acepte el depósito; refundPayment no cobra la deuda.
  • addCurrency y subtractCurrency lanzan IllegalStateException cuando el proveedor rechaza el cambio, en lugar de fallar en silencio.
  • Precisión de la moneda: el sistema interno usa 2 decimales
  • Sin recurso de respaldo en tiempo de ejecución: cuando VAULT_ENABLED es true, EconomyHandler siempre delega en Vault; no hay cambio automático de vuelta a la economía interna

Ubicación del código fuente:

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

EliteMobs usa VaultAPI 1.7 como dependencia solo de compilación. El JAR del plugin Vault debe estar presente en el servidor en tiempo de ejecución.