Complete Keyframe Reference
Complete Keyframe Reference
Section titled “Complete Keyframe Reference”ActionEffect timelines use keyframes to define attack sequences. Titan supports 23 Cobblemon core keyframes and 8 Titan-specific keyframes.
Quick Reference Table
Section titled “Quick Reference Table”| Keyframe | Category | Purpose | Priority |
|---|---|---|---|
add_holds | Control | Lock titan | ⭐⭐⭐ |
remove_holds | Control | Unlock titan | ⭐⭐⭐ |
stop_movement | Titan | Freeze titan | ⭐⭐⭐ |
define_obb | Titan OBB | Create hitbox | ⭐⭐⭐ |
telegraph_obb | Titan OBB | Show warning | ⭐⭐⭐ |
damage_obb | Titan OBB | Deal damage | ⭐⭐⭐ |
pause | Timing | Wait | ⭐⭐⭐ |
animation | Visual | Play animation | ⭐⭐ |
entity_particles | Visual | Spawn particles | ⭐⭐ |
sound | Audio | Play sound | ⭐⭐ |
set_vulnerable | Titan | Set vulnerability | ⭐⭐ |
sequenced_damage | Titan | Multi-hit damage | ⭐ |
repeating_damage_obb | Titan | Damage over time | ⭐ |
delayed_damage_obb | Titan | Delayed damage | ⭐ |
Priority:
- ⭐⭐⭐ Essential (used in most attacks)
- ⭐⭐ Common (used frequently)
- ⭐ Situational (used for specific mechanics)
Titan-Specific Keyframes (8)
Section titled “Titan-Specific Keyframes (8)”OBB System (3)
Section titled “OBB System (3)”define_obb
Section titled “define_obb”Creates oriented bounding box for damage/telegraph.
Required Properties:
name- Unique OBB identifiershape- OBB shape:SPHERE,CONE,CYLINDER,ARC,BOX,CAPSULEpositioning- Placement mode:IN_FRONT,AT_TARGET,AT_USERhalfExtents- Size:{x, y, z}
Optional Properties:
distance- Distance in front (only forIN_FRONT)includePitch- Include vertical rotation (default:false)
Example:
{ "type": "define_obb", "name": "fireball", "shape": "SPHERE", "positioning": "IN_FRONT", "distance": "5.0", "halfExtents": {"x": "3.0", "y": "3.0", "z": "3.0"}, "includePitch": true}See: OBB System →
telegraph_obb
Section titled “telegraph_obb”Shows ground warning markers for defined OBB.
Required Properties:
name- OBB name (must be defined first)telegraphType- Warning level:WARNING,DANGER,CRITICAL
Optional Properties:
duration- Override auto-calculated duration (milliseconds)
Example:
{ "type": "telegraph_obb", "name": "fireball", "telegraphType": "DANGER"}Duration: Auto-calculated based on OBB size (1.0-4.0 seconds)
See: Telegraph System →
damage_obb
Section titled “damage_obb”Applies damage to entities inside defined OBB.
Required Properties:
name- OBB name (must be defined first)damage- Damage amount
Optional Properties:
damageType- Type:PHYSICAL,FIRE,ELECTRIC,WATER,EXPLOSION,MAGICknockback- Knockback strength (default:0.0)condition- MoLang condition for execution
Example:
{ "type": "damage_obb", "name": "fireball", "damage": "20.0", "damageType": "FIRE", "knockback": "1.5"}Combat System (2)
Section titled “Combat System (2)”stop_movement
Section titled “stop_movement”Freezes titan in place for specified duration.
Required Properties:
duration- Duration in milliseconds
Example:
{ "type": "stop_movement", "duration": "2500"}Use Cases:
- Lock titan during attack
- Prevent movement during windup
- Create vulnerability window
Note: Always use with add_holds to prevent other actions.
set_vulnerable
Section titled “set_vulnerable”Sets titan’s vulnerability state.
Required Properties:
vulnerabilityState- State:NORMAL,RECOVERING,EXHAUSTEDduration- Duration in milliseconds
Example:
{ "type": "set_vulnerable", "vulnerabilityState": "EXHAUSTED", "duration": "6000"}Damage Multipliers:
NORMAL- 1.0x (default)RECOVERING- 1.3xEXHAUSTED- 1.8x
Advanced Damage (3)
Section titled “Advanced Damage (3)”sequenced_damage
Section titled “sequenced_damage”Deals damage in multiple pulses.
Required Properties:
damage- Damage per pulsepulses- Number of pulsesinterval- Interval between pulses (milliseconds)
Optional Properties:
damageType- Damage typeradius- Damage radius (default: target only)
Example:
{ "type": "sequenced_damage", "damage": "5.0", "pulses": 4, "interval": "500", "radius": "6.0"}Total: 5 damage × 4 pulses = 20 damage over 1.5 seconds
repeating_damage_obb
Section titled “repeating_damage_obb”Creates damage-over-time field using OBB.
Required Properties:
name- OBB namedamage- Damage per tickinterval- Damage interval (milliseconds)duration- Total duration (milliseconds)
Optional Properties:
damageType- Damage type
Example:
{ "type": "repeating_damage_obb", "name": "fire_field", "damage": "3.0", "interval": "1000", "duration": "8000", "damageType": "FIRE"}Total: 3 damage/second × 8 seconds = 24 damage
delayed_damage_obb
Section titled “delayed_damage_obb”Applies OBB damage after delay.
Required Properties:
name- OBB namedamage- Damage amountdelay- Delay before damage (milliseconds)
Optional Properties:
damageType- Damage typeknockback- Knockback strength
Example:
{ "type": "delayed_damage_obb", "name": "time_bomb", "damage": "35.0", "delay": "3000", "damageType": "EXPLOSION", "knockback": "2.5"}Use Cases:
- Time bombs
- Delayed explosions
- Trap mechanics
Cobblemon Core Keyframes (23)
Section titled “Cobblemon Core Keyframes (23)”Control Keyframes (2)
Section titled “Control Keyframes (2)”add_holds
Section titled “add_holds”Prevents entity from performing actions.
Required Properties:
holds- Array of hold types:["effects"],["movement"],["all"]
Example:
{ "type": "add_holds", "holds": ["effects"]}Hold Types:
effects- Prevents using other ActionEffectsmovement- Prevents movementall- Prevents all actions
Always pair with remove_holds!
remove_holds
Section titled “remove_holds”Removes previously added holds.
Required Properties:
holds- Array of hold types to remove
Example:
{ "type": "remove_holds", "holds": ["effects"]}Timing Keyframes (1)
Section titled “Timing Keyframes (1)”Waits for specified duration.
Required Properties:
pause- Duration in seconds (float)
Example:
{ "type": "pause", "pause": 1.5}Use Cases:
- Attack windup
- Recovery lag
- Timing control
Animation Keyframes (2)
Section titled “Animation Keyframes (2)”animation
Section titled “animation”Plays entity animation.
Required Properties:
animation- Animation name
Optional Properties:
speed- Playback speed (default:1.0)
Example:
{ "type": "animation", "animation": "special", "speed": 1.2}Common Animations:
physical- Physical attackspecial- Special attackstatus- Status movebattle_idle- Return to idle
stop_animation
Section titled “stop_animation”Stops current animation.
Example:
{ "type": "stop_animation"}Particle Keyframes (3)
Section titled “Particle Keyframes (3)”entity_particles
Section titled “entity_particles”Spawns particles at entity position.
Required Properties:
particleType- Minecraft particle ID
Optional Properties:
count- Number of particles (default:10)spread- Spread radius (default:0.5)
Example:
{ "type": "entity_particles", "particleType": "minecraft:flame", "count": 30, "spread": {"x": 1.5, "y": 1.0, "z": 1.5}}world_particles
Section titled “world_particles”Spawns particles at world position.
Required Properties:
particleType- Particle IDposition- World coordinates:{x, y, z}
Optional Properties:
count- Particle countspread- Spread amount
Example:
{ "type": "world_particles", "particleType": "minecraft:explosion", "position": {"x": 100, "y": 64, "z": 200}, "count": 50}particle_line
Section titled “particle_line”Creates line of particles between two points.
Required Properties:
particleType- Particle IDstart- Start positionend- End position
Optional Properties:
count- Particles along line (default:20)
Example:
{ "type": "particle_line", "particleType": "minecraft:electric_spark", "start": "q.user_position", "end": "q.target_position", "count": 50}Sound Keyframes (2)
Section titled “Sound Keyframes (2)”Plays sound at entity position.
Required Properties:
sound- Minecraft sound ID
Optional Properties:
volume- Volume (0.0-2.0, default:1.0)pitch- Pitch (0.5-2.0, default:1.0)
Example:
{ "type": "sound", "sound": "entity.generic.explode", "volume": 1.5, "pitch": 0.8}world_sound
Section titled “world_sound”Plays sound at world position.
Required Properties:
sound- Sound IDposition- World coordinates
Optional Properties:
volume- Volumepitch- Pitch
Example:
{ "type": "world_sound", "sound": "entity.lightning_bolt.thunder", "position": {"x": 100, "y": 64, "z": 200}, "volume": 2.0}Effect Keyframes (4)
Section titled “Effect Keyframes (4)”apply_status
Section titled “apply_status”Applies status effect to target.
Required Properties:
effect- Potion effect IDduration- Duration in ticks
Optional Properties:
amplifier- Effect level (default:0)
Example:
{ "type": "apply_status", "effect": "slowness", "duration": 100, "amplifier": 1}remove_status
Section titled “remove_status”Removes status effect from target.
Required Properties:
effect- Effect ID to remove
Example:
{ "type": "remove_status", "effect": "slowness"}screen_shake
Section titled “screen_shake”Shakes target’s screen.
Required Properties:
intensity- Shake strength (0.0-1.0)duration- Duration in ticks
Example:
{ "type": "screen_shake", "intensity": 0.6, "duration": 20}flash_screen
Section titled “flash_screen”Flashes target’s screen.
Required Properties:
color- Hex color codeduration- Duration in ticks
Example:
{ "type": "flash_screen", "color": "#FF0000", "duration": 10}Scripting Keyframes (3)
Section titled “Scripting Keyframes (3)”molang_script
Section titled “molang_script”Executes custom MoLang code.
Required Properties:
script- MoLang expression/script
Example:
{ "type": "molang_script", "script": "q.damage_all(15.0, 8.0, 'FIRE');"}See: MoLang Reference →
set_variable
Section titled “set_variable”Sets MoLang variable.
Required Properties:
name- Variable namevalue- Variable value
Example:
{ "type": "set_variable", "name": "combo_count", "value": 1}conditional
Section titled “conditional”Conditional keyframe execution.
Required Properties:
condition- MoLang conditiontimeline- Keyframes to execute if true
Optional Properties:
else_timeline- Keyframes if false
Example:
{ "type": "conditional", "condition": "q.target_distance <= 5.0", "timeline": [ {"type": "damage_obb", "name": "close", "damage": "25.0"} ], "else_timeline": [ {"type": "damage_obb", "name": "far", "damage": "15.0"} ]}Movement Keyframes (3)
Section titled “Movement Keyframes (3)”teleport
Section titled “teleport”Teleports entity to position.
Required Properties:
position- Target position:{x, y, z}
Example:
{ "type": "teleport", "position": {"x": 100, "y": 64, "z": 200}}Dashes entity in direction.
Required Properties:
direction- Direction vector or"FORWARD","BACKWARD"distance- Distance in blocks
Example:
{ "type": "dash", "direction": "FORWARD", "distance": 8.0}Leaps entity toward target.
Required Properties:
target- Target position or"TARGET_ENTITY"height- Jump arc height
Example:
{ "type": "leap", "target": "TARGET_ENTITY", "height": 5.0}Utility Keyframes (3)
Section titled “Utility Keyframes (3)”spawn_entity
Section titled “spawn_entity”Spawns entity at position.
Required Properties:
entityType- Entity IDposition- Spawn position
Optional Properties:
count- Number to spawn (default:1)
Example:
{ "type": "spawn_entity", "entityType": "minecraft:zombie", "position": "q.user_position", "count": 3}remove_entity
Section titled “remove_entity”Removes target entity.
Example:
{ "type": "remove_entity"}broadcast_message
Section titled “broadcast_message”Broadcasts message to players.
Required Properties:
message- Message text
Example:
{ "type": "broadcast_message", "message": "The titan grows enraged!"}Common Keyframe Patterns
Section titled “Common Keyframe Patterns”Basic Attack Pattern
Section titled “Basic Attack Pattern”{ "timeline": [ {"type": "add_holds", "holds": ["effects"]}, {"type": "animation", "animation": "physical"}, {"type": "pause", "pause": 0.3}, {"type": "define_obb", "name": "slash", "shape": "ARC", "positioning": "IN_FRONT", "distance": "2.0", "halfExtents": {"x": "3.0", "y": "2.0", "z": "3.0"}}, {"type": "telegraph_obb", "name": "slash", "telegraphType": "WARNING"}, {"type": "damage_obb", "name": "slash", "damage": "12.0"}, {"type": "remove_holds", "holds": ["effects"]}, {"type": "pause", "pause": 0.5} ]}Ultimate Attack Pattern
Section titled “Ultimate Attack Pattern”{ "timeline": [ {"type": "add_holds", "holds": ["effects"]}, {"type": "stop_movement", "duration": "5000"},
{"type": "animation", "animation": "special"}, {"type": "sound", "sound": "entity.ender_dragon.growl", "volume": 2.0, "pitch": 0.6}, {"type": "pause", "pause": 1.5},
{"type": "entity_particles", "particleType": "minecraft:dragon_breath", "count": 100}, {"type": "define_obb", "name": "ultimate", "shape": "SPHERE", "positioning": "AT_USER", "halfExtents": {"x": "12.0", "y": "12.0", "z": "12.0"}}, {"type": "telegraph_obb", "name": "ultimate", "telegraphType": "CRITICAL"},
{"type": "sound", "sound": "entity.generic.explode", "volume": 2.0}, {"type": "screen_shake", "intensity": 0.8, "duration": 30}, {"type": "damage_obb", "name": "ultimate", "damage": "45.0", "damageType": "EXPLOSION", "knockback": "3.0"},
{"type": "set_vulnerable", "vulnerabilityState": "EXHAUSTED", "duration": "8000"}, {"type": "remove_holds", "holds": ["effects"]}, {"type": "pause", "pause": 3.0} ]}Keyframe Execution Rules
Section titled “Keyframe Execution Rules”Sequential Execution
Section titled “Sequential Execution”Keyframes execute one at a time in order:
[ {"type": "pause", "pause": 1.0}, // Executes first, waits 1s {"type": "damage_obb", ...}, // Then executes {"type": "set_vulnerable", ...} // Then executes]Instant vs Duration
Section titled “Instant vs Duration”Instant Keyframes (execute immediately):
define_obbdamage_obbset_vulnerableadd_holds/remove_holdsmolang_script
Duration Keyframes (block timeline):
pause- Blocks for specified durationstop_movement- Blocks for durationtelegraph_obb- Blocks for auto-calculated durationanimation- Blocks for animation length
Condition Evaluation
Section titled “Condition Evaluation”Conditions evaluate when keyframe reaches execution:
{ "type": "damage_obb", "name": "attack", "damage": "20.0", "condition": "q.target_distance <= 5.0" // Checked when this keyframe executes}Best Practices
Section titled “Best Practices”Always Pair Holds
Section titled “Always Pair Holds”{"type": "add_holds", "holds": ["effects"]},// ... attack keyframes ...{"type": "remove_holds", "holds": ["effects"]}Telegraph Before Damage
Section titled “Telegraph Before Damage”{"type": "define_obb", ...},{"type": "telegraph_obb", ...}, // Warning first{"type": "damage_obb", ...} // Then damageUse Pauses for Timing
Section titled “Use Pauses for Timing”{"type": "pause", "pause": 0.5}, // Windup{"type": "damage_obb", ...},{"type": "pause", "pause": 1.0} // RecoveryLayer Effects
Section titled “Layer Effects”{"type": "sound", ...}, // Sound{"type": "entity_particles", ...}, // Particles{"type": "damage_obb", ...} // Damage// All happen in quick successionNext Steps
Section titled “Next Steps”- OBB System → - Complete OBB guide
- ActionEffect Builder → - Visual timeline editor
- Creating Custom Moves → - Complete workflow
Complete keyframe reference for building perfect attack sequences! 📚