Skip to main content
Version: 26.1+

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.

FieldTypeDescription
hidden_model_partsString or List<String>Player model parts to hide while this layer is active (e.g. "body.cape", "head").
conditionsConditionsControls when the layer is visible. See below.
transformationIdentifier 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:

FieldTypeDefaultDescription
mainCondition—Required. Applies in all perspectives.
third_personConditionalways trueAdditional condition applied only in third person.
first_personConditionalways trueAdditional 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​

ID: palladium:block_on_head
Renders a block on the top of the entity's head.
KeyTypeDescriptionRequiredFallback
blockBlock TagID of the block/block state definition/

Compound Render Layer​

ID: palladium:compound
A compound render layer that can contain multiple render layers.
KeyTypeDescriptionRequiredFallback
layersRender LayersThe list of render layers this compound render layer contains./

Default Render Layer​

ID: palladium:render_layer
Default render layer that renders a model with a texture.
KeyTypeDescriptionRequiredFallback
model_layerModel LayerThe 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
textureIdentifier,
Dynamic Texture,
Texture Reference
The texture to render the model with./
render_typeminecraft:entity_translucent
minecraft:entity_cutout
palladium:glow
The render type to render the model with.minecraft:entity_translucent
light_emission(Dynamic) ValueThe light emission of the model. Must be within 0 - 150

Geo Render Layer​

ID: geckolib:render_layer
Uses GeckoLib to render a geo model, including animations
KeyTypeDescriptionRequiredFallback
textureIdentifier,
Dynamic Texture,
Texture Reference
The texture of the model/
modelDynamic IdentifierThe 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./
animationsDynamic IdentifierThe animations to use. Like the model, it can switch between animation files using variables./
animation_controllerAnimation Controller,
Animation Controller[]
The animation controllers to control or trigger the animations./
light_emissionIntegerThe light emission of the model. Must be within 0 - 150
bonesMap<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​

ID: palladium:lightning_sparks
Renders lightning sparks around the entity.
KeyTypeDescriptionRequiredFallback
frequencyFloatThe frequency of the sparks.0.5
amountIntegerThe amount of sparks to spawn during each occurence.5
render_settingsLaser Renderer SettingsThe render settings for the sparks./
model_partsString,
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./

Thrusters​

ID: palladium:thrusters
Renders thrusters on the end of each limb of the player.
KeyTypeDescriptionRequiredFallback
textureIdentifier,
Dynamic Texture,
Texture Reference
The texture to render the thrusters with.palladium:textures/entity/thruster.png
scaleVector 3DScale for the thruster[I@20b1f874
anchorsstring[]Bones of the player model where the thruster will be attached to[Ljava.lang.Object;@7569efdd
colorColorThe color of the thrusters./
bloom_textureIdentifier,
Dynamic Texture,
Texture Reference
The texture of the camera-facing bloom rendered at each thruster.palladium:textures/entity/thruster_bloom.png
bloom_colorColorThe color of the bloom.#EAB62B
bloom_scaleDoubleSize multiplier for the bloom, relative to the thruster part. Set to 0 to disable.1.5

Vibration​

ID: palladium:vibration
Renders a vibration effect on the entity.
KeyTypeDescriptionRequiredFallback
intensityIntegerThe intensity of the vibration, i.e. how many offset copies of the entity get blended in. Values above 32 are capped./
fade_ticksInteger,
Time String ("40s", "2m", etc.)
The time/ticks it needs for the vibration to fade in/out./