Identidad visual por contexto

TAB & SCOREBOARD

Encabezados, filas de estado, prefijos de rango/equipo y etiquetas animadas. Los formatos se editan en los YAML de PTC-Games.

Sobre la cabeza: el belowname muestra el nombre y hasta tres filas más

En lobby y sala de espera la lista TAB muestra rango + nick a los rangos de pago y al staff, y solo el nick a los usuarios normales. En partida, PCW y Parkour el rango desaparece de la lista: se muestra la etiqueta corta del equipo (por ejemplo &c[R] Noob1) con el nick en el color del equipo (list-nick-color: team). Sobre el personaje, la placa de nombre vanilla se oculta automáticamente en todos los equipos del scoreboard (y se reaplica cada tick) para que el nick no salga duplicado y belowname muestra hasta tres filas configurables; la primera línea de cada contexto es el nombre, pintado con el color del equipo elegido o asignado, y las demás muestran clan, nivel, vida, progreso o lo que quieras.

Cómo se reparte: PTC compone la fila de la lista por contexto con list-format: {rank_prefix} en lobby/espera y {team_prefix} en partida, Parkour, espectador y PCW. list-nick-color: team pinta el nick con el color del equipo elegido o asignado; al elegir equipo en la sala de espera el cambio se refleja al instante. El belowname oculta la placa vanilla en todos los equipos del scoreboard mientras está activo y la vuelve a ocultar cada tick si algo la cambia; {player} inserta el nick ya coloreado con el equipo. Para las filas extra se usa una entidad de texto invisible (TextDisplay) que se reposiciona cada tick y solo si el jugador se ha movido.
Tu diseño se conserva: PTC-Games/tab_es.yml nunca se reescribe al cargar ni al ejecutar /ptc reload. PTC lee el archivo tal como lo guardaste y usa los valores empaquetados solo como respaldo en memoria para las claves que falten, así que puedes cambiar todo el diseño y desactivar cualquier sección sin que vuelva al predeterminado. La actualización de formatos antiguos (prefijos con {rank}, cabeceras con {player_rank}, sufijos con rango/clan/nivel/vida y el antiguo belowname de lista) se aplica solo en memoria y nunca escribe el archivo; cuando el archivo ya incluye layout-version: 3 no se vuelve a aplicar. Si editaste el antiguo tab.yml y es más reciente, PTC lo aplica a tab_es.yml una vez y guarda una copia .bak-* del anterior.
Orden tipo servidor grande: primero los equipos (en partida), después el peso del grupo de LuckPerms de mayor a menor, luego los rangos con prefijo y al final los usuarios normales sin rango, ordenados por nick. El puesto se escribe con códigos de color invisibles de tres dígitos, así que el orden se mantiene estable hasta 4095 filas en vez de romperse a partir de la 16.

Lobby PTC

Lista: rango + nick (los usuarios normales solo el nick). Sobre la cabeza, tres filas: nombre con rango, clan + nivel y corazones. Es el único contexto, junto con la espera, donde el rango aparece en la lista.

Espera y partida PTC

En espera la lista muestra rango + nick, y al elegir equipo el nick cambia al color de ese equipo (list-nick-color: team). En partida el rango desaparece: la lista muestra &c[R] Noob1, es decir, etiqueta corta + nick en color del equipo. Sobre la cabeza: nombre con etiqueta de equipo, bajas/muertes y corazones.

PCW

Cabecera propia para desafíos de clanes. La lista muestra la etiqueta del clan/equipo y el nick en color del equipo, sin rango; sobre la cabeza, nombre con etiqueta PCW, clan + nivel y corazones.

Parkour / espectador

Parkour usa identidad verde: lista con [PARKOUR] + nick y, sobre la cabeza, nombre, curso + punto y nivel. Los espectadores mantienen [ESP] gris, nombre y estado explícito.

