Configuración

Al instalar de forma correcta HoupAuth, se generarán varias carpetas y archivos, a continuación se relacionan la estructura general y contenido de todos los archivos a tener en cuenta.

plugins/
└── HoupAuth/
    ├── config.yml
    ├── joins-events.yml
    ├── internal/
    │   ├── spawn.yml
    │   └── ha-database.db
    └── locales/
        ├── en.yml
        └── es.yml

config.yml

HoupAuth tiene muchas características, personalizaciones y opciones que pueden ser un poco dificíl de entender si no se lee cuidadosamente la configuración. Aquí te detallamos cada sección del config.yml y como configurarla correctamente según tus preferencias.

config.yml
settings:
  general:
    language: "en"
    debug: false
    bstats: true 

    hashing:
      # Define el algoritmo hash utilizado.
      # - Opciones disponibles:
      #  |=> BCRYPT2Y  - BCrypt versión 2Y (más seguro contra ciertos ataques)
      #  |=> BCRYPT2A  - BCrypt versión 2A (más compatible, recomendado)
      #  |=> ARGON2ID  - Argon2id híbrido (recomendado para servidores medianos)
      #  |=> ARGON2I   - Argon2i independiente de datos (mejor contra ataques de canal lateral)
      #  |=> ARGON2D   - Argon2d dependiente de datos (más rápido pero menos seguro)
      algorithm: "BCRYPT2A"

      # Configuración específica para BCrypt
      bcrypt:
        # Factor de costo (4-31). Valores más altos = más seguro pero más lento
        # Recomendado: 12-15 para servidores modernos
        cost: 12

      # Configuración específica para Argon2
      argon2:
        # Número de iteraciones (recomendado: 3-10)
        iterations: 3
        # Memoria en KB (recomendado: 65536 = 64MB)
        memory: 65536
        # Número de hilos paralelos (recomendado: 1-4)
        parallelism: 1

  database:
    #Define el tipo de database que usará HoupAuth para almacenar los datos de los jugadores
    type: 'SQLITE'            # Tipo de database puede ser "SQLITE" o "MYSQL"
    # Edita la siguiente sección SOLO si el tipo es "MYSQL":
    server:
      host: 'localhost'       # MySQL host
      port: 3306              # MySQL port
      database: 'houpclans'   # MySQL database name
      username: 'root'        # MySQL username
      password: ''            # MySQL password

  restrict:
    # Configura las restricciones que tendrá el jugador antes de unirse al servidor.
    name:
      enabled: true # Habilita la lógica sobre nombre de jugadores. Eso hace que solo 
                    # nombres que cumpla con el formato puedan ingresar
      format: "[a-zA-Z0-9_-]*" #El formato permitido en el nombre del jugador
      length:
        min: 3 # Longitud mínima del nombre del jugador
        max: 16 # Logitud máxima del nombre del jugador

    account:
      enabled: true # Habilita la lógica de limite de cuentas por IP
      limit: 1 # Cantidad de cuentas permitidas por IP
      allow-bypass: true # Habilita el bypass por permiso sobre cuentas. 
 

    attempts:
      enabled: true # Habilita sistema de intentos fallidos en inicio de sesión
      max:
        login: 2 # Cantidad fallida antes de expulsar al jugador
        kick: 2 # Cantidad de expulsiones permitidas antes de aplicar lógica de ban (si está habilitado)
      ban:
        enabled: true # Habilita la lógica de ban cuando se alcanza el límite de intentos fallidos
        duration: "15m" # Tiempo inicial de baneo que se le aplicará al jugador.
        increment: "10m" # Tiempo que irá incrementando sobre el valor inicial (Dejar en 0s para deshabilitar)

  security:
    # Oculta la información sensible en los LOGS del servidor.
    # Previene que los pines o contraseñas aparezcan en el outpout de la consola.
    # Habilita "true" para usar el sistema. En caso de "false" los comandos aparecerán
    # en consola con el pin o contraseña que ingrese el jugador.
    hide-sensitive-commands: true
    hide-commands-completely: true #Si es true, /pin, /register, /login, /2fa no aparecerán en los logs. 
                                   #Si es false aparecerá "/pin ****"

