WHSTags
Tags visuales que se sincronizan en todas las modalidades de tu servidor.
¿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 |
/whstags admin import |
Sube el archivo YML exportado (editado o no) a la base de datos | whstags.admin.import |
/tag, /tags
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 |
whstags.admin.import |
Importar el archivo YML exportado a la base de datos (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
Presets de ítem en el archivo exportado
Además de display y permission, cada tag del archivo exportado puede incluir un bloque item con los mismos parámetros usados en los ítems de menús (item_id, name, lore, banner, enchants, attributes, flags, glow). Este preset se guarda en la base de datos junto al tag.
# WHSTags Export — 2026-07-07 12:00:00
# Total: 1 tags
tags:
colombia:
display: "<gold>ᴄ<dark_blue>ᴏ<dark_red>ʟ"
permission: tags.colombia
item:
item_id: PAPER # o "head:<base64|player|url>"
name: "<gold>colombia"
lore: # lista o string single-line
- "<gray>Click to equip"
banner:
- pattern: STRIPE_TOP
color: RED
enchants:
- "unbreaking:1"
attributes: # solo hide_attributes implementado
- "hide_attributes"
flags: # hide_enchants, hide_dye, etc
- "hide_enchants"
glow: false
item_id, name, lore, etc.), esa configuración local sobreescribe al preset únicamente en esa categoría.
Importar el archivo editado
Después de editar el archivo exportado (agregando o modificando los bloques item), subí los cambios a la base de datos con /whstags admin import. El plugin lee ese mismo archivo y actualiza los tags existentes con la configuración especificada.
/whstags admin extract
# editá plugins/WHSTags/tags-export-{AAAAMMDD}.yml
/whstags admin import
Ejemplo real
Este es un archivo real extraído con /whstags admin extract, con más de 60 tags ya configurados con sus presets de ítem. Podés copiarlo y usarlo como base en tu propio servidor con /whstags admin import.
# WHSTags Export — 2026-07-07 19:35:50
# Total: 66 tags
tags:
tierone:
display: "&4ᴛɪᴇʀ ᴏɴᴇ"
permission: tags.tierone
item:
item_id: armor_stand
egg:
display: "&#FFE066&k: &#FFE066ᴇ&#C8F57Aɢ&#A0F5A0ɢ &#FF99CCᴇɢɢ &#FF99CC&k:"
permission: tags.egg
item:
item_id: egg
dios:
display: "EFF&k::&rEFFᴅ�ACFFɪ�EAFFᴏ�EAFFꜱ�EAFF&k::"
permission: tags.dios
item:
item_id: light_blue_dye
sacerdotisa:
display: "	B00C8ꜱ&#AA00DC &#BB00EEᴀ&#CC00FFᴄ&#BB00EEᴇ&#AA00DCʀ	B00C8ᴅC00B4ᴏD00A0ᴛE008CɪF0078ꜱ񺅠ᴀ"
permission: tags.sacerdotisa
item:
item_id: soul_lantern
venezuela:
display: "&7ᴠ&1ᴇ&4ɴ"
permission: tags.venezuela
item:
item_id: head:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTMwMzMwNDliYWFlMTE4Nzc0MDZkYTQwYmQwNTE3Y2JmYjJiMzdhMjM5OGJlM2JkYTQ5OTViNjFmZmVhYTI0MyJ9fX0=
supremo:
display: "&c&k:: &aꜱᴜᴘʀᴇᴍᴏ &c&k::"
permission: tags.supremo
item:
item_id: light_blue_concrete
casual:
display: "&#A8D8EA&ki &#A8D8EAᴄᴀꜱᴜᴀʟ &#A8D8EA&ki"
permission: tags.casual
runner:
display: "&3ʀᴜɴɴᴇʀ"
permission: tags.runner
item:
item_id: feather
vip:
display: "&8&k:&#FFF799ᴠ&#FFE066ɪ&#FFD94Dᴘ&8&k:"
permission: tags.vip
item:
item_id: gold_ingot
bunny:
display: "&#E0F7FF&k: &#E0F7FFʙ&#C9F0FFᴜ&#B2E9FFɴ	BE2FFɴTDBFFʏ TDBFF&k:"
permission: tags.bunny
item:
item_id: white_dye
goat:
display: "&#FFD700&ki &#FFD700ɢᴏᴀᴛ &#FFD700&ki"
permission: tags.goat
item:
item_id: emerald_block
extinto:
display: "&#F2A8C0&k::&#F2A8C0ᴇ&#F4AEC5xᴛ&#F5B4CAɪ&#F7BAD0ɴ&#F8C0D5ᴛ&#FAC6DAᴏ&#FBCCDF&k::"
permission: tags.extinto
item:
item_id: pink_concrete
menace:
display: "&#FF0000&ki &#FF0000ᴍᴇɴᴀᴄᴇ &#FF0000&ki"
permission: tags.menace
item:
item_id: redstone_block
explorer:
display: "&#F5E642&k:: &#F5E642ᴇ&#F7E94Dxᴘ&#F9EC58ʟ&#FAEE63ᴏ&#FCF16Eʀ&#FDF479ᴇ&#FFF484ʀ &#FFF484&k::"
permission: tags.explorer
item:
item_id: yellow_concrete
boost:
display: "&a&k:&#E700FFʙᴏᴏꜱᴛ&a&k:"
permission: tags.boost
item:
item_id: purple_concrete
ecuador:
display: "&6ᴇ&1ᴄ&4ᴜ"
permission: tags.ecuador
item:
item_id: head:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzI4NjliNTVhNDAxYzg3ZmI5M2MzNmEyZDJlNzRlYTRkZDcyMjU0MmFiMGZjM2MwZGJmOTUxMTc3MzI1MTQ1NSJ9fX0=
forest:
display: "�D3D00&k:: �D3D00ꜰA5C00ᴏĕA00ʀ񔽠ᴇD9900ꜱ.B300ᴛ .B300&k::"
permission: tags.forest
item:
item_id: oak_log
hadesgod:
display: "&#FCFF00&k:&r&#FF0000ʜ&#F92000ᴀ&#F44000ᴅ&#EE6000ᴇ&#E98000ꜱ &#DDBF00ɢ&#D8DF00ᴏ&#D2FF00ᴅ&#D7E600&k:&#D2FF00&k:"
permission: tags.hadesgod
item:
item_id: red_concrete
warrior:
display: "B0000&k: B0000ᴡ&#A00000ᴀ&#B50000ʀ&#CA0000ʀ&#DF0000ɪ&#F00000ᴏ&#FF2020ʀ"
permission: tags.warrior
item:
item_id: diamond_axe
ripbp:
display: "&#FF5D00&k;;&r�FFC1ʀ�FFAEɪ�FF9Cᴘ �FF77ʙ�FF64ᴘ&#FF5D00&k;;"
permission: tags.ripbp
item:
item_id: bedrock
elite:
display: "	B59B6&ki 	B59B6ᴇʟɪᴛᴇ 	B59B6&ki"
permission: tags.elite
paraguay:
display: "&4ᴘ&fᴀ&1ʀ"
permission: tags.paraguay
item:
item_id: head:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODE3OGRlNjkxYjUwOGQ2MjQ5MTA5ZmM1NGFmNmZiYTQ5YmFhODM3N2FkMzcwNjEyZWQ2MTdkNzdkZDZhZDU4OCJ9fX0=
builder:
display: "B4513ʙ	B5523ᴜ&#AB6533ɪ&#BB7543ʟ&#CB8553ᴅ&#DB9563ᴇ&#EBA573ʀ"
permission: tags.builder
item:
item_id: bricks
guardian:
display: "෼&k: ෼ɢA99ᴜEB3ᴀHCCʀVE6ᴅcFFɪVE6ᴀHCCɴ"
permission: tags.guardian
item:
item_id: shield
colombia:
display: "&6ᴄ&1ᴏ&4ʟ"
permission: tags.colombia
item:
item_id: head:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzcyMTIwYjlmZTc3ZDc3MGIyNTRiMzljN2JlOWIxY2VjY2VmNmFkZmU3YTVjYzY4OWFiMWZkMjNlM2MifX19
noob:
display: "&7&k:&#FF0000ɴ�FF11ᴏ&#C434C0ᴏ&#D2FF00ʙ&7&k:"
permission: tags.noob
mexico:
display: "&2ᴍ&fᴇ&4x"
permission: tags.mexico
item:
item_id: head:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTNjNzlhNzhkZTVjYmVkYmQyMjEwMzZhNjRmNGM2ZWMzOTExOTYwZGUxNzZiZGJlNDliNGQ1MDFmNDFkZjMifX19
hacker:
display: "&7&k:&#FF0000ʜ&#F63300ᴀ&#ED6600ᴄ&#E49900ᴋ&#DBCC00ᴇ&#D2FF00ʀ&7&k:"
permission: tags.hacker
item:
item_id: head:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNGUyYzZiNjMyN2Q1ZDdkNjE2Y2RhYjM1NDMxM2E5NmQ2MTk1NzA4NGZlZTJkNDE5ZTVlODgzZTg2NjA5NjVkOSJ9fX0=
rage:
display: "B0000&ki B0000ʀᴀɢᴇ B0000&ki"
permission: tags.rage
item:
item_id: magma_block
uruguay:
display: "&fᴜ&9ʀ&fᴜ"
permission: tags.uruguay
item:
item_id: head:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzNmNjlmNjdhNjVmYjJlNmU4MGY3MDhiNTU5ZDIzYzVmNzY5YTFmNWE1NmMzYWQ2MTliY2NhODQ0ZmMyYmZkNSJ9fX0=
scout:
display: "D1A&k: D1Aꜱ�D6626ᴄA8033ᴏ񄖄ᴜ"B34Dᴛ "B34D&k:"
permission: tags.scout
item:
item_id: turtle_scute
brasil:
display: "&2ʙ&eʀ&1ᴀ"
permission: tags.brasil
item:
item_id: head:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOWE0NjQ3NWQ1ZGNjODE1ZjZjNWYyODU5ZWRiYjEwNjExZjNlODYxYzBlYjE0ZjA4ODE2MWIzYzBjY2IyYjBkOSJ9fX0=
easter:
display: "&#FFB3D9&k: &#FFB3D9ᴇ&#FFC9E3ᴀ&#FFD4EBꜱ&#FFDEEFᴛ&#FFE8F3ᴇ&#FFF2F8ʀ &#FFF2F8&k:"
permission: tags.easter
grinch:
display: "�D5C00&k:A6B0D&k:ĕA1Aɢ񔼗ʀ񦐒ɪE9741ɴBA64EᴄDB55BʜKC468&k:RD375&k:"
permission: tags.grinch
item:
item_id: lime_concrete
iefra:
display: "&x&C&8&0&0&F&F&l&o&nʀ&x&C&8&0&0&F&F&l&o&nʜ&x&8&E&1&3&E&9&l&o&nʏ&x&5&3&2&5&D&2&l&o&nᴛ&x&1&9&3&8&B&C&l&o&nʜ&x&1&6&5&7&A&B&l&o&nᴍ&x&1&2&7&5&9&A&l&o&nɪ&x&0&F&9&4&8&9&l&o&nᴄ"
permission: tags.iefra
item:
item_id: red_tulip
lore:
- "&8| &d🗲 Tag custom de: &6iEfra"
argentina:
display: "&bᴀ&eʀ&bɢ"
permission: tags.argentina
item:
item_id: head:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjZkMDMzZGM1ZjY3NWFkNTFiYzA2YzdhMTk0OWMzNWExZDM3ZTQ4YTJlMWMyNzg5YzJjZjdkMzBlYzU4ZjMyYyJ9fX0=
legit:
display: "&7&k:&fʟᴇɢɪᴛ&7&k:"
permission: tags.legit
item:
item_id: lime_wool
heartearth:
display: "&fɪ&c❤&fᴇᴀʀᴛʜ"
permission: tags.heartearth
item:
item_id: rose_bush
sacerdote:
display: "&#B8860Bꜱ&#C9950Cᴀ&#DAA520ᴄ&#EBB630ᴇ&#F5C842ʀ&#FFD700ᴅ&#F5C842ᴏ&#EBB630ᴛ&#DAA520ᴇ"
permission: tags.sacerdote
item:
item_id: lantern
ezzz:
display: "&cᴇᴢᴢᴢ"
permission: tags.ezzz
item:
item_id: redstone
hunter:
display: "A4000ʜþD00ᴜ񊭐ɴB7300ᴛ񲙸ᴇ񾻜ʀ"
permission: tags.hunter
item:
item_id: diamond_sword
toxic:
display: "'FF14&ki 'FF14ᴛᴏxɪᴄ 'FF14&ki"
permission: tags.toxic
item:
item_id: dragon_egg
void:
display: "EFF&k::EFFᴠ࡙FFᴏငFFɪငFFᴅငFF&k::"
permission: tags.void
item:
item_id: obsidian
king:
display: "&#CDFA1D&k: &#D6F51Cᴋ&#DEF01Bɪ&#E6EB19ɴ&#EEE618ɢ ♛ &#FFDC16&k:"
permission: tags.king
item:
item_id: gold_block
pro:
display: "&7&k:&#FF0000ᴘ�FF11ʀඖC4ᴏ&7&k:"
permission: tags.pro
item:
item_id: head:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWI5YzQ1OTM0NGIxZDVlNjdkMjM5YzdiZDg4NzQxZWE2MDM1ZGIzNzRkNDU0NDk5OTE0ODcxNzk4M2ZlZDg5NCJ9fX0=
trash:
display: "󅒐&ki 󅒐ᴛʀᴀꜱʜ 󅒐&ki"
permission: tags.trash
item:
item_id: coal_block
ocean:
display: "EB5&k:: EB5ᴏ7CCᴄBE3ᴇRFAᴀbFFɴ bFF&k::"
permission: tags.ocean
item:
item_id: water_bucket
warden:
display: "D00FF&k::ટFFᴡ߯FFᴀA4AFFʀՒFFᴅ�D7BFFᴇʵFFɴ�ACFF&k::"
permission: tags.warden
item:
item_id: sculk
frosty:
display: "DD9FF&k:DDDFF&k:DE0FFꜰDE4FFʀDE8FFᴏ	DEBFFꜱ&#ADEFFFᴛ&#BDF3FFʏ&#FFFFFF&k:&#FFFFFF&k:"
permission: tags.frosty
item:
item_id: snow_block
chile:
display: "&1ᴄ&fʜ&4ʟ"
permission: tags.chile
item:
item_id: head:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTAzNTk0YzBjMTE2YjA1ZDc1NjA2MGEyMjM5ODM3NzQ3ODg4NzMyMjY5MzVkOTYyNzExYmMzZTI1ODQ2ZGM2YiJ9fX0=
peru:
display: "&4ᴘ&fᴇ&4ʀ"
permission: tags.peru
item:
item_id: head:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjRkMDNiZDQ0MTBiYWJkYzY4MjQ5M2IzYzJiYmEyNmU3MzBlNmJjNjU4ZDM4ODhlNzliZjcxMmY4NTMifX19
santa:
display: "&#FF0000&k:&#FF1A1A&k:&#FF3333ꜱ&#FF4D4Dᴀ&#FF6666ɴ&#FF8080ᴛ&#FF9999ᴀ&#FFB3B3&k:&#FFFFFF&k:"
permission: tags.santa
item:
item_id: red_wool
unitedstates:
display: "&1ᴜ&4ꜱ&fᴀ"
permission: tags.unitedstates
item:
item_id: head:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZmNiYzMyY2IyNGQ1N2ZjZGMwMzFlODUxMjM1ZGEyZGFhZDNlMTkxNGI4NzA0M2JkMDEyNjMzZTZmMzJjNyJ9fX0=
lava:
display: "&#FF1500ʟ&#FF3D00ᴀ&#FF6600ᴠ&#FF8C00ᴀ"
permission: tags.lava
item:
item_id: lava_bucket
vape:
display: "&cᴠᴀᴘᴇ"
permission: tags.vape
item:
item_id: barrier
end:
display: "&#FF00EEᴇɴᴅ"
permission: tags.end
item:
item_id: end_stone
easygame:
display: "&dᴇᴀꜱʏɢᴀᴍᴇ"
permission: tags.easygame
item:
item_id: emerald
gg:
display: "&e&ki &eɢɢ &e&ki"
permission: tags.gg
item:
item_id: egg
npc:
display: "&b&ki &bɴᴘᴄ &b&ki"
permission: tags.npc
slayer:
display: "&#FF00C4&k::&#FF00C4ꜱ&#DB00D8ʟ&#B800EBᴀⒸFFʏⒸFFᴇⒸFFʀⒸFF&k::"
permission: tags.slayer
item:
item_id: netherite_sword
nature:
display: "A5C00ɴE7A00ᴀ񫗸ᴛ9B600ᴜBD400ʀPF200ᴇ"
permission: tags.nature
item:
item_id: sand
rekt:
display: "&#FF4500&ki &#FF4500ʀᴇᴋᴛ &#FF4500&ki"
permission: tags.rekt
item:
item_id: diamond_block
espana:
display: "&4ᴇ&eꜱ&4ᴘ"
permission: tags.espana
item:
item_id: head:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzJkNzMwYjZkZGExNmI1ODQ3ODNiNjNkMDgyYTgwMDQ5YjVmYTcwMjI4YWJhNGFlODg0YzJjMWZjMGMzYThiYyJ9fX0=
bolivia:
display: "&4ʙ&6ᴏ&2ʟ"
permission: tags.bolivia
item:
item_id: head:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZmQyYzlmOTg2MThjZDVmN2RiZjBjMWE1NGVlMDk0NzQ2NjJiNzEzYjVhYTI2NWM4NWVmYmZjNDY0MThlOTE1In19fQ==
earth:
display: "A6BFF&k:: A6BFFᴇA8BFFᴀAA8FFʀ�FBF6Fᴛ�AD45Fʜ �AD45F&k::"
permission: tags.earth
item:
item_id: grass_block
nohands:
display: "&eɴᴏ ʜᴀɴᴅꜱ"
permission: tags.nohands
item:
item_id: coal
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.
MySQL
CREATE DATABASE whs_tags CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;