ModsJava
NuvikShop Keys
Java mod listed for Minecraft 1.21. Download on the author's site.
⬇ Download on Spigot
⚡ NUVIKSHOP KEYS v1.9.0 ⚡
Sistema Profesional de Keys para Minecraft
Genera • Vende • ⚡ Entrega Instantánea
Sistema Profesional de Keys para Minecraft
Genera • Vende • ⚡ Entrega Instantánea
DESCRIPCIÓN
NuvikShop Keys es el plugin definitivo para gestionar keys de productos en tu servidor de Minecraft. Integración completa con tiendas online, entrega instantánea, múltiples bases de datos y seguridad de nivel empresarial.
✨ Perfecto para:
- Servidores con tienda online
- Venta de rangos VIP/MVP
- Venta de coins y kits
- Permisos y comandos personalizados
- Automatización completa de ventas
✨ CARACTERÍSTICAS PRINCIPALES
Sistema de Keys
- Generación masiva - Genera hasta 100 keys por comando
- Formato personalizable - NUVIK-XXXXX-XXXXX o el que quieras
- Expiración configurable - Por producto, días específicos o sin expiración
- Múltiples usos - Keys de un solo uso o reutilizables
- Anti-duplicación - Sistema automático para evitar keys duplicadas
- Batch inserts - 10-50x más rápido que otros plugins
Integración con Tiendas
- SellAuth - API completa + Webhooks + Auto-sync ⭐ RECOMENDADO
- Shoppy.gg - Webhooks + Mapeo de productos
- SellHub.cs - Webhooks + Soporte completo NUEVO
- Tebex - Compatible con webhooks genéricos
- Genérico - Cualquier tienda con webhooks
⚡ Entrega Instantánea (v1.8.0+)
- Entrega automática cuando el jugador entra al servidor
- Sin necesidad de /redeem - El producto se entrega automáticamente
- Compatible con plugins de auth: AuthMe, nLogin, OpeNLogin, LoginSecurity
- Firmas SHA-256 para máxima seguridad
- Sistema de cola para entregas pendientes si el jugador está offline
⚠️ IMPORTANTE: La entrega instantánea SOLO funciona con webhooks, no con keys manuales.
Tiendas compatibles:
- ✅ SellAuth - Requiere configurar webhook + nombre de jugador en custom fields
- ✅ Shoppy.gg - Requiere configurar webhook + campo de username
- ✅ SellHub.cs - Requiere configurar webhook + campo de player_name
- ✅ Genérico - Requiere enviar player_name en el JSON del webhook
- ❌ Keys manuales - NO soportado (el jugador debe usar /redeem)
️ Bases de Datos
- SQLite - Local, sin configuración (por defecto)
- MySQL - Remoto con HikariCP
- H2 - Embebido ultra-rápido
- Supabase - PostgreSQL en la nube
- Migración automática entre bases de datos
Seguridad Empresarial
- Rate limiting - 1 request/segundo por IP NUEVO
- Secretos obligatorios en webhooks NUEVO
- Protección SQL injection NUEVO
- Constant-time comparison contra timing attacks NUEVO
- Firmas criptográficas SHA-256
- Logs de seguridad detallados
⌨️ COMANDOS
Para Jugadores:
Code (Text):
/redeem <key> Canjear una key
Code (Text):
/keygen <tipo> [cantidad] Generar keys
/keygen all [cantidad] Generar keys de todos los tipos
/keygen <tipo> <cantidad> sync Generar y subir a SellAuth
/gift <jugador> <tipo> Regalar producto directamente
/keylist [página] Ver todas las keys
/keyinfo <key> Ver información de una key
/keydelete <key> Eliminar una key
/nuvikimport <file> <tipo> Importar keys desde TXT
/nsk setup Asistente de configuración
/nsk reload Recargar configuración
/nsk stats Ver estadísticas
/nsk sync test Probar conexión SellAuth
/nsk sync products Crear productos en SellAuth
/nsk sync keys <tipo> Subir keys a SellAuth
/nsk sync all Sincronizar todo
/nsk migrate <db> <filtro> Migrar base de datos
/nsk test-webhook Probar Discord webhook
/keygen all [cantidad] Generar keys de todos los tipos
/keygen <tipo> <cantidad> sync Generar y subir a SellAuth
/gift <jugador> <tipo> Regalar producto directamente
/keylist [página] Ver todas las keys
/keyinfo <key> Ver información de una key
/keydelete <key> Eliminar una key
/nuvikimport <file> <tipo> Importar keys desde TXT
/nsk setup Asistente de configuración
/nsk reload Recargar configuración
/nsk stats Ver estadísticas
/nsk sync test Probar conexión SellAuth
/nsk sync products Crear productos en SellAuth
/nsk sync keys <tipo> Subir keys a SellAuth
/nsk sync all Sincronizar todo
/nsk migrate <db> <filtro> Migrar base de datos
/nsk test-webhook Probar Discord webhook
PERMISOS
Code (Text):
nuvikshop.redeem Permite canjear keys (default: true)
nuvikshop.admin Acceso a comandos admin (default: op)
nuvikshop.* Acceso completo (default: op)
nuvikshop.admin Acceso a comandos admin (default: op)
nuvikshop.* Acceso completo (default: op)
INSTALACIÓN RÁPIDA
Paso 1: Instalación Básica
- Descarga NuvikShopKeys.jar
- Colócalo en plugins/
- Reinicia el servidor
- Ejecuta /nsk setup
- ¡Listo!
Paso 2: Configurar tu Tienda
Spoiler: Opción 1: SellAuth (Recomendado) ⭐
¿Por qué SellAuth?
Configuración:
¡Automático! Las keys se suben a SellAuth automáticamente.
- API completa para automatización
- Webhooks en tiempo real
- Panel profesional
- Múltiples métodos de pago
Configuración:
- Ve a https://sellauth.com y crea una cuenta
- Copia tu API Key y Shop ID
- En el servidor ejecuta: /nsk setup
- Sigue el asistente interactivo
- Ejecuta: /nsk sync products
- Genera keys: /keygen vip 100 sync
¡Automático! Las keys se suben a SellAuth automáticamente.
Spoiler: Opción 2: Shoppy.gg
Configuración:
- Panel de Shoppy → Settings → Webhooks
- URL: http://tu-ip:8080/webhook/shoppy
- Secret: Genera uno seguro (32 caracteres)
- Edita config.yml sección webhooks.shoppy
- Genera keys: /keygen vip 100
- Copia keys de plugins/NuvikShopKeys/generated-keys/
- Pega en tu producto de Shoppy
Spoiler: Opción 3: SellHub.cs
Configuración:
- Panel de SellHub → Webhooks
- URL: http://tu-ip:8080/webhook/sellhub
- Secret: Genera uno seguro (32 caracteres)
- Edita config.yml sección webhooks.sellhub
- Genera keys: /keygen vip 100
- Copia keys de plugins/NuvikShopKeys/generated-keys/
- Pega en tu producto de SellHub
Spoiler: Opción 4: Webhook Genérico
Compatible con
cualquier tienda que soporte webhooks personalizados.
Endpoint: http://tu-ip:8080/webhook/generic
Formato JSON esperado:
Endpoint: http://tu-ip:8080/webhook/generic
Formato JSON esperado:
Code (Text):
{
"product_id": "vip",
"email": " [email protected]",
"order_id": "12345",
"player_name": "Steve"
}
"product_id": "vip",
"email": " [email protected]",
"order_id": "12345",
"player_name": "Steve"
}
EJEMPLO DE PRODUCTOS
Code (Text):
predefined-commands:
vip:
command: "lp user %player% parent set vip"
description: "Rango VIP"
price: 9.99
key-expiration-days: 0
max-uses: 1
vip-plus:
command: "lp user %player% parent set vip-plus"
description: "Rango VIP+"
price: 14.99
key-expiration-days: 0
max-uses: 1
coins-1000:
command: "eco give %player% 1000"
description: "1000 Coins"
price: 0.99
key-expiration-days: 30
max-uses: 1
fly:
command: "lp user %player% permission set essentials.fly true"
description: "Permiso de vuelo"
price: 4.99
key-expiration-days: 0
max-uses: 1
vip:
command: "lp user %player% parent set vip"
description: "Rango VIP"
price: 9.99
key-expiration-days: 0
max-uses: 1
vip-plus:
command: "lp user %player% parent set vip-plus"
description: "Rango VIP+"
price: 14.99
key-expiration-days: 0
max-uses: 1
coins-1000:
command: "eco give %player% 1000"
description: "1000 Coins"
price: 0.99
key-expiration-days: 30
max-uses: 1
fly:
command: "lp user %player% permission set essentials.fly true"
description: "Permiso de vuelo"
price: 4.99
key-expiration-days: 0
max-uses: 1
- %player% - Nombre del jugador
- %uuid% - UUID del jugador
- %key% - Código de la key
FLUJO DE TRABAJO
Con SellAuth (Automático):
Opción A: Con Entrega Instantánea (Recomendado) ⚡
- /nsk setup → Configura SellAuth con API Key y Shop ID
- Habilita entrega instantánea en config.yml:
Code (Text):instant-delivery:
enabled: true - /nsk sync products → Crea productos automáticamente
- En SellAuth, añade custom field "player_name" a tus productos
- Cliente compra → Ingresa su nombre de Minecraft en el campo player_name
- Jugador entra al servidor → ¡Recibe el VIP automáticamente sin hacer nada! ⚡
Opción B: Con Keys Tradicionales
- /nsk setup → Configura SellAuth con API Key y Shop ID
- /nsk sync products → Crea productos automáticamente
- /keygen vip 100 sync → Genera 100 keys VIP y las sube
- Cliente compra → Recibe la key por email
- Jugador: /redeem NUVIK-XXXXX → Recibe el VIP
Con Otras Tiendas (Shoppy, SellHub, etc.):
Opción A: Con Entrega Instantánea (Recomendado) ⚡
- Habilita entrega instantánea en config.yml:
Code (Text):instant-delivery:
enabled: true - Configura webhook en tu tienda:
Code (Text):URL: http://tu-ip:8080/webhook/shoppy (o /sellhub)
Secret: Tu secreto seguro - Añade campo "username" o "player_name" en tu producto
- Cliente compra → Ingresa su nombre de Minecraft
- Jugador entra al servidor → ¡Recibe el producto automáticamente! ⚡
Opción B: Con Keys Tradicionales
- /keygen vip 100 → Genera 100 keys VIP
- Copia keys de generated-keys/
- Pega en tu tienda (Shoppy, SellHub, etc)
- Configura webhook apuntando a tu servidor
- Cliente compra → Recibe key → /redeem → ¡Listo!
CARACTERÍSTICAS AVANZADAS
Spoiler: ⚡ Entrega Instantánea - Cómo Funciona
¿Qué es la entrega instantánea?
En lugar de que el jugador tenga que usar /redeem <key>, el producto se entrega automáticamente cuando entra al servidor después de comprar.
Flujo de trabajo:
Configuración:
Plugins de autenticación soportados:
⚠️ REQUISITOS IMPORTANTES:
Configuración por tienda:
SellAuth:
Shoppy.gg:
SellHub.cs:
Webhook Genérico:
¿Qué pasa si el jugador está offline?
¿Qué pasa si no configuro el nombre de jugador?
En lugar de que el jugador tenga que usar /redeem <key>, el producto se entrega automáticamente cuando entra al servidor después de comprar.
Flujo de trabajo:
- Cliente compra en tu tienda (SellAuth, Shoppy, etc.)
- Tienda envía webhook a tu servidor con el nombre del jugador
- Plugin guarda la compra en la tabla pending_deliveries
- Jugador entra al servidor
- Si hay plugin de auth (AuthMe, etc.):
- Plugin espera a que el jugador se autentique
- Después de autenticarse, entrega el producto - Si NO hay plugin de auth:
- Espera 3 segundos (configurable)
- Entrega el producto automáticamente - Jugador recibe el producto sin hacer nada ✨
Configuración:
Code (Text):
instant-delivery:
enabled: true # Activar entrega instantánea
delivery-delay-seconds: 3 # Delay si no hay plugin de auth
auth-timeout-seconds: 60 # Timeout para autenticación
secret-key: "auto-generado" # Clave para firmas SHA-256
cleanup-days: 30 # Limpiar entregas antiguas
enabled: true # Activar entrega instantánea
delivery-delay-seconds: 3 # Delay si no hay plugin de auth
auth-timeout-seconds: 60 # Timeout para autenticación
secret-key: "auto-generado" # Clave para firmas SHA-256
cleanup-days: 30 # Limpiar entregas antiguas
- ✅ AuthMe
- ✅ nLogin
- ✅ OpeNLogin
- ✅ LoginSecurity
- ⚠️ Sin plugin de auth: Usa delay de 3 segundos
⚠️ REQUISITOS IMPORTANTES:
- Webhooks configurados - La entrega instantánea SOLO funciona con webhooks
- Nombre de jugador - La tienda debe enviar el nombre del jugador en el webhook
- Puerto abierto - El puerto 8080 (o el configurado) debe estar accesible desde internet
Configuración por tienda:
SellAuth:
Code (Text):
# En tu producto de SellAuth, añade un custom field:
# Campo: player_name
# Tipo: text
# Requerido: Sí
# El cliente ingresará su nombre de Minecraft al comprar
# Campo: player_name
# Tipo: text
# Requerido: Sí
# El cliente ingresará su nombre de Minecraft al comprar
Code (Text):
# En tu producto de Shoppy, añade un campo personalizado:
# Nombre: username
# Tipo: text
# El cliente ingresará su nombre de Minecraft al comprar
# Nombre: username
# Tipo: text
# El cliente ingresará su nombre de Minecraft al comprar
Code (Text):
# En tu producto de SellHub, añade un campo:
# Campo: player_name
# Tipo: text
# El cliente ingresará su nombre de Minecraft al comprar
# Campo: player_name
# Tipo: text
# El cliente ingresará su nombre de Minecraft al comprar
Code (Text):
{
"product_id": "vip",
"email": " [email protected]",
"order_id": "12345",
"player_name": "Steve" // ← REQUERIDO para entrega instantánea
}
"product_id": "vip",
"email": " [email protected]",
"order_id": "12345",
"player_name": "Steve" // ← REQUERIDO para entrega instantánea
}
- La compra se guarda en pending_deliveries
- Cuando el jugador entre al servidor, recibirá su producto automáticamente
- Las entregas pendientes se guardan hasta que se completen
- Se limpian automáticamente después de 30 días (configurable)
¿Qué pasa si no configuro el nombre de jugador?
- La entrega instantánea NO funcionará
- El sistema generará una key normal
- El jugador deberá usar /redeem <key> manualmente
- La key se enviará por email al cliente
Spoiler: Notificaciones Discord
Code (Text):
discord:
enabled: true
webhook-url: "https://discord.com/api/webhooks/xxx/xxx"
notifications:
key-generated: true
key-redeemed: true
gift-sent: true
suspicious-activity: true
purchase: true
enabled: true
webhook-url: "https://discord.com/api/webhooks/xxx/xxx"
notifications:
key-generated: true
key-redeemed: true
gift-sent: true
suspicious-activity: true
purchase: true
Spoiler: Seguridad
Nuevas características de seguridad v1.9.0:
Code (Text):
security:
redeem-cooldown: 5
max-failed-attempts: 5
lockout-duration: 10
log-attempts: true
redeem-cooldown: 5
max-failed-attempts: 5
lockout-duration: 10
log-attempts: true
- Rate limiting (1 req/seg por IP)
- Secretos obligatorios en webhooks
- Protección SQL injection
- Constant-time token comparison
Spoiler: ️ Migración de Base de Datos
Filtros disponibles: all, ranks, kits, economy, perms, fly
⚠️ Se crea un backup automático antes de migrar.
Code (Text):
/nsk migrate supabase all Migrar todo a Supabase
/nsk migrate mysql ranks Migrar solo rangos a MySQL
/nsk migrate sqlite economy Migrar solo economy a SQLite
/nsk migrate mysql ranks Migrar solo rangos a MySQL
/nsk migrate sqlite economy Migrar solo economy a SQLite
⚠️ Se crea un backup automático antes de migrar.
RENDIMIENTO
- Operaciones asíncronas - No bloquea el servidor
- Batch inserts - 10-50x más rápido que la competencia
- HikariCP - Connection pooling profesional
- Bukkit Scheduler - Optimizado para hostings limitados
- Memory cleanup - Sin memory leaks
- Compatible con hostings de bajo costo
REQUISITOS
- Minecraft: 1.17+
- Java: 17+
- Servidor: Spigot, Paper, Purpur
- Opcional: LuckPerms, Vault, PlaceholderAPI
CHANGELOG v1.9.0
Añadido
- SellHub.cs Integration - Soporte completo para webhooks
- Rate Limiting - Protección contra abuso (1 req/seg por IP)
- Security Hardening - Secretos obligatorios por defecto
- SQL Injection Protection - Validación de nombres de tabla
- Constant-Time Comparison - Prevención de timing attacks
- Configurable Key Limit - Límite máximo configurable
- Automatic Cleanup - Limpieza programada cada 24h
- Enhanced Logging - Logs de seguridad detallados
Mejorado
- Seguridad en webhooks (secretos obligatorios)
- Mensajes de error más descriptivos
- Validación de configuración mejorada
- Limpieza automática de rate limits
- Calidad de código y mantenibilidad
Seguridad
- CRÍTICO: Secretos de webhook obligatorios
- ALTO: Comparación constant-time
- ALTO: Validación contra SQL injection
- MEDIO: Rate limiting en webhooks
- MEDIO: Logs de actividad sospechosa
SOPORTE
⭐ VALORACIONES
Si te gusta el plugin, ¡déjanos una reseña de 5 estrellas! ⭐⭐⭐⭐⭐
Tu apoyo nos ayuda a seguir mejorando.
Tu apoyo nos ayuda a seguir mejorando.
Desarrollado con ❤️ por Nuvik
© 2024-2026 Todos los derechos reservados
© 2024-2026 Todos los derechos reservados
Quick facts
- Edition: Minecraft Java
- File type: .jar
- Minecraft version listed: 1.21
- 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.
NuvikShop Keys is a free Minecraft Java mod. Compatible with Minecraft 1.21. Downloaded 148 times (via Spigot). Download it and open it directly in the game.