belowname:
  enabled: true               # false apaga la entidad y devuelve la placa vanilla
  interval-ticks: 2      # cada cuántos ticks se recalculan los textos
  follow-ticks: 1        # 0 = salto instantáneo; 1 = acompaña el suavizado del cliente
  y-offset: 2.6          # altura de la PRIMERA fila sobre los pies del jugador
  anchor: top            # top = la fila 1 queda fija y las demás crecen hacia abajo
  line-height: 0.3       # separación entre filas en bloques (a escala 1)
  scale: 0.4             # tamaño del texto (0.05 - 4)
  max-lines: 3           # filas por encima de la cabeza (1 - 3)
  alignment: CENTER      # LEFT, CENTER o RIGHT
  shadowed: true         # sombra del texto
  see-through: false     # true permite ver la etiqueta a través de bloques
  show-to-self: true     # el propio jugador ve sus filas (útil para comprobarlas)
  opacity: 255           # 0 - 255
  background: none       # none, #RRGGBB o #AARRGGBB
  animation:
    enabled: true
    interval-ticks: 20
  contexts:
    lobby:
      lines:
        - "{rank_prefix}{player}"      # rango solo en lobby y espera
        - "&7Clan: {clan} &8✧ &bLv.{level}"
        - "&c{heart_bar}"
    waiting:
      lines:
        - "{rank_prefix}{player}"
        - "&7Equipo: {player_team} &8✧ &eEn {countdown}s"
        - "&c{heart_bar}"
    game:
      lines:
        - "{team_prefix}{player}"      # sin rango: etiqueta de equipo + nick en su color
        - "&7Bajas: {kills} &8✧ &cMuertes: {deaths}"
        - "&c{heart_bar}"
    spectator:
      lines:
        - "&7[ESP] {player}"
        - "&7&lESPECTADOR"
    parkour:
      lines:
        - "&a[PARKOUR] {player}"
        - "&a{parkour_course} &8✧ &7Punto {parkour_points}"
        - "&bLv.{level}"
    pcw:
      lines:
        - "{team_prefix}{player}"
        - "&6Clan: {clan} &8✧ &bLv.{level}"
        - "&c{heart_bar}"
La primera fila es tuya: el ejemplo usa {rank_prefix}{player} en lobby/espera y {team_prefix}{player} en partida, PCW, Parkour y espectador para que el rango solo se lea donde corresponde. {player} no es texto plano: PTC lo sustituye por el nick con el color del equipo elegido/asignado (blanco en lobby, gris para espectadores, verde en Parkour), así que no hace falta escribir &f delante. Si prefieres el separador de rank-tag-format, escribe {rank_tag} {player}: los usuarios sin rango quedan solo con su nick, sin punto suelto. También puedes añadir filas hasta max-lines: 3, quitarlas o animar cualquiera de ellas convirtiéndola en lista YAML.
Una entidad por jugador: estas filas crean un TextDisplay invisible por jugador conectado (no se guarda en el mundo y se elimina al salir o apagar el plugin). Si prefieres cero entidades extra, pon belowname.enabled: false: la placa vanilla vuelve a mostrarse y puedes escribir la información en nametag.contexts.<contexto>.suffix; la lista TAB mantendrá la identidad de cada contexto.
Se solapa o sube demasiado: sube y-offset (2.6 coloca la primera fila por encima de la cabeza) o baja scale; con anchor: top añadir o quitar filas no mueve la primera. Si no ves el belowname, comprueba que belowname.enabled: true y que show-to-self: true; el propio jugador también puede ocultarse las filas si lo desactiva. Si ves el nombre dos veces, comprueba que belowname.enabled: true: la placa vanilla se oculta sola. Si notas que la etiqueta no acompaña al jugador, deja follow-ticks: 1; con 0 el texto salta en pasos de un tick, que es el límite real sin APIs de anclaje del cliente.

Orden de la lista: en lobby, espera, Parkour y PCW manda el peso del grupo de LuckPerms (de mayor a menor) y, a igualdad, el orden alfabético del nick. En partida PTC primero se agrupa por equipo y después por peso/nick. El cliente ordena por el nombre visible de la lista, así que PTC antepone un código de color invisible con la posición y después el prefijo configurado en list-format (rango en lobby/espera; equipo o clan en partida) y el color del nick: el orden se mantiene estable sin cambiar el aspecto.

Rangos externos y prefijos

El proveedor de permisos puede resolver el prefijo. El formato de equipo/rango se configura por separado.

Compatibilidad del servidor: LuckPerms, Vault, PlaceholderAPI y Multiverse-Core son integraciones opcionales. No es posible garantizar compatibilidad universal con todo plugin: otro plugin que reemplace el scoreboard o edite los mismos equipos puede entrar en conflicto. Configura un solo propietario del sidebar/equipos, y verifica versiones/APIs compatibles en un servidor de pruebas.

Chat de arena y PCW

En partida se conserva el chat privado de equipo PTC y el chat del roster PCW; ambos incluyen el prefijo de rango de LuckPerms, el nombre del clan y el jugador.

channels:
  team:
    format: "&8| &bPTC &7» {rank_prefix}{clan} {player_color}{player}&8: &f{message}"
  pcw:
    format: "&8| &cPCW &7» {rank_prefix}{clan} {player_color}{player}&8: &f{message}"

El nombre de clan se representa como (NombreDelClan). Los formatos editables están en chat_es.yml; para un jugador sin clan, el token queda vacío.

Animaciones configurables

Los marcos cambian según nametag.animation.interval-ticks. Al recargar se respeta lo que hayas guardado: los valores empaquetados solo rellenan claves ausentes en memoria y nunca sobrescriben el archivo.

team-prefixes:
  parkour: "&a[PARKOUR] "
  pcw: "{clan_color}[PCW] "
