Numdrassl

Numdrassl

Por Internalizable 18 de enero de 2026
#gaming#Hytale#Java#Numdrassl#plugins#Proxy#Servidor

Numdrassl – Hytale Proxy Server

Un servidor proxy de Hytale de alto rendimiento y extensible, escrito en Java, que permite redes de múltiples servidores, transferencias de jugadores, soporte para plugins y un sistema de permisos flexible.

¿Qué es Numdrassl?

Numdrassl es un proxy estilo BungeeCord/Velocity para Hytale. Se sitúa entre los jugadores y tus servidores backend, permitiéndote:

  • Conectar múltiples servidores de Hytale en una sola red
  • Transferir jugadores sin problemas entre servidores
  • Interceptar y modificar paquetes
  • Crear plugins con comandos y eventos personalizados
  • Gestionar permisos con grupos y comodines

Características

  • Red de Múltiples Servidores – Conecta múltiples servidores backend de Hytale (lobby, minijuegos, etc.)
  • Transferencias de Jugadores – Mueve a los jugadores sin problemas entre servidores con /server <nombre>
  • Sistema de Plugins – Amplía la funcionalidad con plugins personalizados
  • Sistema de Permisos – Permisos integrados basados en YAML con grupos, comodines y soporte para proveedores externos
  • Sistema de Eventos – Conéctate a las conexiones de jugadores, chat, comandos y más
  • Protocolo QUIC – Soporte nativo para el transporte QUIC de Hytale con control de congestión BBR
  • Autenticación Segura – Referencias firmadas con HMAC entre el proxy y los servidores backend

Requisitos

  • Java 25 o superior
  • Servidor(es) de Hytale para usar como backend

Instalación

Paso 1: Descargar

Descarga la última versión:

  • proxy-*.jar – El servidor proxy
  • bridge-*.jar – Plugin para tus servidores backend

Paso 2: Ejecutar el Proxy

java -jar proxy-1.0-SNAPSHOT.jar

