Cinematics
The cinematic camera system plays smooth, scripted camera paths for a specific player — useful for cutscenes, boss intros, and scripted reveals. A path is a series of keyframes (position + yaw + pitch) that the player's view is interpolated along.
Paths are played with the cinematicCamera mechanic, either from a file in the cutscenes/ folder or from inline keyframes. While a cinematic is playing you can query its state with the cinematic placeholders and the isInCinematic condition, and react to it with the onCinematicStart / onCinematicEnd triggers.
Path Files
Camera paths are YAML files placed in plugins/MythicMobs/cutscenes/. They are also discovered inside packs at plugins/MythicMobs/packs/<PackName>/cutscenes/. The file name does not matter; paths are referenced by their top-level id.
my_path_id:
duration: 100 # total ticks
loop: false # repeat until cancelled
easing: EASE_IN_OUT_CUBIC # default leg easing
points:
- "world,x,y,z,yaw,pitch[,hold[,easing]]"
- "~,dx,dy,dz,yaw,pitch[,hold[,easing]]" # ~ = relative to the anchor
A path can then be played with cinematicCamera{path=my_path_id} @target.
| Key | Description | Default |
|---|---|---|
| duration | Total length of the path in ticks, used when points have no hold. |
100 |
| loop | Whether the path repeats until cancelled. | false |
| easing | Default easing curve for legs that do not override it. | EASE_IN_OUT_CUBIC |
| points | The list of keyframes. |
Keyframes
Each keyframe is world,x,y,z,yaw,pitch, with two optional trailing fields: hold and easing.
- Absolute points start with any loaded world name:
world,100,70,100,90,10 - Relative points start with
~, and treatx/y/zas offsets from the cinematic's anchor:~,0,5,-10,0,30. The anchor is the skill's origin (the @origin), which is normally the caster's location. Relative paths let one cutscene be reused anywhere. holdis the leg duration in ticks from this point to the next. When per-point holds are present they take priority; otherwise the path-leveldurationis split across the legs.easingon a point overrides the path-level easing for the leg leaving that point. For example a singleSTEPleg can cut sharply through an otherwiseCATMULL_ROMpath.
When using the inline points attribute on the mechanic, separate keyframes with ;:
points=world,100,70,100,90,10,40;~,0,3,-8,90,10,40,LINEAR
Easing Curves
The easing value (path-level, per-point, or the mechanic's easing attribute) accepts any of the following:
LINEAR, EASE_IN_QUAD, EASE_OUT_QUAD, EASE_IN_OUT_QUAD, EASE_IN_CUBIC, EASE_OUT_CUBIC, EASE_IN_OUT_CUBIC, EASE_IN_SINE, EASE_OUT_SINE, EASE_IN_OUT_SINE, SMOOTHSTEP, SMOOTHERSTEP, CATMULL_ROM, STEP
STEP performs an instant jump cut. An unrecognised value falls back to EASE_IN_OUT_CUBIC.
Modes
- DISPLAY (default) spawns a packet-only camera entity and spectates it, producing smooth interpolated motion.
- TELEPORT teleports the player every tick instead. It has no interpolation between ticks but is a reliable fallback.
Mechanics
cinematicCamera
Plays a cinematic camera path for the target player. See the cinematicCamera page for the full attribute list. The mechanic must target a player.
Skills:
- cinematicCamera{path=intro_pan} @trigger
cinematicCancel
Interrupts an active cinematic for the target player, immediately returning their camera and control. See the cinematicCancel page.
Skills:
- cinematicCancel @trigger
Condition
isInCinematic
Checks if the target player is currently in an active cinematic. See the isInCinematic page.
Triggers
Both triggers fire with the player the cinematic is playing for as the caster.
- onCinematicStart — fires when a path begins playing on a player.
- onCinematicEnd — fires when a path ends, however it ends (natural finish, cinematicCancel, player quit, or player death).
Placeholders
These entity-scoped placeholders report the cinematic state of any player. Prefix them with a scope such as caster. or target.:
| Placeholder | Description |
|---|---|
<caster.cinematic.active> |
true / false — whether the player is in a cinematic |
<caster.cinematic.frame> |
Current frame, or -1 if the player is not in a cinematic |
<caster.cinematic.progress> |
Progress from 0.0 to 1.0, or 0 if not in a cinematic |
Commands
Camera paths can be authored in-game with the /mm camera command, which captures your current position, yaw, and pitch as a keyframe. Requires the mythicmobs.command.camera permission. See Commands and Permissions for the full syntax.
- /mm camera <pathId> add [index] [hold=N] [easing=NAME] [relative=true] — adds a keyframe at your current location.
- /mm camera <pathId> remove [index] — removes the keyframe at the given index (the last one if omitted).
Examples
A boss intro: freeze the triggering player, orbit the boss for 80 ticks, then run a skill when it ends.
BossIntro:
Skills:
- cinematicCamera{path=boss_orbit;freezePlayer=true;onEnd=BossRoar} @trigger