Asset Layers

Asset layers are the pieces that come together to make a single Asset "piece" of a HUD. Layers each have a single role/feature, and are configured in the order they will visually appear from top to bottom. For example, A shadow layer would probably be at the bottom of your asset layers, since it should be behind everything. An icon would likely be on top, so nothing blocks the static texture.

Arrangement

Alignment

Asset layers move in the direction of their alignment, from their start position:

align: left center right

Outlined

This will give a shadow-backdrop outline to the asset layer. This can be customized as a HEX code including alpha layer, such as this red at 100% opacity:

  shadow: "#ff0000ff"

Offset

The core positioning of the asset layer - this moves the asset based on the origin point for the whole Asset (where it is placed in HUD Layouts ). This is how to position various layers around within an asset, to make a single object ready to arrange within a HUD.

  offset:
    x: -5  # pixels left/right
    y: 2   # pixels up/down
    z: 0   # render layer (depth), optional

The offset may also be written inline as a comma-separated string of x, y, z. Omitted values default to 0, so all of these are valid:

  offset: "-5, 2"      # x: -5, y: 2
  offset: "-5, 2, 1"   # x: -5, y: 2, z: 1

Color

Some layers can be colored, such as tinting a texture or a font color. Supports named colors from minimessage and hex color codes.

  color: white
  color: "#ffbb00"

Scale

A layer can be scaled, changing the pixel resolution of the input texture by this multiplier.
For example, this would take a 32px square texture and display it as a 16px square texture:

  scale: 0.5

Contents

Text Layer

Text layers can be static or contain placeholders, either from the layer's listener or PlaceholderAPI.

Listener Placeholder Description
%{layer-key}-value% The value of the listener.
%{layer-key}-max% The max of the listener.
%{layer-key}-percent% The percentage output of the listener.

The {layer-key} to be used here is the name of the asset layer whose listener you are displaying, usually the name of the functional text layer to display the value(s) of the bar the asset is for.

Background

A text layer can render a dynamic background behind its text - a nine-slice PNG that automatically stretches to fit the width of whatever text is currently displayed. This is ideal for nameplates, value bubbles, or any text that changes length at runtime.

The texture is sliced into a fixed-width left cap, a fixed-width right cap, and a tileable center column. The caps stay intact while the center stretches to fill the space behind the text, so the corners/edges of your background never distort.

  background:
    texture: ui/text_bg   # the background PNG (required to enable the background)
    cap: 4                # px of the left & right edges that stay intact
    padding: 2            # px the background extends past the text on each side
    offset:
      y: 0                # fine-tune the background's vertical position

The background is only applied when background.texture is set. The background is automatically centered vertically on the text; use offset.y to nudge it up or down.

Option Description Default
texture Path to the background PNG, relative to /MythicHUD/textures/. Enables the background. none
cap Width (px) of the left & right caps that are not stretched. 0
padding Extra px the background extends past the text on each side. 0
offset.y Vertical offset (px) for fine-tuning the background's placement. 0

cap and padding can each be set per-side for asymmetric backgrounds:

  background:
    texture: ui/text_bg
    cap:
      left: 6
      right: 2
    padding:
      left: 4
      right: 4
Example
nameplate:
  text: "%player_name%"
  font: default
  align: center
  background:
    texture: assets/death-message/outline.png
    cap: 5
    padding: 3
  offset:
    x: 0
    y: 0

Static Texture Layer

This layer type is for rendering a single, positioned texture. These are often used for the background of a bar to fill behind it as the front, functional layer empties, or a static icon.

Example

outline:
  texture:   # looking within the `/MythicHUD/textures/` folder
    path: assetsvanilla/exp_bar_short_outline.png  
  align: right
  outlined: false
  color: white
  offset:
    x: 0
    y: 0

Functional Texture Layer

This is a layer for a segmented texture to be linked to one of the configured Listeners, to create a bar which will fill/empty based on the listener's returned percentage.

Uses other layer configurations, and has a function section to configure how the bar represents the listener:

Listener

Listeners determine the percentage fill a bar texture renders.

function:
    listener: health

Increment

The increment is the amount of sections your layer should split into.

function:
    increment: 13
Orientation

The way the layer should deplete from. Can either be Horizontal or Vertical.

function:
    orientation: horizontal
Reversed

Whether or not the layer should deplete the other way. This option defaults to false.

function:
    reversed: true

Example

fill:
  texture:   # looking within the `/MythicHUD/textures/` folder
    path: assets/vanilla/exp_bar_short_fill.png
  align: right
  outlined: false
  color: "#f23a3a"
  scale: 0.5
  offset:
    x: 0
    y: 0
  function:
    listener: health
    increment: 13
    orientation: horizontal
    reversed: false

Repeated Textures

Both the Static and Functional texture layers support a texture.type, controlling how the texture is rendered:

texture.type Description
split (default) The texture is split/cropped into segments, fading in/out as a single bar.
repeated The whole texture is drawn multiple times in a row, like a row of icons.

A repeated texture stamps a copy of the icon side-by-side a number of times, with optional pixel spacing between each copy. This is perfect for icon-style displays such as a row of hearts, ammo pips, or stars.

Option Description Default
spacing Pixels of gap between each repeated copy of the icon. 1

Static Repeated

On a Static Texture Layer the icon is repeated a fixed number of times. The count and spacing are read from the texture section. This is great for a background row of empty hearts to sit behind a functional layer:

empty-hearts:
  texture:
    path: assets/vanilla/heart_empty.png
    type: repeated
    increment: 10   # always draw 10 empty hearts
    spacing: 1      # 1px between each heart
  align: left
  offset:
    x: 0
    y: 0

Functional Repeated

On a Functional Texture Layer the number of copies drawn scales with the layer's Listener, from 0 up to the configured increment. This turns a single icon into a discrete, icon-by-icon bar (e.g. a row of hearts that empties one heart at a time). The count and spacing come from the function section. Layered on top of the static empty-hearts row above, this draws full hearts according to the player's health:

hearts:
  texture:
    path: assets/vanilla/heart.png
    type: repeated
  align: left
  offset:
    x: 0
    y: 0
  function:
    listener: health
    increment: 10   # full health shows 10 hearts
    spacing: 1      # 1px between each heart

Head Layer

This layer renders a player's Minecraft skin face as a pixel-art bitmap display in the HUD. The skin face is sampled as an 8×8 grid, with the hat overlay composited on top if present. Skins are fetched and cached asynchronously; if a skin cannot be loaded, the head renders as solid black.

Size

Controls how many pixels wide/tall each skin pixel renders. The total display width is size × 8.

head:
  size: 4  # default, renders as a 32px square
size Display size
1 8px
4 32px (default)
8 64px

Target

The player whose head to display. Supports showing based on player-names & UUIDs, meaning you can display offline-players too. Also supports PlaceholderAPI to output a specific player based on a placeholder. If not specified, will show HudHolder's head by default

head:
  target: boy0000
  #target: 9cc444cd-47cf-4660-96b7-17a7bfef302c
  #target: "%some_placeholder%"

Example

self-head:
  head:
    size: 4
  align: left
  offset:
    x: 0
    y: 0

killer-head:
  head:
    size: 4
    target: "%last_attacker%"
  align: left
  offset:
    x: 36
    y: 0
Updated Aug 19, 2026