Wolhaiksong

WHSTags

Tags visuales que se sincronizan en todas las modalidades de tu servidor.

H2 / MySQL PlaceholderAPI Geyser / Floodgate LuckPerms MiniMessage

¿Qué es WHSTags?

WHSTags es un sistema de tags para servidores Minecraft con múltiples modalidades. Permite crear tags visuales que los jugadores pueden equiparse y que se muestran en el chat, tab, holograms u otros plugins. Los tags se sincronizan automáticamente entre todas las modalidades del servidor a través de una base de datos MySQL compartida.

Configuración inicial

config.yml

mode: lobby          # lobby | client
server-id: lobby     # identificador único de esta modalidad
gui-mode: self       # self | legacy
language: es         # es | en | fr | de | pt
Campo Descripción
mode lobby — crea y gestiona los tags. client — recibe los tags desde la DB.
server-id Nombre único de esta modalidad (ej: lobby, survival-op, earth). Cada modalidad debe tener uno diferente.
gui-mode self — usa sus propios menús locales. legacy — descarga los menús del lobby.
language Idioma de los mensajes. es para español, en para inglés.

Modos de operación

Lobby (mode: lobby)
  ├── Crea y elimina tags
  ├── Sube tags a MySQL
  └── Puede subir sus menús con /whstags admin upload

Cliente (mode: client)
  ├── Lee los tags desde MySQL
  ├── Guarda el tag activo de cada jugador por modalidad
  └── gui-mode: legacy → descarga los menús del lobby
      gui-mode: self   → usa sus propios menús locales

Comandos

Comando Descripción Permiso
/whstags Abre el menú de tags whstags.use
/whstags set <id> Equipa un tag directamente whstags.use
/whstags remove Quita el tag activo whstags.use
/whstags admin list Abre el menú admin con todos los tags whstags.admin.list
/whstags admin create <id> <display> Crea un nuevo tag whstags.admin.create
/whstags admin delete <id> Elimina un tag whstags.admin.delete
/whstags admin reload Recarga config, idioma y tags desde DB whstags.admin.reload
/whstags admin upload Sube los menús locales a MySQL whstags.admin.upload
/whstags admin download Descarga los menús desde MySQL whstags.admin.download
/whstags admin purge Elimina todos los tags existentes. Requiere escribir confirm en el chat en un plazo de 30 s. whstags.admin.purge
/whstags admin fixperms Corrige permisos bugueados tras cambios de id de tags whstags.admin.fixperms
/whstags admin extract Exporta todos los tags de la DB a un archivo YML whstags.admin.extract
Alias disponibles: /tag, /tags
create, delete y upload solo funcionan en mode: lobby.
download solo funciona en gui-mode: legacy.
extract solo funciona en servidores con mode: lobby.
Todos los comandos (excepto aperturas de menús) pueden ejecutarse desde la consola del servidor.

Permisos

Permiso Descripción Default
whstags.use Abrir el menú y equipar tags true
whstags.<id> Permiso para usar un tag específico (ej: whstags.vip) op
whstags.admin.list Ver todos los tags en el menú admin op
whstags.admin.create Crear tags (solo lobby) op
whstags.admin.delete Eliminar tags (solo lobby) op
whstags.admin.reload Recargar el plugin op
whstags.admin.upload Subir menús a MySQL (solo lobby) op
whstags.admin.download Descargar menús desde MySQL (solo legacy) op
whstags.admin.purge Eliminar todos los tags (solo lobby) op
whstags.admin.fixperms Corregir permisos tras cambios de id op
whstags.admin.extract Exportar los tags a un archivo YML (solo lobby) op

Gestión de Tags

Crear un tag

/whstags admin create <id> <display>
id Identificador interno, solo letras, números, - y _ (máx. 32 caracteres)
display Nombre visual, acepta colores MiniMessage, HEX y códigos &

Ejemplos

/whstags admin create vip <gold>VIP
/whstags admin create mvp <gradient:#FFD700:#FF6B00>MVP</gradient>
/whstags admin create admin <red><bold>ADMIN
/whstags admin create pvp ⚔ <red>PvP God

Editar el id de un tag

En el menú de /whstags admin list, hacé clic derecho sobre un tag para cambiar su id. El plugin te pedirá que escribas el nuevo id en el chat; tenés 30 segundos para hacerlo. Tras un cambio de id, ejecutá /whstags admin fixperms para corregir permisos que hayan quedado desactualizados.

Dar permiso a un jugador (LuckPerms)

