Lumiera
Lumiera is a cinematic camera and cutscene mod for Minecraft. Build camera shots from keyframes in an in-game timeline, add cues like fades, sound, and screen shake, then play the whole thing back from a key, a command, or a datapack.
Features
- Keyframe camera shots in a timeline editor and scrub or preview them live.
- Several ways to move between keyframes: straight lines, Catmull-Rom, Bezier with handles, cosine, and stepped holds. Centripetal Catmull-Rom is the safe pick for most shots since it won't loop on sharp turns.
- Per-segment easing, from plain ease in/out to the quad, cubic, sine, expo, back, elastic, and bounce curves, for control over timing.
- Animate FOV and roll per keyframe, bank the camera into turns, or have it follow an entity or a fixed point.
- A per-world library for saving, renaming, duplicating, and deleting your paths and cutscenes.
Cutscene cues
Camera paths can carry timed events that fire as they play:
- Fades and letterbox bars
- On-screen text and action bar messages
- Sound and particle cues, placed in the world or pinned to the camera
- Screen shake with adjustable intensity, frequency, and decay
- Hide or show the HUD, lock or restore the time of day
- Run a command at any point on the timeline
On 1.21.1 you can also stage actors: entities, players, items, blocks, armor stands, or particles. Each gets its own pose keyframes and a track of timed actions like swinging, jumping, attacking, breaking a block, dying, or playing a sound.
Creating shots in-game
Open the timeline with G. Move your camera and press = to drop a keyframe, scrub the timeline, then press [ to preview. Every key is listed under Controls and can be rebound:
Gtimeline,.edit mode,,view mode=add keyframe,Deleteremove,Kduplicate[play,Endreset,Mlibrary
Commands cover the same ground for servers and command blocks:
/lumiera play <name> [speed] [loop] [target]/lumiera stopand/lumiera reset/lumiera listand/lumiera info <name>/lumiera save <name>and/lumiera load_here <name>/lumiera importand/lumiera export
On NeoForge, /cutscene play <id> [targets] [anchor] runs cutscenes loaded from datapacks.
Datapacks
Map makers can ship cutscenes as JSON under data/<namespace>/cutscenes/. A short one:
{
"schema": 1,
"id": "intro",
"duration_ticks": 40,
"fov": { "mode": "keyframed", "default": 90.0 },
"keyframes": [
{ "time": 0.0, "pos": { "x": 0, "y": 65, "z": 0 }, "rot": { "yaw": 0, "pitch": 0 }, "fov": 90.0, "path_type": "linear" },
{ "time": 2.0, "pos": { "x": 8, "y": 67, "z": 4 }, "rot": { "yaw": -30, "pitch": 10 }, "fov": 70.0, "path_type": "smooth" }
],
"camera_position_mode": "absolute"
}
Camera paths under data/<namespace>/camera_paths/ take an events list for the cues above. Times can be given as tick, time, or at (seconds), and event types accept namespaced ids like lumiera:shake_camera.
For developers
Lumiera exposes a camera modifier API so other mods can drive the camera without fighting over it. Modifiers stack by priority with a separate background layer, so one mod's cutscene won't stomp another's. A small runtime API starts and stops cutscenes by id.
Supported versions
- Minecraft 1.21.1 on NeoForge
Other Minecraft versions are in progress.