authentication:
  method:
    default: "pin"  # Opciones: password, pin
    allow-change:
      method: true # Permite cambiar a los jugadores entre métodos de inicio de sesión
      channel: true # Permite cambiar a los jugadores el canal que se usará para iniciar sesión

  pin:
    channel: "inventory"  # Opciones: command, inventory, anvil
    success-message: "chat" # Opciones: chat, title, actionbar
    auto-confirm: true # Auto confirmar el PIN cuando se completa (inventory channel)
    show: false # Mostrar el pin en el titulo del inventory
    length: 4 # Longitud del pin (mínima y máxima)
    timeout: "30s" # Tiempo que tiene el jugador para registrarse/iniciar sesión
    block:
      repetitive: true # Bloquea pines repetidos (Ej: 1111, 2222, 3333)
      sequential: true # Bloquea pines secuenciales (Ej: 1234, 4321)
    actions:  # Recordatorios constantes enviados al jugador solicitando el ingreso del pin
      title: true
      actionbar: true
      chat: true

  password:
    channel: "command"  # Opciones: command, anvil
    success-message: "chat" # Opciones: chat, title, actionbar
    require-confirmation: true # Si es true, entonces al registrarse deberá colocar /register <password> <password>, si es false, solo tendrá que colocar /register <password>
    length:
      min: 6 # Longitud mínima de la contraseña
      max: 32 # Longitud máxima de la contraseña
    # Requerimientos de contraseña para que sean válidas
    # 0 -> No tiene requisitos
    # 1 -> Debe contener al menos un número
    # 2 -> Debe contener al menos una letra mayúscula
    # 3 -> Debe contener al menos un carácter especial
    # Los niveles son acumulativos, por lo que si se pone 3, debe contener al menos un número y una letra mayúscula junto con un carácter especial
    security: 1
    timeout: "70s" # Tiempo que tiene el jugador para registrarse/iniciar sesión
    actions: # Recordatorios enviados al jugador
      title: true
      actionbar: true
      chat: true

customization:
  # Genera el mundo "ha-limbo" donde se enviarán los jugadores al ingresar al servidor.
  # si está en fale, el mundo no se genera, y el jugador permanece en su posición con efectos aplicados.
  limbo: true
  # Habilita el uso del spawn auth. 
  # Si es "true" al completar registro/login se envia al jugador al auth spawn.
  # Si es "false" y el limbo es "true" el jugador se envia a la última posición conocida.
  # si es "false" y el limbo es "false" el jugador permanece en su posición actual.
  auth-spawn: false
  effects:
    spectator: true # Cambia el modo de juego del jugador a espectador durante el proceso de registro/inicio de sesión
    blindness: true # Aplica ceguera al jugador durante el proceso de autentificación
    hide-inventory: true # Aplica lógica de ocultar inventario durante la autentificación
    hide-scoreboard: true # Aplica lógica de ocultar scoreboard durante la autentificación
  bossbar:
    # Habilita la bossbar con el tiempo restante para iniciar sesión.
    enabled: true
    # Color de la Bossbar (Opciones: RED, BLUE, GREEN, PINK, PURPLE, WHITE, YELLOW).
    color: "RED"
    # Estilo de la BossBar (Opciones: PROGRESS, NOTCHED_6, NOTCHED_10, NOTCHED_12, NOTCHED_20).
    style: "NOTCHED_6"
  # Configuración del sistema de recordatorios (Las actions definidas en cada método)
  reminders:
    frequency: 5  # Segundos de espera entre cada envío
    duration: 3   # Segundos que debe permanecer visible el recordatorio (para title)