En la primera ejecución, el proxy:

  • Generará certificados TLS en certs/
  • Creará el archivo de configuración config/proxy.yml
  • Te pedirá que te autentiques con Hytale
  • Paso 3: Autenticarse con Hytale

    En la consola del proxy, ejecuta:

    auth login
    

    Visita la URL mostrada e introduce el código del dispositivo para vincular tu cuenta de Hytale.

    Configuración del Proxy

    Edita config/proxy.yml:

    # Configuración de Red
    bindAddress: "0.0.0.0"
    bindPort: 45585
    
    # Dirección pública (para transferencias de servidor)
    publicAddress: "play.tuservidor.com"
    publicPort: 45585
    
    # Secreto compartido - ¡DEBE coincidir con la configuración de tu plugin Bridge!
    proxySecret: "cambia-esto-por-un-secreto-seguro"
    
    # Servidores Backend
    backends:
      - name: "lobby"
        host: "127.0.0.1"
        port: 5520
        defaultServer: true    # Los jugadores se unen aquí primero
        
      - name: "survival"
        host: "127.0.0.1"
        port: 5521
        defaultServer: false
        
      - name: "minigames"
        host: "192.168.1.100"
        port: 5520
        defaultServer: false
    

    Opciones de Configuración

    Opción Descripción
    bindAddress IP en la que escuchar (0.0.0.0 para todas las interfaces)
    bindPort Puerto en el que escuchar (por defecto: 45585)
    publicAddress Nombre de host/IP pública para transferencias de servidor
    publicPort Puerto público para transferencias de servidor
    proxySecret Secreto compartido para autenticación backend
    backends Lista de servidores backend
    debugMode Habilitar registro detallado (por defecto: false)

    Configuración del Servidor Backend

    Cada servidor backend necesita el plugin Bridge para autenticar conexiones desde el proxy.

    Paso 1: Instalar el Plugin Bridge

    Copia bridge-1.0-SNAPSHOT.jar en la carpeta plugins/ de tu servidor de Hytale.

    Paso 2: Iniciar el Servidor en Modo Inseguro

    java -jar HytaleServer.jar --auth-mode insecure --transport QUIC
    

    Importante: La opción --auth-mode insecure es necesaria porque el proxy maneja la autenticación de Hytale, no el backend.

    Paso 3: Configurar Bridge

    En la primera ejecución, el Bridge crea plugins/Bridge/config.json:

    {
      "proxySecret": "cambia-esto-por-un-secreto-seguro",
      "serverName": "lobby"
    }
    
    Opción Descripción
    proxySecret ¡Debe coincidir! con el proxySecret en la configuración de tu proxy!
    serverName Nombre de este servidor (para registro/identificación)

    Paso 4: Asegura tu Backend (¡Importante!)

    Bloquea conexiones directas a tus servidores backend. Solo permite la IP del proxy:

    # Ejemplo: Solo permitir que el proxy (192.168.1.50) se conecte en el puerto 5520
    iptables -A INPUT -p udp --dport 5520 -s 192.168.1.50 -j ACCEPT
    iptables -A INPUT -p udp --dport 5520 -j DROP
    

    ¡Sin esto, los jugadores podrían eludir el proxy y conectarse directamente!

    Comandos de Jugador

    Comando Alias Descripción
    /server /srv Lista de servidores disponibles
    /server <nombre> /srv <nombre> Transferir a un servidor
    /numdrassl /nd, /proxy Comandos de gestión del proxy
    /numdrassl version Mostrar versión del proxy
    /numdrassl perm ... Gestión de permisos

    Sistema de Permisos

    Los permisos se almacenan en archivos YAML bajo data/permissions/:

    data/permissions/
    ├── players/
    │   └── {uuid}.yml       # Permisos por jugador
    ├── groups/
    │   ├── default.yml      # Grupo por defecto (todos los jugadores)
    │   └── admin.yml        # Grupos personalizados
    └── player-groups.yml    # Asignaciones de jugador a grupo
    

    Permisos de Jugador (`players/

    permissions:
      - numdrassl.command.server
      - numdrassl.command.help
      - -numdrassl.command.stop  # Denegado (prefijo con -)
    

    Permisos de Grupo (groups/admin.yml)

    name: admin
    default: false
    permissions:
      - numdrassl.command.*     # Comodín
      - numdrassl.admin
    

    Comandos de Permisos

    Comando Descripción
    /numdrassl perm user <jugador> info Mostrar grupos/permisos del jugador
    /numdrassl perm user <jugador> add <perm> Conceder un permiso
    /numdrassl perm user <jugador> remove <perm> Eliminar un permiso
    /numdrassl perm user <jugador> addgroup <grupo> Añadir jugador al grupo
    /numdrassl perm user <jugador> removegroup <grupo> Eliminar del grupo
    /numdrassl perm group <grupo> add <perm> Añadir permiso al grupo
    /numdrassl perm group <grupo> remove <perm> Eliminar del grupo
    /numdrassl perm reload Recargar permisos desde el disco

    Comandos de Consola

    Comando Descripción
    auth login Autenticarse con Hytale
    auth status Mostrar estado de autenticación
    auth logout Limpiar credenciales almacenadas
    sessions Listar jugadores conectados
    stop Apagar el proxy
    help Mostrar comandos disponibles

    Desarrollo de Plugins

    ¡Crea plugins para extender el proxy! Los plugins pueden:

    • Escuchar eventos (unión de jugadores, chat, comandos, etc.)
    • Registrar comandos personalizados
    • Modificar paquetes
    • Interactuar con jugadores y servidores

    Dependencia de API:

    dependencies {
        compileOnly("me.internalizable.numdrassl:api:1.0-SNAPSHOT")
    }
    

    Ejemplo de Plugin:

    @Plugin(id = "my-plugin", name = "My Plugin", version = "1.0.0")
    public class MyPlugin {
        
        @Subscribe
        public void onPlayerChat(PlayerChatEvent event) {
            if (event.getMessage().contains("hello")) {
                event.getPlayer().sendMessage("¡Hola a ti también!");
            }
        }
    }
    

    Consulta la Guía de Desarrollo de Plugins para más detalles.

    Resolución de Problemas

    “Proxy no autenticado”

    Ejecuta auth login en la consola del proxy y completa el flujo del código del dispositivo.

    “Mensaje de información de jugador no válido (¿es válido tu secreto de proxy?)”

    El proxySecret en la configuración de tu proxy no coincide con el proxySecret del plugin Bridge.

    “Conexión agotada” al backend

  • Verifica que el servidor backend esté en ejecución
  • Confirma que el firewall permita la IP del proxy
  • Confirma que la dirección/puerto en la configuración sean correctos
  • “No se puede unirse directamente al backend de numdrassl”

    Los jugadores están intentando conectarse directamente al backend. Configura reglas de firewall para bloquear conexiones directas.

    El cliente muestra “paquete inesperado”

    El servidor backend puede no tener instalado el plugin Bridge, o no se está ejecutando con --auth-mode insecure.

    Descripción General de la Arquitectura

    ┌─────────────┐                    ┌─────────────┐                    ┌─────────────┐
    │   Jugador   │ ──── QUIC/TLS ──── │   Proxy     │ ──── QUIC/TLS ──── │   Backend   │
    │   Cliente    │                    │  Numdrassl  │                    │   Servidor  │
    └─────────────┘                    └─────────────┘                    └─────────────┘
                                              │
                                              ├── lobby (por defecto)
                                              ├── survival
                                              └── minigames
    
  • El jugador se conecta al proxy con sus credenciales de Hytale
  • El proxy autentica al jugador con el servicio de sesión de Hytale
  • El proxy reenvía la conexión al backend por defecto con una referencia firmada
  • El backend valida la referencia utilizando el secreto compartido
  • Los paquetes fluyen bidireccionalmente a través del proxy
  • Enlaces

    Licencia

    Proprietaria – Todos los derechos reservados.

    Relacionados:

    Hysouls

    Hysouls

    #gaming#Hysouls#Hytale

    ¡El mod todavía está en una fase alfa muy temprana! Hysouls tiene como objetivo añadir elementos de soulslike a Hytale.A...

    Connecting Planters

    Connecting Planters

    #Conectando Macetas#gaming#Hytale

    Este mod añade dos macetas conectadas al juego para permitir a los usuarios hacer macetas largas y muy bonitas para su i...

    Instant Respawn

    Instant Respawn

    #death screen#gaming#Hytale

    Este plugin elimina completamente la pantalla de muerte en Hytale, similar a la regla de juego doImmediateRespawn de Min...

    Weapon Flow

    Weapon Flow

    #cooldowns#Flujo de Armas#gaming

    WeaponFlow WeaponFlow reemplaza el sistema nativo de habilidades de arma de Hytale basado en golpe a carga con tiempos d...

    Alterverses

    Alterverses

    #actualización#cambio#comunidad

    Change your Hytale server name 18 January 2026 ...