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