# Configura las carácteristicas adicionales que tendrá HoupAuth
features:
  2fa:
    # Habilita el sistema de 2FA para que los jugadores puedan añadirlo a su cuenta.
    enabled: true
    channel: "command"  # Opciones: command, inventory, anvil
    issuer: "HoupAuth"  # Nombre de la cuenta que se mostrará en las aplicaciones de TOPT
    setup-timeout: 300  # Segundos que tiene el jugador para enlazar el 2FA a su cuenta.
    show: false # Mostrar el pin en el titulo del inventory
    timeout: "60s"     # Duración que tendrá el jugador para ingresar el 2fa code.
    max-failed-attempts: 2 # cantidad máxima de intentos fallidos antes de expulsar al jugador o cancelar el setup
    actions: # Recordatorios enviado spara solicitar el ingreso del código 2FA.
      title: true
      actionbar: true
      chat: true

  # Configuración del autologin para jugadores ya autenticados.
  auto-login:
    # Habilita el autologin de manera global.
    enabled: true
    # Duración de la sesión guardada. (en horas, ej. 24 para un día).
    # Establezca es -1 para que la sesión nunca expire.
    session-expiry-hours: 72
    # Habilita el sistema estricto de verificación
    strict-security: true

  motd:
    # Esta es la carácteristica de enviar al jugador la cabeza en el chat.
    enabled: true
    # Habilita la compatibilidad de Skinsrestorer, haciendo que la cabeza que se muestre
    # corresponda a la skin actual del jugador.
    # Requiere que skinsRestorer esté instalado en el servidor.
    use-skinsrestorer: false
    # Usa siempre una cabeza de jugador establecida.
    # Esto ignora la cabeza del jugador y skinsRestorer así estén habilitadas
    # Para usarlo, deberá colocar el uuid correspondiente al jugador del que se desea
    # usar la skin. 
    # Puede encontrar uuui's válidas aquuí: https://namemc.com/minecraft-skins
    custom-head:
      enabled: false
      uuid: "c9d6f853-80ad-4edb-ba5e-2c46b334aa9d"
    # Use una textura personalizada en el MOTD por URL
    # Compatible con todas las imagenes en URL que terminen en .png, .jpg.
    custom-icon:
      enabled: false
      url: "https://cdn-icons-png.flaticon.com/512/6772/6772234.png"

  bedrock:
    # Requiere de FloodGate y Geyser. Si están presentes en el servidor, se puede activar la opción
    # Si está desactivada o no está presente FloodGate ni Geyser, se ignorará esta configuración.
    # En caso de que esté activada, pero no se encuentren las dependencias, emitirá un warning y desactivará la opción.
    enabled: true
    # Opciones: all, register y login.
    # Si es register: El jugador bedrock solo deberá registrarse en su primer inicio de sesión, pero nunca se le solicitará iniciar sesión. Tendrá algo así como un "auto-login" permanente.
    # Si es login: El jugador tendrá el flujo normal: Registro y login cada vez que ingrese al servidor (respetando auto-login y 2fa)
    # Si es all: El jugador bedrock no tendrá que registrarse ni iniciar sesión, siempre tendrá un ingreso directo al servidor. No tendrá acceso a los comandos relacionados con HoupAuth.
    auth-type: "register"
    channel: "command" # Opciones: forms, command
    timeout: "90s" # Tiempo que tiene el jugador para registrarse/iniciar sesión
    actions: # Recordatorios enviados solicitando ingreso de contraseña/pin/2fa
      title: true
      actionbar: true
      chat: true

