Skip to content

Block Animations

Block animations bring interactive blocks to life with movement sequences for doors, chests, and other functional blocks. Animations are created in Blockbench and exported as .blockyanim files.

Block animations are stored in the Common assets:

  • DirectoryAssets/Common/Blocks/Animations/
    • DirectoryCandle/
      • Candle_Burn.blockyanim
    • DirectoryChest/
      • Chest_Open.blockyanim
      • Chest_Close.blockyanim
    • DirectoryCoffin/
      • Coffin_Open.blockyanim
      • Coffin_Close.blockyanim
    • DirectoryDoor/
      • Door_Open_In.blockyanim
      • Door_Open_Out.blockyanim
      • Door_Close_In.blockyanim
      • Door_Close_Out.blockyanim
      • Door_Open_Slide_In.blockyanim
      • Door_Open_Slide_Out.blockyanim
    • DirectoryFire/
      • Fire_Burn.blockyanim
      • Fire_Small_Burn.blockyanim
    • DirectoryLight/
      • Light_On.blockyanim
      • Light_Off.blockyanim
    • DirectoryTrapdoor/
      • Trapdoor_Open.blockyanim
      • Trapdoor_Close.blockyanim
    • DirectoryWardrobe/
      • Wardrobe_Open.blockyanim
      • Wardrobe_Close.blockyanim
CategoryAnimationsUsage
DoorOpen/Close In/Out, Slide variantsDoors opening towards/away from player
ChestOpen, CloseContainer lid animations
WardrobeOpen, CloseTall container door animations
TrapdoorOpen, CloseHorizontal door animations
CoffinOpen, CloseSpecial container animations
CategoryAnimationsUsage
CandleBurnLooping flame flicker
FireBurn, Small_BurnCampfire/torch flame
LightOn, OffLight state transitions

Animations are referenced in the State.Definitions section of block types:

Door State Definitions
{
"BlockType": {
"State": {
"Definitions": {
"OpenDoorIn": {
"HitboxType": "Door_Open_In",
"InteractionHitboxType": "Door_Open_In_Interaction",
"InteractionSoundEventId": "SFX_Door_Crude_Open",
"CustomModelAnimation": "Blocks/Animations/Door/Door_Open_In.blockyanim"
},
"OpenDoorOut": {
"HitboxType": "Door_Open_Out",
"InteractionHitboxType": "Door_Open_Out_Interaction",
"InteractionSoundEventId": "SFX_Door_Crude_Open",
"CustomModelAnimation": "Blocks/Animations/Door/Door_Open_Out.blockyanim"
},
"CloseDoorIn": {
"InteractionSoundEventId": "SFX_Door_Crude_Close",
"CustomModelAnimation": "Blocks/Animations/Door/Door_Close_In.blockyanim"
},
"CloseDoorOut": {
"InteractionSoundEventId": "SFX_Door_Crude_Close",
"CustomModelAnimation": "Blocks/Animations/Door/Door_Close_Out.blockyanim"
},
"DoorBlocked": {}
}
},
"IsDoor": true,
"Interactions": {
"Use": "Door"
}
}
}
Chest State Definitions
{
"BlockType": {
"State": {
"Id": "container",
"Capacity": 18,
"Definitions": {
"OpenWindow": {
"InteractionSoundEventId": "SFX_Chest_Wooden_Open",
"CustomModelAnimation": "Blocks/Animations/Chest/Chest_Open.blockyanim"
},
"CloseWindow": {
"InteractionSoundEventId": "SFX_Chest_Wooden_Close",
"CustomModelAnimation": "Blocks/Animations/Chest/Chest_Close.blockyanim"
}
}
},
"Interactions": {
"Primary": "Break_Container",
"Use": "Open_Container"
}
}
}
FieldTypeDescription
CustomModelAnimationstringPath to .blockyanim file
InteractionSoundEventIdstringSound to play during animation
HitboxTypestringHitbox when in this state
InteractionHitboxTypestringHitbox for interaction detection

For blocks with a default idle animation:

{
"BlockType": {
"CustomModelAnimation": "Blocks/Animations/Candle/Candle_Burn.blockyanim"
}
}

Doors support multiple animation directions:

AnimationDescription
Door_Open_InDoor swings towards player
Door_Open_OutDoor swings away from player
Door_Close_InClose from inward position
Door_Close_OutClose from outward position
Door_Open_Slide_InSliding door variant
Door_Open_Slide_OutSliding door variant
  1. Open or create a Hytale Model project
  2. Switch to the Animation tab
  3. Create keyframes for bone transformations
  4. Export as .blockyanim
RequirementDetails
FormatHytale-specific .blockyanim
BonesMust match model bone hierarchy
KeyframesPosition, rotation, scale transforms
DurationVaries by animation type

Animations reference bones in the model:

Root
├── Body
│ ├── Lid (for chests)
│ ├── Door_Panel (for doors)
│ └── ...

For ambient effects like flames, use looping animations:

{
"BlockType": {
"CustomModelAnimation": "Blocks/Animations/Fire/Fire_Burn.blockyanim",
"Looping": true
}
}

Animation playback is triggered by state changes:

Light Toggle States
{
"State": {
"Definitions": {
"On": {
"CustomModelAnimation": "Blocks/Animations/Light/Light_On.blockyanim",
"Light": { "Color": "#ffa", "Radius": 8 }
},
"Off": {
"CustomModelAnimation": "Blocks/Animations/Light/Light_Off.blockyanim",
"Light": null
}
}
},
"Interactions": {
"Use": {
"Interactions": [
{
"Type": "ChangeState",
"Changes": {
"On": "Off",
"Off": "On"
}
}
]
}
}
}

The .blockyanim format is a binary format created by Blockbench’s Hytale plugin. Key characteristics:

  • Created in Blockbench’s Animation tab
  • References bone names from the model
  • Supports position, rotation, and scale keyframes
  • Can be looping or one-shot
  1. Match bone names - Animation bones must exactly match model bone names
  2. Keep animations short - Interactive animations should be snappy
  3. Pair with sounds - Always include InteractionSoundEventId
  4. Update hitboxes - Change HitboxType for open/closed states
  5. Test transitions - Ensure smooth state changes