Corev2.0

RPX Economy

Sistema financiero avanzado para roleplay: banca multicuenta, efectivo físico, datáfonos TPV, suscripciones recurrentes y registro bancario completo.


Introducción

RPX Economy reemplaza el sistema de economía vanilla e introduce banca física y digital. Los ciudadanos gestionan múltiples cuentas, pueden retirar dinero como billetes y monedas físicas, y los negocios cobran mediante datáfonos colocables.

Atención

RPX Economy requiere RPX Core instalado. No es compatible con Vault directamente; usa la API de RPX Economy para interacciones desde otros plugins.

  • Cuentas personales y de empresa por ciudadano
  • Efectivo físico retiable del banco como ítems (billetes y monedas)
  • Datáfonos (TPV) colocables en locales comerciales
  • Suscripciones y cobros recurrentes automáticos
  • Log bancario completo con timestamps y tipos de transacción

Cuentas Bancarias

Cada ciudadano puede tener múltiples cuentas bancarias. Cada cuenta tiene un ID único, nombre visual, saldo y un flag 'isJobAccount' que indica si pertenece a una empresa/empleo.

  • Cuenta personal: asociada directamente al ciudadano. Se crea automáticamente al registrarse.
  • Cuenta de empresa: flag isJobAccount=true. Compartida por todos los miembros de un empleo con acceso.
  • Cuenta especial: ej. 'inmobiliaria' para recibir pagos de alquiler de RPX RealState.

Consejo

Los admins pueden consultar el historial completo de una cuenta desde el panel de /eco bank → seleccionar cuenta → Historial.

Efectivo Físico

Currency.giveMoney() genera ítems de billetes y monedas en el inventario del jugador. Los jugadores pueden intercambiarlos entre sí o depositarlos en el banco. El sistema calcula automáticamente la combinación óptima de denominaciones.

yaml
# economy.yml
bills:
  - amount: 1000
    material: PAPER
    custom-model-data: 2001
    name: "<gold>Billete de $1.000"
  - amount: 500
    material: PAPER
    custom-model-data: 2002
    name: "<yellow>Billete de $500"
coins:
  - amount: 50
    material: GOLD_NUGGET
    custom-model-data: 2010
    name: "<yellow>Moneda de $50"

Datáfonos (TPV)

Los datáfonos son bloques con NBT 'is_dataphone'=true que los dueños de negocios colocan en su local. Cuando un cliente interactúa, se le cobra un importe directamente de su cuenta bancaria.

  • El admin ejecuta /eco givedataphone <accountId> [jobId] para obtener el ítem.
  • Se coloca el datáfono como bloque. Al interactuar, pide al cliente el importe.
  • El pago se registra en BankLog con tipo DATAPHONE_PAYMENT.

Atención

El datáfono solo puede cobrar a ciudadanos con cuenta bancaria y saldo suficiente. Sin cuenta, la transacción falla.

Suscripciones Recurrentes

Las suscripciones permiten cobros automáticos periódicos. Se usan principalmente para alquileres (RPX RealState) pero pueden configurarse para cualquier servicio recurrente.

java
// Desde otro módulo (ej. RPX RealState al aceptar alquiler):
RPXEconomy.getInstance().getSubscriptionManager().subscribe(
    "rs_prop_" + prop.getId(),   // ID único
    "Alquiler: " + prop.getName(), // Nombre visible
    prop.getPricePerCycle(),       // Importe por ciclo
    prop.getCycleDays(),           // Cada cuántos días
    receiverAccountId,             // Cuenta que recibe
    payerAccountId                 // Cuenta que paga
);

Información

Si un ciudadano no tiene saldo cuando vence la suscripción, queda marcada como impagada y puede generar una notificación automática.

Comandos

ComandoPermisoDescripción
/eco bankrpx.eco.useAbre el selector de cuentas bancarias del personaje activo.
/eco getMoney <cantidad>rpx.eco.adminGenera efectivo físico (billetes/monedas) por el importe indicado.
/eco givedataphone [cuentaId] [jobId]rpx.eco.adminEntrega un datáfono vinculado a una cuenta y/o empleo.
/pay <jugador> <cantidad>rpx.eco.usePaga una cantidad en efectivo a otro jugador directamente.