/lp user <jugador> permission set whstags.<id> true

Dar permiso a un grupo (LuckPerms)

/lp group <grupo> permission set whstags.<id> true

Formato del archivo exportado

El comando /whstags admin extract genera un archivo YML en la carpeta del plugin con todos los tags de la base de datos. El nombre del archivo incluye la fecha de extracción.

plugins/WHSTags/tags-export-{AAAAMMDD}.yml
# WHSTags Export — 2026-05-26 15:04:47
# Total: 7 tags

tags:
  vip:
    display: "<gold>VIP"
    permission: whstags.vip
  mvp:
    display: "<gradient:#FFD700:#FF6B00>MVP</gradient>"
    permission: whstags.mvp
  admin:
    display: "<red><bold>ADMIN"
    permission: whstags.admin

Sincronización entre modalidades

Flujo de tags

Lobby crea tag → guarda en MySQL → clientes leen al conectarse jugadores

Los clientes cargan el tag activo de cada jugador al conectarse. El tag se guarda por jugador y por modalidad, por lo que un jugador puede tener un tag diferente en cada modalidad.

Flujo de menús (gui-mode: legacy)

1. Lobby configura sus menús localmente
2. /whstags admin upload → sube menu.yml y categorías a MySQL
3. En los clientes: /whstags admin download → descarga y sobreescribe los archivos locales

gui-layout: Diseño del menú

Controla qué carpeta usa el plugin como menú principal. Acepta dos valores:

Valor Descripción
default Comportamiento normal. El plugin usa la carpeta gui/ como siempre.
hub El plugin usa una segunda carpeta gui_hub/ como menú principal. Tiene su propio menu.yml y categories/, pero puede referenciar archivos de gui/categories/ sin duplicarlos. Si un archivo no existe en gui_hub/categories/, el plugin lo busca automáticamente en gui/categories/.
gui_hub/ es completamente local — nunca se sube ni se descarga con /whstags admin upload o download. Esos comandos solo afectan a gui/.

¿Para qué sirve?

Es útil cuando querés un menú principal que agrupe las modalidades del servidor (Modalidad 1, Modalidad 2, Modalidad 3) y que al hacer clic en cada una muestre sus propias categorías de tags, todo sin modificar la configuración base de gui/.

Estructura con gui-layout: hub

plugins/WHSTags/
  gui/
    menu.yml
    categories/
      pvp.yml
      paises.yml
      clanes.yml
  gui_hub/
    menu.yml              ← menú principal con botones por modalidad
    categories/
      earth.yml           ← puede referenciar pvp.yml de gui/categories/
      survival-op.yml
      survival-pvp.yml

PlaceholderAPI

Requiere PlaceholderAPI instalado. Se registra automáticamente al iniciar el servidor.

Placeholder Retorna Ejemplo
%whstags_tag% Display del tag con colores <gold>VIP
%whstags_tag_plain% Display sin colores VIP
%whstags_tag_id% ID interno del tag vip
%whstags_has_tag% Si el jugador tiene tag activo true / false

Uso en otros plugins

# Chat (EssentialsX, CMI, etc.)
{%whstags_tag%} %player_name%: %message%

# TAB
%whstags_tag_plain% | %player_name%

# DecentHolograms
{papi: %whstags_tag%}
{papi: %player_name%}

# Condición (si tiene tag)
%whstags_has_tag% == true

Compatibilidad Bedrock

El plugin detecta automáticamente jugadores de Bedrock via Geyser/Floodgate si están instalados. No requiere configuración adicional.

Base de datos

Por defecto el plugin usa H2 embebida. No requiere instalar ni configurar ninguna base de datos externa; las tablas se crean solas al iniciar.

Para sincronizar tags y menús entre modalidades (mode: lobby + client), configurá MySQL en config.yml. La base de datos whs_tags debe existir antes de iniciar el plugin.

Tabla Contenido
whs_tags Todos los tags creados (id, display)
whs_player_tags Tag activo de cada jugador por modalidad
whs_gui_config Archivos YML de menús subidos desde el lobby

Las tablas se crean automáticamente al iniciar el plugin, tanto en H2 como en MySQL.

Si usás MySQL y al iniciar el servidor aparece un mensaje indicando que falta la configuración de la base de datos, editá plugins/WHSTags/config.yml con los datos de tu MySQL y reiniciá el servidor. Con H2 (valor por defecto) no se requiere ninguna configuración adicional.

MySQL

CREATE DATABASE whs_tags CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;