KsEconomia es un plugin de economía diseñado desde cero para soportar múltiples monedas simultáneas (monedas premium, tokens, XP económica, gemas de eventos...) con conversión configurable entre ellas. Publica una API pública con transacciones tipadas y un historial persistente para auditar cualquier movimiento.
Características
- Multi-moneda nativo — define tantas monedas como quieras. Cada una con su símbolo, escala, límites y formato.
- API pública con resultados tipados (Exito, FondosInsuficientes, LimiteExcedido, MonedaDesconocida) — nunca necesitas parsear excepciones para saber qué pasó.
- Historial de transacciones persistente — cada retiro/depósito con razón, timestamp y saldo resultante. Consultable por jugador y por moneda.
- Ranking (top) con GUI — cabezas de jugadores con saldo formateado, paginación, actualización periódica.
- Conversión entre monedas — tasas configurables. /convertir 100 gemas oro respeta la tasa.
- Integración Vault — KsEconomia se registra como proveedor Vault, permite que plugins legacy (EssentialsX, Jobs, MythicMobs...) usen tu moneda principal transparentemente.
- Importadores — migración desde Vault, EssentialsX Economy, CMI. Con modo --dry-run para simular.
- BigDecimal en todo dinero — cero double, cero errores de coma flotante. Los ceros nunca se pierden.
- Cero consultas a BD en el hilo principal — cache en memoria + escritura diferida (write-behind). SQLite por defecto, MariaDB soportada.
- Toggle de pagos — los jugadores pueden bloquear pagos entrantes con /pagos off.
- Placeholders integrados — el saldo de cualquier moneda expuesto vía KSPlaceholder y PlaceholderAPI.
- Descarga KsEconomia-1.0.0.jar.
- Coloca el JAR en plugins/.
- Coloca KSCore.jar.
- Opcional: Vault.jar para exponerse como proveedor Vault.
- Opcional: KSPlaceholder.jar o PlaceholderAPI.jar para placeholders.
- Arranca el servidor.
Dependencias
Plugin Tipo Rol
KSCore Requerida Framework: config, comandos, storage
Vault Opcional Exponerse como proveedor Vault
KSPlaceholder Opcional Placeholders %kseco_*%
PlaceholderAPI Opcional Compatibilidad con PAPI
Comandos
Usuario
Comando Descripción
/saldo [moneda] Ver saldo propio en la moneda indicada (default: principal)
/pagar <jugador> <cantidad> [moneda] Transferir dinero
/top [pagina] Ranking de saldos
/top gui Ranking en GUI
/monedas Lista de monedas configuradas
/monedas gui Ver monedas en GUI
/historial [moneda] [pagina] Ver tus últimas transacciones
/convertir <cantidad> <moneda_origen> <moneda_destino> Convertir entre monedas
/pagos on|off Recibir o rechazar pagos entrantes
Aliases: /bal, /money, /dinero, /pay, /baltop, /convert, /cambiar
Administrador
Comando Descripción
/eco dar <jugador> <cantidad> [moneda] Depositar dinero
/eco quitar <jugador> <cantidad> [moneda] Retirar dinero
/eco establecer <jugador> <cantidad> [moneda] Establecer saldo
/eco reset <jugador> [moneda] Resetear a 0
/eco dartodos <cantidad> [moneda] Dar a todos los online
/eco historial <jugador> [moneda] [pagina] Historial de otro jugador
/eco importar <vault|essentials|cmi> [confirmar] Migrar desde otros plugins
/eco recargar Recargar configuración
/eco debug Toggle modo debug
/eco info Estadísticas (monedas, cuentas online)
Aliases: /economia, /kseco
Permisos
Usuario
Permiso Default Descripción
kseco.saldo true Ver tu propio saldo
kseco.saldo.otros op Ver saldo de otro jugador
kseco.pagar true Transferir dinero
kseco.top true Ver ranking
kseco.historial true Ver tu propio historial
kseco.monedas true Listar monedas
kseco.pagos true Toggle recepción de pagos
kseco.convertir true Convertir entre monedas
Administrador
Nodo padre kseco.admin con hijos: kseco.admin.dar, kseco.admin.quitar, kseco.admin.establecer, kseco.admin.reset, kseco.admin.dartodos, kseco.admin.historial, kseco.admin.importar, kseco.admin.recargar, kseco.admin.debug, kseco.admin.info.
Configuración
monedas.yml
Define todas las monedas del servidor. Al menos una debe estar marcada como principal: true:
Code (YAML):
monedas:
oro:
principal : true
nombre : "Oro"
simbolo : "$"
escala : 2 # Decimales
inicial : 100.0
limite_maximo : 1_000_000_000
formato : "{cantidad}{simbolo}"
gemas:
principal : false
nombre : "Gemas"
simbolo : "◆"
escala : 0
inicial : 0
limite_maximo : 100_000
formato : "{simbolo} {cantidad}"
xp_eco:
principal : false
nombre : "XP Económica"
simbolo : "✦"
escala : 0
inicial : 0
oro:
principal : true
nombre : "Oro"
simbolo : "$"
escala : 2 # Decimales
inicial : 100.0
limite_maximo : 1_000_000_000
formato : "{cantidad}{simbolo}"
gemas:
principal : false
nombre : "Gemas"
simbolo : "◆"
escala : 0
inicial : 0
limite_maximo : 100_000
formato : "{simbolo} {cantidad}"
xp_eco:
principal : false
nombre : "XP Económica"
simbolo : "✦"
escala : 0
inicial : 0
Tasas entre monedas. Si una tasa no está definida, la conversión falla:
Code (YAML):
tasas
:
# Convertir 1 oro cuesta 0.01 gemas
oro_a_gemas : 0.01
gemas_a_oro : 100
[SIZE=4 ] [B ]mensajes-economia.yml [/B ] [/SIZE ]
Catálogo i18n de todos los mensajes del plugin. Editable sin recompilar.
[SIZE=4 ] [B ]Base de datos [/B ] [/SIZE ]
Por defecto SQLite en plugins/KSCore/datos.db. Para MariaDB, edita plugins/KSCore/config.yml :
[IMG ]http://localhost:63342/markdownPreview/852531481/KsEconomia [/IMG ]
datos:
dialecto : mariadb
host : "localhost"
puerto : 3306
base : "kseco"
usuario : "kseco"
password : "..."
# Convertir 1 oro cuesta 0.01 gemas
oro_a_gemas : 0.01
gemas_a_oro : 100
[SIZE=4 ] [B ]mensajes-economia.yml [/B ] [/SIZE ]
Catálogo i18n de todos los mensajes del plugin. Editable sin recompilar.
[SIZE=4 ] [B ]Base de datos [/B ] [/SIZE ]
Por defecto SQLite en plugins/KSCore/datos.db. Para MariaDB, edita plugins/KSCore/config.yml :
[IMG ]http://localhost:63342/markdownPreview/852531481/KsEconomia [/IMG ]
datos:
dialecto : mariadb
host : "localhost"
puerto : 3306
base : "kseco"
usuario : "kseco"
password : "..."
Añade dependencia soft en tu paper-plugin.yml:
dependencies:
server:
KsEconomia:
load: BEFORE
required: false
Y en tu build.gradle.kts:
compileOnly("studio.kuraky:kseconomia-api:1.0.0")
La API vive en un módulo independiente que no depende de KSCore. Otros plugins pueden compilar contra ella sin tener el framework como transitive.
Uso:
Code (Java):
import
studio.kuraky.ksEconomia.api.EconomiaApi
;
import studio.kuraky.ksEconomia.api.cuenta.Resultado ;
import studio.kuraky.ksEconomia.api.moneda.Moneda ;
var api = EconomiaApi. obtener ( ) ;
Moneda oro = api. monedaPrincipal ( ) ;
// Consulta síncrona (cache)
BigDecimal saldo = api. saldoCache (uuid, oro ) ;
// Retirada atómica async
api. retirar (uuid, oro, new BigDecimal ( "50" ), "miplugin:compra" )
. thenAccept (resultado -> {
if (resultado instanceof Resultado. Exito e ) {
player. sendMessage ( "Cobrado: " + e. saldoResultante ( ) ) ;
} else if (resultado instanceof Resultado. FondosInsuficientes f ) {
player. sendMessage ( "Te faltan: " + f. faltan ( ) ) ;
}
} ) ;
// Depósito
api. depositar (uuid, oro, new BigDecimal ( "100" ), "miplugin:recompensa" ) ;
// Historial
api. historial (uuid, oro, 10 /* limite */ )
. thenAccept (transacciones -> { /* pintar */ } ) ;
import studio.kuraky.ksEconomia.api.cuenta.Resultado ;
import studio.kuraky.ksEconomia.api.moneda.Moneda ;
var api = EconomiaApi. obtener ( ) ;
Moneda oro = api. monedaPrincipal ( ) ;
// Consulta síncrona (cache)
BigDecimal saldo = api. saldoCache (uuid, oro ) ;
// Retirada atómica async
api. retirar (uuid, oro, new BigDecimal ( "50" ), "miplugin:compra" )
. thenAccept (resultado -> {
if (resultado instanceof Resultado. Exito e ) {
player. sendMessage ( "Cobrado: " + e. saldoResultante ( ) ) ;
} else if (resultado instanceof Resultado. FondosInsuficientes f ) {
player. sendMessage ( "Te faltan: " + f. faltan ( ) ) ;
}
} ) ;
// Depósito
api. depositar (uuid, oro, new BigDecimal ( "100" ), "miplugin:recompensa" ) ;
// Historial
api. historial (uuid, oro, 10 /* limite */ )
. thenAccept (transacciones -> { /* pintar */ } ) ;
- Resultado.Exito
- Resultado.FondosInsuficientes
- Resultado.LimiteExcedido
- Resultado.MonedaDesconocida
- Resultado.CuentaNoCargada
KsEconomia se registra automáticamente como proveedor Vault al arrancar si Vault está presente. Plugins legacy que usan Vault (EssentialsX, Jobs, ChestShop, MythicMobs, etc.) operarán sobre tu moneda principal transparentemente.
Placeholders
Con KSPlaceholder (o PlaceholderAPI) cargado:
Token Devuelve
%kseco_saldo% Saldo en moneda principal
%kseco_saldo:gemas% Saldo en gemas
%kseco_saldo_fmt% Saldo formateado con símbolo
%kseco_top1_nombre% / %kseco_top1_saldo% Puesto #1 del ranking
%kseco_top<N>_*% Puestos 1-10
%kseco_moneda_principal% Nombre de la moneda principal
Migraciones
/eco importar vault
/eco importar essentials
/eco importar cmi
Sin confirmar sólo muestra la vista previa. Con confirmar escribe. Antes de escribir, hace backup automático del estado actual en plugins/KsEconomia/backups/.
Rendimiento
- BigDecimal en todo — sin double, sin errores de precisión.
- Cero consultas a BD en el hilo principal. Las lecturas usan cache; las escrituras se agrupan en un DirtyQueue y se vuelcan periódicamente.
- Cache con TTL configurable — los saldos de jugadores offline se descartan tras el timeout.
- Historial paginado — nunca cargamos todas las transacciones; sólo la página pedida.
Quick facts
- Edition: Minecraft Java
- File type: .jar
- Minecraft version listed: 26.2
- How to install: Install the matching mod loader (Forge, Fabric or NeoForge) for your Minecraft version. → Download the .jar. → Put it in the .minecraft/mods folder and launch that loader profile.
- Where to get it: Opens on Spigot — not every file is mirrored on our own servers.
Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.
KSEconomia is a free Minecraft Java mod. Compatible with Minecraft 26.2. Downloaded 4 times (via Spigot). Download it and open it directly in the game.