A NeoForge companion mod for LambDynamicLights, Minecraft 1.21.1. Wear a vanilla lantern (or soul lantern) in a Curios dedicated lantern slot — it hangs from the right hip (configurable), swings on a damped 2D pendulum, and emits real dynamic light through the LDL API.
| What | Version |
|---|---|
| Minecraft | 1.21.1 |
| NeoForge | 21.1.228+ |
| Curios | 9.0.0+ |
| LambDynamicLights | 3.0.0+ — required, client-only (the whole point) |
| Iris | 1.8.0+ — optional, client-only (shader support) |
The mod must be installed on both server and client:
- Server registers the belt slot and accepts lanterns into it (Curios inventory is server-authoritative).
- Client renders the lantern on the body and handles the LambDynamicLights light emission. LambDynamicLights is only required on the client; a dedicated server runs without it.
- Adds a Curios
lanternslot attached to the player, accepting any item in the#curios:lanterntag (vanilla lantern + soul lantern out of the box). The slot has its own faint lantern silhouette icon. - Renders the lantern hanging from the hip with chain attachment. The placement is configurable — see Configuration.
- 2D damped-spring pendulum: swings forward/back when you walk and side-to-side when you strafe; gets a kick when you start sneaking.
- LambDynamicLights integration via the LDL API and the Yumi entrypoint system — the worn lantern emits dynamic light as if held. The entrypoint class is loaded lazily, so the mod still loads on a dedicated server (where LambDynamicLights is absent).
- Iris/shader compatible: a small mixin keeps the worn lantern rendering correctly under shaderpacks when Iris is installed.
Open Mods → Lamb Lanterns → Config in-game, or edit
config/lamblanterns-client.toml. The settings are client-side and
per-player, and apply live without a restart.
| Option | Default | Effect |
|---|---|---|
horizontalOffset |
1.0 |
Side placement. 0 = centred, positive = right hip, negative = left hip (±1.0 = a hip). |
verticalOffset |
-1.55 |
Height. Higher raises the lantern toward the chest, lower drops it toward the belt. |
depthOffset |
-1.0 |
Depth. Higher moves it toward the front of the body, lower toward the back. |
Set horizontalOffset to a negative value (e.g. -1.0) to wear the
lantern on the left hip — handy if it clashes with a satchel or another
belt/back item.
Drop lamblanterns-<version>.jar into the mods/ folder of both your
server and your client. Make sure Curios is also installed.
Requires JDK 21.
./gradlew buildThe output jar lands in build/libs/lamblanterns-<version>.jar.
You can extend #curios:lantern from another datapack to make any item
belt-eligible. The lantern renderer only renders vanilla lanterns; other
items will sit invisibly in the slot unless they ship their own
ICurioRenderer.
The body-part anchored rendering technique and the pendulum physics shape are adapted from ImmersiveLanterns by Toni — go check it out, it's a much fuller implementation.