Power Renderers
Power renderers are client-side definitions that control the visual presentation of a power on an entity. They can activate render layers, show trails, display HUD layouts, hide parts of the player model, and assign animation controllers.
Power renderer files are asset-side content, placed at:
assets/<namespace>/palladium/power_renderers/<id>.json
The file's resource ID must match the ID of the power it belongs to. For example, the power data/mypack/palladium/power/hero.json is paired with the renderer at assets/mypack/palladium/power_renderers/hero.json.
Fields
All fields are optional.
| Field | Type | Default | Description |
|---|---|---|---|
screen_layout | Identifier | see description | ID of the screen layout used for the power screen. When unset, the layout <namespace>:power/<power_path> is used if it exists, otherwise palladium:power/default. See Custom Power Screen. |
render_layers | Conditional ID Map | [] | Render layer IDs to activate while this power is active. |
trails | Conditional ID Map | [] | Trail IDs to activate while this power is active. |
hud_layouts | Conditional ID Map | [] | Screen layouts rendered as HUD overlays while this power is active. See HUD Layouts. |
hidden_model_parts | Map<String, Condition> | {} | Player model parts to hide. Keys are part names, values are conditions controlling when they are hidden. |
animation_controller | Map<Animation Layer, Identifier> | {} | Maps animation layers to animation controller IDs. See Animations. |
ability_bar_textures | Identifier or Map<String, Texture Reference> | Palladium's | Custom sprites for the ability bar HUD. See Ability Bar Textures. |
Conditional ID Maps
The render_layers and trails fields accept two formats:
Simple list (always active):
"render_layers": [
"mypack:hero_suit",
"mypack:hero_cape"
]
Map with conditions (each entry has its own condition controlling when it is active):
"render_layers": {
"mypack:hero_suit": {
"type": "palladium:ability_enabled",
"ability": "mypack:hero#toggle"
},
"mypack:hero_cape": true
}
HUD Layouts
The hud_layouts field renders screen layouts as in-game HUD overlays for the local player. Each entry references a layout from assets/<namespace>/palladium/ui_layouts/, shown while the power is active and the entry's condition passes.
HUD rendering differs from opening the same layout as a screen:
- The layout is placed by its size and alignment. Omit
width/height(see Auto Size) to span the whole screen, the usual setup for HUDs: widget alignments then anchor directly to the screen corners and edges, with the layout'spaddingas margin from the screen edges. A layout with a fixed size renders as a box of that size, positioned by the layout'salignmentfield (default centered). - The layout background is not drawn. If you want panels behind HUD elements, build them from
colored_rectangleorblitwidgets. - There is no mouse. Buttons render but cannot be clicked, tooltips never show, and hover states stay inactive.
Everything else works as usual, including per-widget visibility conditions, which are re-evaluated continuously. Since the map's conditions are also checked every frame, you can toggle whole HUDs with abilities:
"hud_layouts": {
"mypack:hero_hud": {
"type": "palladium:ability_enabled",
"ability": "mypack:hero#helmet_hud"
}
}
Ability Bar Textures
The ability bar HUD is drawn from individual sprites, so each piece can be replaced on its own. Sprites are regular GUI sprites and live in assets/<namespace>/textures/gui/sprites/; they are referenced by their sprite ID (the path inside that folder, without .png).
ability_bar_textures accepts two formats:
Folder – every sprite is taken from the given folder, using the names listed below:
"ability_bar_textures": "mypack:hero_bar"
With this, e.g. the slot_enabled sprite is loaded from assets/mypack/textures/gui/sprites/hero_bar/slot_enabled.png. Sprites that are missing from the folder fall back to Palladium's default ones.
Map – only the listed sprites are replaced, everything else keeps Palladium's default. Values are texture references: a plain ID is a sprite ID, a dynamic texture (#namespace:id) is used as a full texture of the sprite's size instead.
"ability_bar_textures": {
"slot_enabled": "mypack:hero_bar/slot_enabled",
"slot_cooldown": "#mypack:animated_cooldown"
}
Palladium's own sprites are at assets/palladium/textures/gui/sprites/ability_bar/ and can be used as templates. Legacy 256×256 ability bar textures are converted automatically: on every resource reload Palladium splits every loaded texture whose path contains ability_bar (outside textures/gui/sprites/) into sprites under <game dir>/palladium/converted/ability_bars/<namespace>/<texture path>/ and logs where they went in the addon pack log. Move that folder into assets/<namespace>/textures/gui/sprites/ and reference it via the folder form.
| Sprite | Size | Description |
|---|---|---|
power_indicator_top_left, power_indicator_top_right, power_indicator_bottom_left, power_indicator_bottom_right | 52×28 | Background of the power icon / list switch key, one per screen corner. |
ability_list | 24×112 | Background behind the five ability slots. |
single_ability | 24×24 | Background used when the bar collapses to a single ability. |
slot_empty | 18×18 | Slot without an ability. |
slot_disabled | 18×18 | Unlocked ability that is currently off. |
slot_enabled | 18×18 | Unlocked ability that is currently on. Also fills up during activation. |
slot_locked | 18×18 | Locked ability background. |
slot_lock | 18×18 | Lock icon drawn over slot_locked. |
slot_cooldown | 18×18 | Cooldown indicator, revealed from left to right. |
switch_key_forward, switch_key_backward | 8×8 | Arrow next to the list switch key. |
key_jump | 10×5 | Key hint for jump-bound abilities. |
key_mouse_left, key_mouse_right, key_mouse_middle | 5×7 | Key hints for mouse-bound abilities. |
key_mouse_scroll_up, key_mouse_scroll_down | 5×10 | Key hints for scroll-bound abilities. |
key_gui | 8×9 | Key hint for abilities used by clicking them in the power screen. |
energy_bar | 10×112 | Energy bar background. |
energy_bar_fill | 4×106 | Energy bar fill, tinted with the energy bar's color and revealed bottom-up. |
slot_<color> | 24×24 | Frame around a slot, one per ability color. |
Minimal Example
A simple power renderer that activates a render layer and a trail, and assigns an animation controller on the "movement" layer:
{
"render_layers": [
"mypack:hero_suit"
],
"trails": [
"mypack:hero_trail"
],
"animation_controller": {
"movement": "mypack:hero_movement"
}
}
Custom Models
Power renderers can't replace the player model. That's done with transformations now, which also control the hitbox, movement and transition timing on the server side.