nametag:
  contexts:
    lobby:
      prefix: ["{rank_prefix}"]
      default-prefix: [""]
      suffix: [""]
    waiting:
      prefix: "{rank_prefix}{team_prefix}"
      default-prefix: "{team_prefix}"
      suffix: ""
    game:
      prefix: "{rank_prefix}{team_prefix}"
      default-prefix: "{team_prefix}"
      suffix: ""
    pcw:
      prefix: "{rank_prefix}{team_prefix}"
      default-prefix: "{team_prefix}"
      suffix: ""

La placa vanilla sobre la cabeza queda oculta mientras el belowname está activo; si lo apagas con belowname.enabled: false, vuelve a mostrarse y tiene dos formatos: prefix se aplica a quien tiene prefijo de rango (rangos de pago y staff, que siempre ven rango + nick) y default-prefix a los jugadores del grupo default/usuario, que por defecto se quedan solo con el nick. Si prefieres que todo el mundo lea una etiqueta, escribe {rank} en default-prefix y dale texto a ranks.none de mensajes_es.yml (viene vacío; por ejemplo "&fUSUARIO"). También vale un texto literal o un color como &a. Los marcos admiten cadena o lista YAML (animación). La lista TAB es independiente y se compone con list-format: en lobby y espera muestra el prefijo del rango, y en partida, Parkour, espectador y PCW muestra la etiqueta de equipo/clan, siempre con el nick pintado por list-nick-color (blanco por defecto; team usa el color del equipo; cada contexto puede sobrescribirlo con nametag.contexts.<contexto>.list-nick-color).

En las cabeceras y pies del TAB puedes usar {rank_tag}: pinta la plantilla rank-tag-format (por defecto " &8• {rank_prefix}") solo cuando el jugador tiene rango, así que un usuario normal lee "Bienvenido/a ItsNoirix" sin punto ni etiqueta suelta. Si escribes {player_rank} en su lugar, el rango se muestra siempre y los sin rango leen ranks.none.

Placeholders de nametag y belowname: {rank_prefix}, {rank_tag}, {team_prefix}, {rank}, {player_rank}, {player} (nick con el color del equipo), {clan}, {level}, {health}, {max_health}, {hearts}, {heart_bar}, {kills}, {deaths}, {assists}, {kill_streak}, {players}, {max_players}, {countdown}, {player_team}, {parkour_course}, {parkour_points}, {parkour_checkpoints} y, para PCW, {pcw_arena}/{pcw_state}. La lista TAB y su visibilidad se aíslan por lobby, sala/arena PTC, partida PCW y circuito Parkour; el sidebar se edita en PTC-Games/scoreboard_es.yml.

Placeholders del sidebar

Las filas de scoreboard admiten los valores de juego construidos en el módulo.

ContextoPlaceholders útiles
Todos/lobby{player}, {rank}, {rank_prefix}, {team_prefix}, {level}, {xp}, {coins}, {arenas_waiting}, {online}, {server_ip}.
Espera{arena}, {state}, {players}, {min_players}, {max_players}, {countdown}, {player_team}, {shop_vote}, {event_vote}, {team_red_count}.
Juego/espectador{game_time}, {core_red}, {alive_cores}, {player_team}, {kills} (asesinatos), {deaths} (muertes), {kill_streak} (racha actual), {assists} (asistencias, dato separado) y {alive_players}.

Marcador y racha de la partida

La plantilla predeterminada evita confundir asistencia con muerte y muestra la racha activa del jugador.

game:
  lines:
    - "&fAsesinatos: &a{kills}"
    - "&fMuertes: &c{deaths}"
    - "&fRacha: &6{kill_streak}"

La racha se reinicia al morir y se recompensa cada cinco asesinatos seguidos (+5 Coins base por hito). Las recompensas elegibles aplican una sola vez el multicoins activo, sin límite diario.

Lista de comprobación visual

Comprueba cada audiencia y el contexto real del jugador antes de publicar un formato nuevo.

  1. Prueba nombre largo, prefijo externo ausente y nombre con colores/equipo.
  2. En partida PTC comprueba que la lista no muestra rango sino la etiqueta del equipo y el nick en su color (&c[R] Noob1), que sobre la cabeza la primera fila usa el equipo y que el nick se ve en amarillo, verde, azul o rojo según el equipo. Confirma también que la placa vanilla no repite el nombre (se oculta sola con belowname.enabled: true). En lobby y espera, en cambio, la lista debe leerse rango + nick.
  3. Comprueba ciclos de animación y caracteres Unicode con el cliente y versión de servidor objetivo.
  4. Verifica espera, partida y espectador; en partidas PTC/PCW el nombre usa el color real del equipo/clan. Revisa colisión con plugins que administren scoreboard o equipos.
  5. Guarda copias de PTC-Games/tab_es.yml y PTC-Games/scoreboard_es.yml antes de editar.