Home›Java›Mods›NuvikShop
NuvikShop
ModsJava

NuvikShop

Minecraft Java mod. Downloads from the MC Java Mods app on Android.

⬇ Download on Spigot

[​IMG]
NuvikShop
Tu propia tienda tipo Tebex - 100% Configurable y Open Source
✓ Sin comisiones | ✓ Control total | ✓ Código abierto
​
¿Qué es NuvikShop?
NuvikShop es una alternativa gratuita y open-source a Tebex/BuyCraft que te permite tener tu propia tienda web para vender rangos, items, comandos y cualquier cosa en tu servidor de Minecraft.
Ventajas sobre Tebex:
⚙️ Arquitectura del Sistema
Code (Text):

┌─────────────────────────────────────────────────────────────────┐
│                    FLUJO DE UNA COMPRA                          │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│   [JUGADOR]                                                     │
│       │                                                         │
│       ▼                                                         │
│   ┌─────────────┐     ┌───────────┐     ┌─────────────┐        │
│   │   WEB       │────▶│  STRIPE   │────▶│   FLASK     │        │
│   │  (Tienda)   │     │ (Pagos)   │     │ (Backend)   │        │
│   └─────────────┘     └───────────┘     └──────┬──────┘        │
│                                                 │               │
│                                                 ▼               │
│   ┌─────────────┐     ┌───────────┐     ┌─────────────┐        │
│   │  MINECRAFT  │◀────│  PLUGIN   │◀────│    COLA     │        │
│   │  (Servidor) │     │ (Pagos)   │     │ (Comandos)  │        │
│   └─────────────┘     └───────────┘     └─────────────┘        │
│                                                                 │
│   El plugin consulta la API cada X segundos buscando           │
│   comandos pendientes y los ejecuta automáticamente.           │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘
 
Captura de pantalla 2025-12-29 220250.png
Componentes del Sistema
Spoiler: 1️⃣ Backend (Flask/Python)
El backend se encarga de:
  • Servir la página web de la tienda
  • Procesar pagos con Stripe
  • Guardar tickets en la base de datos (Supabase)
  • Mantener una cola de comandos pendientes
  • Proveer API para que el plugin consulte
Archivo principal: app.py
Endpoints importantes:
Code (Text):

POST /api/create-checkout-session   → Crea sesión de pago en Stripe
GET  /api/plugin/pending            → Devuelve comandos pendientes (para el plugin)
POST /api/plugin/confirm            → Confirma que un comando fue ejecutado
GET  /success                       → Página de éxito después del pago
GET  /cancel                        → Página de pago cancelado
 
Configuración de productos:
Code (Python):

PRODUCTS = {
    'vip': {
        'price_id': 'price_xxxxx' ,   # ID de Stripe
        'mode': 'payment' ,           # payment o subscription
    } ,
    'mvp': {
        'price_id': 'price_yyyyy' ,
        'mode': 'payment' ,
    } ,
}
 
Spoiler: 2️⃣ Plugin de Minecraft
El plugin se conecta al backend cada X segundos para:
  • Verificar si hay comandos pendientes
  • Ejecutar los comandos en la consola
  • Confirmar la ejecución al backend
Configuración (config.yml):
Code (YAML):

# URL de tu servidor web
api-url
: "https://tu-dominio.com"
# Clave secreta (debe coincidir con el backend)
secret-key
: "tu-clave-secreta-aqui"
# Cada cuántos segundos verificar compras
check-interval-seconds
: 10
# Mostrar logs de debug
debug
: false
 
Mensajes en consola:
Code (Text):

[NuvikShop] ✓ Conexión exitosa con el servidor web!
[NuvikShop] ╔═══════════════════════════════════════╗
[NuvikShop] ║  NUEVA COMPRA DETECTADA!           ║
[NuvikShop] ║  Usuario: Steve
[NuvikShop] ║  Producto: vip
[NuvikShop] ║  Comando: lp user xxx parent set vip
[NuvikShop] ╚═══════════════════════════════════════╝
[NuvikShop] ✓ Comando ejecutado para Steve
 
Spoiler: 3️⃣ Base de Datos (Supabase)
Usamos Supabase (PostgreSQL gratuito) para guardar:
  • products - Catálogo de productos
  • tickets - Historial de compras
  • admin_users - Usuarios del panel admin
Esquema de tickets:
Code (SQL):

CREATE TABLE tickets (
    id TEXT PRIMARY KEY ,
    username TEXT NOT NULL ,
    productId TEXT ,
    product JSONB ,
    STATUS TEXT DEFAULT 'pending' ,
    paymentMethod TEXT ,
    stripeSessionId TEXT ,
    createdAt TIMESTAMPTZ DEFAULT NOW ( ) ,
    updatedAt TIMESTAMPTZ ,
    coupon TEXT ,
    discount NUMERIC DEFAULT 0 ,
    total NUMERIC
);
 
Spoiler: 4️⃣ Pasarela de Pagos (Stripe)
Stripe procesa los pagos reales. Necesitas:
  • Cuenta de Stripe (gratis crear)
  • Crear productos en el Dashboard de Stripe
  • Copiar los price_id al backend
Comisiones de Stripe:
  • ~2.9% + $0.30 por transacción (varía por país)
  • Sin mensualidades
  • Sin contratos
