- Java 99.7%
- GLSL 0.3%
|
Some checks failed
Build / Build all loaders (push) Failing after 2m46s
Publish / Create Forgejo release (push) Successful in 4s
Publish / Publish Fabric 1.20.1 (push) Successful in 9m15s
Publish / Publish Fabric 1.21.1 (push) Successful in 8m57s
Publish / Publish Fabric 26.1 (push) Successful in 8m47s
Publish / Publish NeoForge 1.21.1 (push) Successful in 10m55s
Publish / Publish NeoForge 26.1 (push) Successful in 4m0s
Publish / Publish Forge 1.20.1 (push) Successful in 4m4s
Publish / Announce release in Discord (push) Successful in 3s
|
||
|---|---|---|
| .forgejo/workflows | ||
| .run | ||
| common-1.20.1 | ||
| common-1.21.1 | ||
| common-26.1 | ||
| fabric-1.20.1 | ||
| fabric-1.21.1 | ||
| fabric-26.1 | ||
| forge-1.20.1 | ||
| gradle/wrapper | ||
| neoforge-1.21.1 | ||
| neoforge-26.1 | ||
| .gitattributes | ||
| .gitignore | ||
| build.gradle | ||
| CHANGELOG.md | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| lumiera.png | ||
| README.md | ||
| settings.gradle | ||
Lumiera
Lumiera is a camera and cutscene tool for Minecraft. You build camera shots from keyframes on an in-game timeline, hang timed events like fades, sound, and screen shake off the path, and play the whole thing back from a key, a command, or a datapack.
It runs on Forge, Fabric, and NeoForge across three Minecraft versions, so a shot you build in one place works the same everywhere the mod is installed.
What you can do
- Drop camera keyframes as you fly around, then scrub the timeline and preview the result live.
- Choose how the camera moves between keyframes: straight lines, Catmull-Rom, Bezier with handles, cosine, or a stepped hold. Centripetal Catmull-Rom is the safe default; it won't loop on sharp turns.
- Set easing per segment. Plain ease in/out is there, along with quad, cubic, sine, expo, back, elastic, and bounce, all solved as real cubic-bezier curves.
- Animate field of view and roll per keyframe, bank into turns, or lock the aim onto an entity or a fixed point.
- Keep a per-world library of your paths and cutscenes to rename, duplicate, or delete.
Cutscene cues
A path can carry events that fire as it plays:
- Fades, colour-ramp veils, and letterbox bars
- On-screen text, action bar messages, and styled captions
- Sound and particle cues, placed in the world or pinned to the camera
- Screen shake with adjustable intensity, frequency, and decay
- Fog, vignette, and a smooth time-of-day ramp for mood
- Look-at, orbit, and offset moves layered on top of the path
- Expression-driven field of view, rotation, and position for handheld drift
- HUD hide, time-of-day lock, and a command run at any point on the timeline
On 1.21.1 and newer you can also stage actors: entities, players, items, blocks, armor stands, or particles. Each one gets its own pose keyframes and a track of timed actions like swinging, jumping, attacking, breaking a block, dying, or playing a sound.
Building a shot in-game
Open the timeline with G. Fly your camera into place and press = to drop a
keyframe. Add a few more, scrub the timeline, and press ] to preview. Every key is
listed under Controls and can be rebound:
Gtimeline,.edit mode,,view mode=add keyframe,Deleteremove,Kduplicate[play,]preview,Endreset,Mlibrary
Commands
Servers and command blocks get the same reach through /lumiera:
/lumiera play <id> [speed] [targets] [center], where center is an entity orx y z/lumiera stop [target]and/lumiera reset [target]/lumiera list [saved|datapack]and/lumiera info <id>/lumiera delete <id>and/lumiera rename <id> <newId>/lumiera interpolation,/lumiera center,/lumiera reload
/lumiera cutscene play <id> [targets] plays a datapack cutscene, with stop,
pause, resume, skip, and seek <tick> alongside it.
Datapacks
Ship cutscenes with a map by dropping JSON under data/<namespace>/cutscenes/:
{
"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 in seconds, and event types accept
namespaced ids like lumiera:shake_camera.
Supported versions
- Minecraft 1.20.1 on Forge and Fabric
- Minecraft 1.21.1 on NeoForge and Fabric
- Minecraft 26.1 on NeoForge and Fabric
Actor staging is 1.21.1 and newer. The fog cue applies on NeoForge 1.21.1 for now; elsewhere it loads but has no effect. On-screen text and captions use EmbersTextAPI on the client.
For modders
Lumiera exposes a camera modifier API so other mods can drive the camera without fighting over it. Modifiers stack by priority on a separate background layer, so one mod's cutscene won't stomp another's. A small runtime API starts and stops cutscenes by id.
License
Lumiera is released under Ember's Modding Licence (EML) v1.2. See LICENSE or
https://tysontheember.dev/modding-licence/. In short: use it and feature it freely,
but don't rehost the files or fork it without permission, and ask before anything
commercial.