Skip to content

El archivo del holograma ​

Nunca necesitas tocar los archivos: el editor web y los comandos los escriben. Esta página es para quien quiera hacerlo, y para entender lo que escribió el editor.

Cada holograma es un archivo, plugins/HologramBB/holograms/<id>.yml. Después de editarlo a mano, ejecuta /hbb reload; un error se avisa en la consola con el archivo y la clave, y los demás hologramas cargan igual.

Ajustes y capas ​

yaml
location: { world: world, x: 0.5, y: 65.0, z: 0.5, yaw: 0 }
view-distance: 48        # bloques
look-radius: 1.0         # qué tan cerca de su centro debe apuntar un jugador para mirarlo
update-interval: 20      # ticks entre refrescos de placeholders del texto, 0 para nunca
hitbox: [1.0, 2.5]       # opcional: ancho y alto de la caja de click

layers:                  # se dibujan en este orden
  title:
    type: text           # text | item | block
    text: "<gold>TIENDA" # MiniMessage, {player}, %placeholders%
    offset: [0, 2.2, 0]  # o un solo número, solo para la altura
    scale: 1.0           # o [x, y, z]
    rotation: [0, 0, 0]  # grados alrededor de x, y, z
    billboard: center    # fixed | vertical | horizontal | center
    background: transparent   # transparent | default | "#AARRGGBB"
    shadow: false
    see-through: false
    line-width: 200
    alignment: center    # center | left | right
    opacity: 255
    brightness: -1       # 0..15, o -1 para la luz del mundo
    glow: none           # "#RRGGBB" para un contorno de color
    shadow-radius: 0     # sombra en el suelo; 0 para ninguna
    shadow-strength: 1
  icon:
    type: item
    item: EMERALD
    display: fixed       # none | head | gui | ground | fixed | ...
  base:
    type: block
    block: "minecraft:oak_log[axis=x]"

visibility:              # todo opcional
  permission: tienda.ver
  condition: "%player_level% >= 10"
  manual: false

Comportamiento ​

Lo que hace un holograma es un pequeño conjunto de estados, que cada jugador recorre por su cuenta. Un estado repite sus animaciones de loop mientras el jugador está en él; su lista on reacciona a los activadores, de arriba abajo, y el primero que tiene goto termina la lista.

yaml
behavior:
  initial: idle
  states:
    idle:
      loop: [ "bob", "spin@icon" ]
      on:
        - when: { near: 4 }
          play: [ "pop-in@title" ]
          goto: close
    close:
      loop: [ "bob", "spin(period=30)@icon" ]
      on:
        - when: look
          play: [ "wiggle@icon" ]
        - when: right-click
          play: [ "bounce" ]
          run: [ "[player] warp tienda", "[sound] entity.villager.yes" ]
        - when: { placeholder: "%vault_eco_balance% < 100" }
          text: { title: "<red>Sin dinero" }
        - when: { far: 6 }
          goto: idle

Un holograma que solo repite animaciones puede usar la forma corta loop: [ bob ] en vez de behavior.

Activadores ​

Cada uno se dispara una vez, en el momento en que se cumple.

ActivadorSe dispara cuando
near: 4el jugador se acerca a menos de 4 bloques
far: 6el jugador se aleja a más de 6 bloques (usa más que near, para que no parpadee)
look / look-awayempieza / deja de mirarlo, sin un bloque en medio
click, left-click, right-clickle hace click
after: 200200 ticks después de que empezó el estado
placeholder: "%x% >= 10"la comparación se cumple: < <= > >= == !=

A un jugador que entra en la distancia de visión se le trata como a uno que acaba de alejarse: si el primer estado se acerca a un estado que se aleja con animaciones, el holograma empieza como quedaría después de alejarse, ya escondido si alejarse lo esconde.

Qué hace un activador ​

ClaveHace
playAnimaciones que se reproducen una vez
textCambios de texto para ese jugador: { capa: "texto nuevo" }
run[player] comando, [console] comando, [message] texto, [sound] nombre volumen tono. Una línea sin etiqueta se ejecuta como el jugador.
gotoEl estado al que pasa

Animaciones ​

Una animación se nombra nombre, nombre@capa o nombre(ajuste=valor,…)@capa. Sin @capa se reproduce en todas las capas. Las que vienen listas están en Efectos.

Las tuyas van en clips: dentro del archivo, o en plugins/HologramBB/clips.yml para compartirlas entre hologramas:

yaml
clips:
  balanceo:
    duration: 40
    loop: true
    tracks:
      - layer: title           # opcional; si no, la capa donde se reproduce
        property: rotation-z   # translation-x/y/z, rotation-x/y/z, scale, opacity,
                               # reveal, count, rainbow, glow
        keyframes:
          - { t: 0,  value: -4, ease: ease-in-out-sine }
          - { t: 20, value: 4,  ease: ease-in-out-sine }
          - { t: 40, value: -4 }

ease da forma al tramo que empieza en ese fotograma: cualquier nombre de easings.net (ease-out-back, easeInOutSine), linear, step, o cubic-bezier(x1,y1,x2,y2).

La sección editor ​

Un holograma guardado desde el editor web también tiene una sección editor:: los momentos y sus líneas de tiempo, para que se abra otra vez como lo dejaste. El plugin la ignora y reproduce el behavior y los clips que el editor escribió al lado. Si editas esos dos a mano y dejas editor:, el editor escribirá encima de tus cambios la próxima vez que guarde; quita editor: si pasas a editarlo a mano.