# Configuración de GUI
gui:
  # Material usado para el fondo del GUI de canal inventory (e.g., black_stained_glass_pane).
  background-item: black_stained_glass_pane
  # Si está en true, entonces los números de los guis se mostraran en stock con su número correspondiente
  # es decir, si está en true el botón 3 en el gui aparecerá con tres cabezas/material en ese slot.
  digit-amount: false
  # Establece el estilo de cada botón que se muestre en el plugin. Soporta tres formatos:
  # - head: base64_texture_value (texturas de cabezas basadas en base64)
  # - id: HeadDatabase_ID (Requiere plugin HeadDatabase)
  # - material: MATERIAL_NAME (Material de Minecraft)
  # Ejemplos:
  # '0': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2YwOTAxOGY0NmYzNDllNTUzNDQ2OTQ2YTM4NjQ5ZmNmY2Y5ZmRmZDYyOTE2YWVjMzNlYmNhOTZiYjIxYjUifX19"
  # '1': "id: 12345"
  # '2': "material: DIAMOND"
  textures:
    '0': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2YwOTAxOGY0NmYzNDllNTUzNDQ2OTQ2YTM4NjQ5ZmNmY2Y5ZmRmZDYyOTE2YWVjMzNlYmNhOTZiYjIxYjUifX19"
    '1': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2E1MTZmYmFlMTYwNThmMjUxYWVmOWE2OGQzMDc4NTQ5ZjQ4ZjZkNWI2ODNmMTljZjVhMTc0NTIxN2Q3MmNjIn19fQ=="
    '2': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDY5OGFkZDM5Y2Y5ZTRlYTkyZDQyZmFkZWZkZWMzYmU4YTdkYWZhMTFmYjM1OWRlNzUyZTlmNTRhZWNlZGM5YSJ9fX0="
    '3': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZmQ5ZTRjZDVlMWI5ZjNjOGQ2Y2E1YTFiZjQ1ZDg2ZWRkMWQ1MWU1MzVkYmY4NTVmZTlkMmY1ZDRjZmZjZDIifX19"
    '4': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjJhM2Q1Mzg5ODE0MWM1OGQ1YWNiY2ZjODc0NjlhODdkNDhjNWMxZmM4MmZiNGU3MmY3MDE1YTM2NDgwNTgifX19"
    '5': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDFmZTM2YzQxMDQyNDdjODdlYmZkMzU4YWU2Y2E3ODA5YjYxYWZmZDYyNDVmYTk4NDA2OTI3NWQxY2JhNzYzIn19fQ=="
    '6': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2FiNGRhMjM1OGI3YjBlODk4MGQwM2JkYjY0Mzk5ZWZiNDQxODc2M2FhZjg5YWZiMDQzNDUzNTYzN2YwYTEifX19"
    '7': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjk3NzEyYmEzMjQ5NmM5ZTgyYjIwY2M3ZDE2ZTE2OGIwMzViNmY4OWYzZGYwMTQzMjRlNGQ3YzM2NWRiM2ZiIn19fQ=="
    '8': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYWJjMGZkYTlmYTFkOTg0N2EzYjE0NjQ1NGFkNjczN2FkMWJlNDhiZGFhOTQzMjQ0MjZlY2EwOTE4NTEyZCJ9fX0="
    '9': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDZhYmM2MWRjYWVmYmQ1MmQ5Njg5YzA2OTdjMjRjN2VjNGJjMWFmYjU2YjhiMzc1NWU2MTU0YjI0YTVkOGJhIn19fQ=="
    'backspace': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODVjMTBhNDY4NjNkNmZkYmY1MTA5NTBiNGMyNDZhMDliNmNlZGFhNDc1YWU5ZGY2MzEwNWE0NzIxN2JhNTA1NiJ9fX0="
    'clear': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzRiMjk4NzMzMmYzZGJlOGMyNjI0YTJlOWQxOGIyZWNkZWIyZjI3M2EwODc5MDI5ZDBjMDcxNzcyMjg2NDZmNCJ9fX0="
    'exit': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjQ3Y2YwZjNiOWVjOWRmMjQ4NWE5Y2Q0Nzk1YjYwYTM5MWM4ZTZlYmFjOTYzNTRkZTA2ZTMzNTdhOWE4ODYwNyJ9fX0="
    'autologin': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmRiYzBjNTM1MjliYzlhODJkNmJjNzM5NzVlNmZlZWNhYWNjMzBlMDE2MzBmYjc3YTY2OTY0MGE5ZTZmZjIzOSJ9fX0="
    'change_pin': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODkyOGVmMzM1MzEzMjE0YmI4Y2MxMzdkZjE1M2MxYmVlN2I3YTlkMWU4ZTYyODFmZTlkMzYyZDkxZmU5ZDg5In19fQ=="
    'two_factor': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzg4NDdjNDNlZTAyMjc2ZmEzNDZkMmRiMTdiMDA5Njk2Zjk3OWY2ODA3OWQwYWMyNjZlODMyMTI3NDBjMjI5OSJ9fX0="
    'confirm': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTkyZTMxZmZiNTljOTBhYjA4ZmM5ZGMxZmUyNjgwMjAzNWEzYTQ3YzQyZmVlNjM0MjNiY2RiNDI2MmVjYjliNiJ9fX0="
    'cancel': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjQ3Y2YwZjNiOWVjOWRmMjQ4NWE5Y2Q0Nzk1YjYwYTM5MWM4ZTZlYmFjOTYzNTRkZTA2ZTMzNTdhOWE4ODYwNyJ9fX0="
    'book': "material: BOOK"
    
# ¡Llegaste hasta el final! ¿Muy complicado? Jaja, esperamos que HoupAuth cumpla con tus necesidades.
# Este archivo de config.yml corresponde a la versión 2.0 de HoupAuth

Última actualización