Monedas soportadas: USD, EUR, MXN, GBP, y 135+ más
Instalación Paso a Paso
Paso 1: Configurar Backend
Code (Bash):

# Clonar repositorio
git clone https: //github.com /ReyesAlejandro-Dev /NuvikShop
# Instalar dependencias
pip install -r requirements.txt
# Configurar variables en app.py
# - STRIPE_SECRET_KEY
# - SUPABASE_URL
# - SUPABASE_KEY
# - PLUGIN_SECRET_KEY
# Ejecutar
python app.py
 
Captura de pantalla 2025-12-29 220303.png
Paso 2: Configurar Stripe
1. Crea cuenta en stripe.com
2. Ve a Products → Add Product
3. Por cada producto, copia el price_id
4. Pégalos en el diccionario PRODUCTS de config.py
Paso 3: Configurar Supabase
1. Crea proyecto en supabase.com
2. Usa el esquema SQL proporcionado en db/schema.sql
3. Copia URL y API Key a .env
Paso 4: Instalar Plugin
1. Compila el plugin:
Code (Bash):

cd nuvikshop /plugin
mvn clean package
 
2. Copia target/NuvikShop-1.0.0.jar a plugins/
3. Configura plugins/NuvikShop/config.yml
4. Reinicia el servidor
Paso 5: Crear Grupos en LuckPerms
Code (Text):

/lp creategroup iron
/lp creategroup gold
/lp creategroup vip
/lp creategroup mvp
/lp creategroup legend
/lp creategroup llamatop
# Configurar herencia
/lp group gold parent set iron
/lp group vip parent set gold
/lp group mvp parent set vip
/lp group legend parent set mvp
/lp group llamatop parent set legend
 
Personalización
Spoiler: Añadir nuevos productos
1. Crea el producto en Stripe Dashboard
2. Copia el price_id
3. Añádelo a PRODUCTS en config.py:
Code (Python):

'mi-producto': {
    'price_id': 'price_xxx' ,
    'mode': 'payment' ,
} ,
 
4. Añade el comando en config.py:
Code (Python):

'command': 'give {username} diamond 64' ,
 
Spoiler: Cambiar intervalo de polling
En plugins/NuvikShop/config.yml:
Code (YAML):

# Verificar cada 5 segundos (más rápido pero más carga)
check-interval-seconds
: 5
# Verificar cada 30 segundos (menos carga pero más lento)
check-interval-seconds
: 30
 
Spoiler: Cambiar clave de seguridad
1. En .env:
Code (Python):

PLUGIN_SECRET_KEY = 'mi-nueva-clave-super-secreta'
 
2. En config.yml del plugin:
Code (YAML):

secret-key
: "mi-nueva-clave-super-secreta"
 
API Reference
Spoiler: GET /api/plugin/pending
Descripción: Obtiene comandos pendientes de ejecución
Headers:
Code (Text):

X-Plugin-Secret: tu-clave-secreta
 
Respuesta exitosa (200):
Code (json (Unknown Language)):

{
    "success": true,
    "commands": [
        {
            "id": "abc123",
            "username": "Steve",
            "player_id": "550e8400-e29b-41d4-a716-446655440000",
            "command": "lp user 550e8400-... parent set vip",
            "product_id": "vip",
            "created_at": "2024-01-15T10:30:00"
        }
    ]
}
 
Error de autenticación (401):
Code (json (Unknown Language)):

{
    "error": "Unauthorized"
}
 
Spoiler: POST /api/plugin/confirm
Descripción: Confirma que un comando fue ejecutado exitosamente
Headers:
Code (Text):

X-Plugin-Secret: tu-clave-secreta
Content-Type: application/json
 
Body:
Code (json (Unknown Language)):

{
    "command_id": "abc123"
}
 
Respuesta exitosa (200):
Code (json (Unknown Language)):

{
    "success": true
}
 
❓ FAQ
Spoiler: ¿Qué pasa si el servidor está offline cuando alguien compra?
Los comandos quedan en la cola del backend. Cuando el servidor vuelva a estar online y el plugin se conecte, ejecutará todos los comandos pendientes automáticamente.
Spoiler: ¿Puedo usar esto con BungeeCord/Velocity?
Sí, solo instala el plugin en el servidor donde quieres que se ejecuten los comandos (generalmente el lobby o el servidor principal). Si necesitas ejecutar en múltiples servidores, puedes modificar el plugin para conectar con BungeeAPI.
Spoiler: ¿Soporta suscripciones mensuales?
Sí, Stripe soporta suscripciones. Solo cambia mode: 'payment' por mode: 'subscription' en el producto.
Spoiler: ¿Cómo manejo reembolsos?
Los reembolsos se procesan desde el dashboard de Stripe. Puedes configurar un webhook para charge.refunded y ejecutar un comando de remoción automática.
Soporte

Hecho con ❤️ por el equipo de Llamagedon
⭐ Si te gusta el proyecto, déjanos una estrella en GitHub ⭐
​

​

Plugin details

Read from the plugin's own plugin.yml.

Quick facts

Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.

NuvikShop is a free Minecraft Java mod. Downloaded 16 times (via Spigot). Download it and open it directly in the game.

Explore more