Render Layers
Render layers are client-side definitions that render additional visuals on top of a player, things like suit textures, glowing eyes, capes, or fully custom 3D models. They are referenced by ID from items (via the palladium:render_layers data component) or from power renderers.
Render layer files are asset-side content, placed at:
assets/<namespace>/palladium/render_layers/<id>.json
Shared Properties
Every render layer type supports the following optional top-level fields, regardless of type.
| Field | Type | Description |
|---|---|---|
hidden_model_parts | String or List<String> | Player model parts to hide while this layer is active (e.g. "body.cape", "head"). |
conditions | Conditions | Controls when the layer is visible. See below. |
transformation | Identifier or List<Identifier> | Only shows the layer while the player is in one of these transformations, on the transformed model. Layers without this field are hidden while a transformation model is shown. |
Conditions
The conditions field controls under which circumstances the render layer is shown. In its simplest form it accepts a single Condition that applies in all perspectives:
"conditions": {
"type": "palladium:ability_enabled",
"ability": "mypack:flight"
}
To apply different conditions depending on whether the player is in first or third person, use the full object form:
| Field | Type | Default | Description |
|---|---|---|---|
main | Condition | — | Required. Applies in all perspectives. |
third_person | Condition | always true | Additional condition applied only in third person. |
first_person | Condition | always true | Additional condition applied only in first person. |
"conditions": {
"main": {
"type": "palladium:ability_enabled",
"ability": "mypack:flight"
},
"first_person": {
"type": "palladium:false"
}
}
Textures
Fields that take a texture, like texture on the default render layer, accept three forms:
- A plain texture path including
.png, for example"mypack:textures/entity/suit.png". - A reference to a dynamic texture file with a
#in front, for example"#mypack:suit_lights". - A dynamic texture object written directly into the field, without a separate file. This lets the texture switch with variables or be edited with transformers:
"texture": {
"base": "mypack:textures/entity/suit_#STATE.png",
"variables": {
"STATE": {
"type": "palladium:crouching",
"on_true": "stealth",
"on_false": "default"
}
}
}
See Dynamic Textures for all options.
Model Layers
The model_layer field of the default render layer takes the ID of a model layer, optionally followed by # and the layer name. Without a layer name, main is used:
"model_layer": "mypack:suit"
The model can also change while the game is running. Instead of a plain ID, write an object with a base and variables. Variables work exactly like the ones in dynamic textures: every #NAME in base is replaced with the result of the value with that name, and the result is used as the model layer.
This layer uses mypack:suit_closed normally and mypack:suit_open while crouching:
"model_layer": {
"base": "mypack:suit_#STATE",
"variables": {
"STATE": {
"type": "palladium:crouching",
"on_true": "open",
"on_false": "closed"
}
}
}
Every model layer that can come out of the variables has to exist. If one doesn't, nothing is rendered while the variables point to it, and an error is written to the addon pack log. Variable names in uppercase are a good idea here, so they can't be confused with the layer name after the #.
Like the other fields of a render layer, model_layer can also be split into a wide and a slim version, and each of them can be dynamic on its own.
Types
Below is a list of all render layer types provided by Palladium. In your local palladium/documentation/palladium folder you can find an auto-generated file that may include additional types added by other mods.
Block on Head
palladium:block_on_head- Settings
- Example
| Key | Type | Description | Required | Fallback |
|---|---|---|---|---|
block | Block Tag | ID of the block/block state definition | / |
{
"type": "palladium:block_on_head",
"block": {
"Name": "minecraft:glass"
}
}
Compound Render Layer
palladium:compound- Settings
| Key | Type | Description | Required | Fallback |
|---|---|---|---|---|
layers | Render Layers | The list of render layers this compound render layer contains. | / |
Default Render Layer
palladium:render_layer- Settings
- Example
| Key | Type | Description | Required | Fallback |
|---|---|---|---|---|
model_layer | Model Layer | The model layer to render. Can be a plain model layer like "example:model#main", or an object with a "base" and "variables" to switch between model layers while rendering, the same way dynamic textures do. | minecraft:player | |
texture | Identifier, Dynamic Texture, Texture Reference | The texture to render the model with. | / | |
render_type | minecraft:entity_translucentminecraft:entity_cutoutpalladium:glow | The render type to render the model with. | minecraft:entity_translucent | |
light_emission | (Dynamic) Value | The light emission of the model. Must be within 0 - 15 | 0 |
{
"type": "palladium:render_layer",
"model_layer": {
"wide": "example:wide_model",
"slim": "example:slim_model"
},
"texture": {
"wide": "example:wide_texture",
"slim": "example:slim_texture"
},
"light_emission": 5
}
Geo Render Layer
geckolib:render_layer- Settings
| Key | Type | Description | Required | Fallback |
|---|---|---|---|---|
texture | Identifier, Dynamic Texture, Texture Reference | The texture of the model | / | |
model | Dynamic Identifier | The model to render. Can be a plain ID, or an object with a "base" and "variables" to switch between models while rendering, the same way dynamic textures do. | / | |
animations | Dynamic Identifier | The animations to use. Like the model, it can switch between animation files using variables. | / | |
animation_controller | Animation Controller, Animation Controller[] | The animation controllers to control or trigger the animations. | / | |
light_emission | Integer | The light emission of the model. Must be within 0 - 15 | 0 | |
bones | Map<Bone, String> | The bones of the model. You can specify here what the bones for each body part are called in your model file. | {HEAD=head, BODY=body, RIGHT_ARM=right_arm, LEFT_ARM=left_arm, RIGHT_LEG=right_leg, LEFT_LEG=left_leg} |
Lightning Sparks
palladium:lightning_sparks- Settings
- Example 1
- Example 2
| Key | Type | Description | Required | Fallback |
|---|---|---|---|---|
frequency | Float | The frequency of the sparks. | 0.5 | |
amount | Integer | The amount of sparks to spawn during each occurence. | 5 | |
render_settings | Laser Renderer Settings | The render settings for the sparks. | / | |
model_parts | String, String[] | Model parts the sparks are limited to, like "right_arm" or "head". Each spark picks one of them and stays inside the box of that part, moving along with it. Nested parts can be written as a path like "body.cape". If none are specified, the sparks fill the whole hitbox of the entity. | / |
{
"type": "palladium:lightning_sparks",
"frequency": 0.2,
"amount": 10,
"render_settings": {
"glow": "#0000ff",
"bloom": 2,
"size": 2
}
}
{
"type": "palladium:lightning_sparks",
"amount": 4,
"render_settings": {
"glow": "#ffff00",
"bloom": 2
},
"model_parts": [
"right_arm",
"left_arm"
]
}
Thrusters
palladium:thrusters- Settings
- Example 1
- Example 2
| Key | Type | Description | Required | Fallback |
|---|---|---|---|---|
texture | Identifier, Dynamic Texture, Texture Reference | The texture to render the thrusters with. | palladium:textures/entity/thruster.png | |
scale | Vector 3D | Scale for the thruster | [I@20b1f874 | |
anchors | string[] | Bones of the player model where the thruster will be attached to | [Ljava.lang.Object;@7569efdd | |
color | Color | The color of the thrusters. | / | |
bloom_texture | Identifier, Dynamic Texture, Texture Reference | The texture of the camera-facing bloom rendered at each thruster. | palladium:textures/entity/thruster_bloom.png | |
bloom_color | Color | The color of the bloom. | #EAB62B | |
bloom_scale | Double | Size multiplier for the bloom, relative to the thruster part. Set to 0 to disable. | 1.5 |
{
"type": "palladium:thrusters",
"color": "#ffffff",
"bloom_color": "#ffffff",
"bloom_scale": 1.5
}
{
"type": "palladium:thrusters",
"texture": "mypack:thruster_texture_path",
"scale": [
1,
2,
1
],
"anchors": [
"head",
"right_leg"
],
"color": "#ff0000",
"bloom_color": "#ff0000",
"bloom_scale": 2
}
Vibration
palladium:vibration- Settings
- Example
| Key | Type | Description | Required | Fallback |
|---|---|---|---|---|
intensity | Integer | The intensity of the vibration, i.e. how many offset copies of the entity get blended in. Values above 32 are capped. | / | |
fade_ticks | Integer, Time String ("40s", "2m", etc.) | The time/ticks it needs for the vibration to fade in/out. | / |
{
"type": "palladium:vibration",
"intensity": 10
}