Tschipcraft's
Dynamic Lights
Server-side dynamic lighting for 1.17.x-26.2.x
| Support for 26.3 is in the works! |
|---|
| For heavily modded setups, modpacks, as well as for playing on external servers, I recommend LambDynamicLights or similar client-side mods instead. -> For details, check this wiki page. |
💡 Features
This data pack/mod brings dynamic lighting to Minecraft without any client-side requirements. Supported entities and items (like torches, glowstone, or enchanted gear), held or worn by players, mobs, or placed in item frames, will emit light using the light block added in Snapshot 21w13a.
- 50+ supported vanilla items out of the box
- Multiple light levels: 3, 6, 9, 12, and 15
- Water-sensitive behavior with sounds for some items
- Enchanted items glow by default (light level 6), with special cases for Fire Aspect, Riptide, Channeling (light level 9)
- Amethyst-trimmed armor emits light
- Mobs, falling blocks, and display entities can emit light if carrying a supported item
Curios API support for modded inventory slotsSee issue #76
Since this project is completely server-side, players joining a server with Dynamic Lights installed will not need to install anything on their end for it to work! However, you can still use the mod version on the client for single-player worlds only. Joining a server that does not have Dynamic Lights installed will have no effect.
-> For a complete list of supported items & entities, and available settings, take a look at the <-
ℹ️ Limitations
Since this is a data pack at its core, there are some limitations compared to other purely modded solutions.
Limitations (click to expand)
- Dynamic Lights may stutter while moving around. This project solely relies on vanilla light blocks, which are restricted to the block grid. Smooth transitions between blocks are not feasible
- This pack currently uses marker entities to keep track of dynamic light positions. If these entities are cleared by you or plugins like EntityTrackerFixer, light blocks will be left behind. See issue #25
- Vanilla light blocks are unfortunately immovable by pistons and block explosion damage. This can cause some redstone contraptions to malfunction. Please report any issues, I try to prevent common cases. See e.g. fixed issues #51, #15, #12, #10
- In Minecraft 1.21.4 and below, dynamic light updates will always trigger block updates. This could cause floating blocks affected by gravity, like sand or gravel, to fall
- Some shader packs that ignore the vanilla lightmap, such as Rethinking Voxels, will not display the dynamic lights. See issue #59
- Dynamic Lights cannot function in 1x1 block spaces occupied by non-solid blocks, as there is simply no space for placing light blocks. See issues #39 and #43
- Dynamic Lights per player operate globally. See a detailed explanation here
🔧 Installation & Use
Install either as:
- Data Pack [DP] ➜ Place
.zipin your world'sdatapacksfolder - Mod [Mod] ➜ Drop into your
modsfolder and optionally install
MidnightLib for a global config file and UI
To manage settings, reset, or uninstall the pack, use /trigger tschipcraft.menu or /function #tschipcraft:menu.
🧩 Compatibility
Forge is only natively supported until Minecraft 1.21.5.
This data pack follows the Smithed and essential MC Datapacks Discord Server Conventions to ensure data pack compatibility.
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 |
- Added support for Minecraft 26.2.x** ♨️
- Replaced deprecated
typekey withentity_typein predicates - Bumped pack format and protocol version
- Fixed broken bubble column creation when holding a light source (closes [#105](https://github.com/Tschipcraft/dynamiclights/issues/105))
- Fixed possibility to create a suspended water block when holding a light source (closes [#106](https://github.com/Tschipcraft/dynamiclights/issues/106))
- Fixed glowing potion effect with infinite duration not getting recognized (closes [#98](https://github.com/Tschipcraft/dynamiclights/issues/98))
- Added support for Minecraft 26.2.x** ♨️
- Replaced deprecated
typekey withentity_typein predicates - Bumped pack format and protocol version
- Fixed broken bubble column creation when holding a light source (closes [#105](https://github.com/Tschipcraft/dynamiclights/issues/105))
- Fixed possibility to create a suspended water block when holding a light source (closes [#106](https://github.com/Tschipcraft/dynamiclights/issues/106))
- Fixed glowing potion effect with infinite duration not getting recognized (closes [#98](https://github.com/Tschipcraft/dynamiclights/issues/98))
- Added support for Minecraft 26.1.2** 🧩
- Added support for Minecraft 26.1** 🐤
- Added router to handle [unobfuscated code](https://www.minecraft.net/en-us/article/removing-obfuscation-in-java-edition)
- Bumped pack format and protocol version
- Added support for Minecraft 26.1** 🐤
- Added router to handle [unobfuscated code](https://www.minecraft.net/en-us/article/removing-obfuscation-in-java-edition)
- Bumped pack format and protocol version
- Added preliminary support for Minecraft 26.1** 🐤
- Added support for Minecraft 1.21.11** 🐎
- Updated rain detection to use our own
#is_drybiome tag combo instead of the now removed#snow_golem_meltstag - Removed broken hide feedback code for 1.21+
- Bumped pack format and protocol version
- Reduced non-player entity cap from 1000 to 750 ([#91](https://github.com/Tschipcraft/dynamiclights/issues/91))
- Added support for Minecraft 1.21.11** 🐎
- Updated rain detection to use our own
#is_drybiome tag combo instead of the now removed#snow_golem_meltstag - Removed broken hide feedback code for 1.21+
- Bumped pack format and protocol version
- Reduced non-player entity cap from 1000 to 750 ([#91](https://github.com/Tschipcraft/dynamiclights/issues/91))
- Added support for Minecraft 1.21.10** 🧩
- Added support for Minecraft 1.21.9** 🥉
- Added Copper Torches and Copper Lanterns to light level 15 items
- Updated to work with the new pack.mcmeta syntax
- Expanded the search area for dynamic light placement**
- Improved piston detection to search for slime or honey blocks in corners and behind other blocks
- Fixed Curios slot parsing issues (closes [#76](https://github.com/Tschipcraft/dynamiclights/issues/76))
- Added Firefly Bushes to light level 3 items
- Added mod support for [TerraFirmaCraft](https://modrinth.com/project/JaCEZUhg) (closes [#72](https://github.com/Tschipcraft/dynamiclights/issues/72)), [Bone Torch](https://www.curseforge.com/minecraft/mc-mods/sbm-bone-torch), and [Aquatic Torches](https://modrinth.com/project/yJR377od) (closes [#38](https://github.com/Tschipcraft/dynamiclights/issues/38))
- Added support for Minecraft 1.21.9** 🥉
- Added Copper Torches and Copper Lanterns to light level 15 items
- Updated to work with the new pack.mcmeta syntax
- Expanded the search area for dynamic light placement**
- Improved piston detection to search for slime or honey blocks in corners and behind other blocks
- Fixed Curios slot parsing issues (closes [#76](https://github.com/Tschipcraft/dynamiclights/issues/76))
- Added Firefly Bushes to light level 3 items
- Added mod support for [TerraFirmaCraft](https://modrinth.com/project/JaCEZUhg) (closes [#72](https://github.com/Tschipcraft/dynamiclights/issues/72)), [Bone Torch](https://www.curseforge.com/minecraft/mc-mods/sbm-bone-torch), and [Aquatic Torches](https://modrinth.com/project/yJR377od) (closes [#38](https://github.com/Tschipcraft/dynamiclights/issues/38))
- Added support for Minecraft 1.21.9** 🥉
- Added Copper Torches and Copper Lanterns to light level 15 items
- Updated to work with the new pack.mcmeta syntax
- Expanded the search area for dynamic light placement**
- Improved piston detection to search for slime or honey blocks in corners and behind other blocks
- Fixed Curios slot parsing issues (closes [#76](https://github.com/Tschipcraft/dynamiclights/issues/76))
- Added Firefly Bushes to light level 3 items
- Added mod support for [TerraFirmaCraft](https://modrinth.com/project/JaCEZUhg) (closes [#72](https://github.com/Tschipcraft/dynamiclights/issues/72)), [Bone Torch](https://www.curseforge.com/minecraft/mc-mods/sbm-bone-torch), and [Aquatic Torches](https://modrinth.com/project/yJR377od) (closes [#38](https://github.com/Tschipcraft/dynamiclights/issues/38))
- Fixed an issue where a structure void item would sometimes flicker below players with an equipped Curios slot** 🔧 (closes [#85](https://github.com/Tschipcraft/dynamiclights/issues/85))
- Optimized execution by separating logic for players and non-players, capping non-player entities at 1000, and reducing the dynamic light radius around players from 65 to 55 blocks to include fewer entities ([#84](https://github.com/Tschipcraft/dynamiclights/issues/84))
- Fixed an issue where a structure void item would sometimes flicker below players with an equipped Curios slot** 🔧 (closes [#85](https://github.com/Tschipcraft/dynamiclights/issues/85))
- Optimized execution by separating logic for players and non-players, capping non-player entities at 1000, and reducing the dynamic light radius around players from 65 to 55 blocks to include fewer entities ([#84](https://github.com/Tschipcraft/dynamiclights/issues/84))
- Fixed an issue where a structure void item would sometimes flicker below players with an equipped Curios slot** 🔧 (closes [#85](https://github.com/Tschipcraft/dynamiclights/issues/85))
- Optimized execution by separating logic for players and non-players, capping non-player entities at 1000, and reducing the dynamic light radius around players from 65 to 55 blocks to include fewer entities ([#84](https://github.com/Tschipcraft/dynamiclights/issues/84))
- Added support for Minecraft 1.21.8** 🧩
- Added support for Minecraft 1.21.7** 💿
- Added support for Minecraft 1.21.7** 💿
- Added support for Minecraft 1.21.6** ☁️
- Fixed 1.21.5 NeoForge crash when installed alongside MidnightLib
- Added support for Minecraft 1.21.6** ☁️
- Fixed 1.21.5 NeoForge crash when installed alongside MidnightLib
- Added support for Minecraft 1.21.5** 🌸
- Updated to work with the new text component format
- Updated block placement commands to use the new
strictargument, removing the restriction to avoid most block update affected blocks, such as falling blocks - Added native NeoForge support**
- Improved piston detection to search for slime blocks in all directions. This resolves an issue where some zero-tick piston contraptions would break (closes [#51](https://github.com/Tschipcraft/dynamiclights/issues/51))
- Fixed chat flooding when triggering the menu in Minecraft 1.20.6 or below (closes [#66](https://github.com/Tschipcraft/dynamiclights/issues/66))
- Added additional data to Dynamic Lights' marker entities to display a name when [Axiom](https://modrinth.com/mod/N6n5dqoA) is installed ([#19](https://github.com/Tschipcraft/dynamiclights/issues/19))
- Added additional failsafes for menu interactions ([#70](https://github.com/Tschipcraft/dynamiclights/issues/70))
- Improved performance slightly by switching to
sort=arbitraryto allow entity selector short-circuiting - Annotated the required Java version for mod versions
- Added Argentine Spanish (
es_ar) language support (Thanks @Texaliuz)
- Added support for Minecraft 1.21.5** 🌸
- Updated to work with the new text component format
- Updated block placement commands to use the new
strictargument, removing the restriction to avoid most block update affected blocks, such as falling blocks - Added native NeoForge support**
- Improved piston detection to search for slime blocks in all directions. This resolves an issue where some zero-tick piston contraptions would break (closes [#51](https://github.com/Tschipcraft/dynamiclights/issues/51))
- Fixed chat flooding when triggering the menu in Minecraft 1.20.6 or below (closes [#66](https://github.com/Tschipcraft/dynamiclights/issues/66))
- Added additional data to Dynamic Lights' marker entities to display a name when [Axiom](https://modrinth.com/mod/N6n5dqoA) is installed ([#19](https://github.com/Tschipcraft/dynamiclights/issues/19))
- Added additional failsafes for menu interactions ([#70](https://github.com/Tschipcraft/dynamiclights/issues/70))
- Improved performance slightly by switching to
sort=arbitraryto allow entity selector short-circuiting - Annotated the required Java version for mod versions
- Added Argentine Spanish (
es_ar) language support (Thanks @Texaliuz)
- Added support for Minecraft 1.21.4** 🪵
- Fixed crash when loading or creating a world in Forge 52.0.0 or newer (1.21.1+) (closes [#65](https://github.com/Tschipcraft/dynamiclights/issues/65))
- Added support for Minecraft 1.21.4** 🪵
- Fixed crash when loading or creating a world in Forge 52.0.0 or newer (1.21.1+) (closes [#65](https://github.com/Tschipcraft/dynamiclights/issues/65))
- Added support for Minecraft 1.21.3** 💰
- Added Curios API and Curios API Continuation support** (closes [#52](https://github.com/Tschipcraft/dynamiclights/issues/52))
- Added global and per-player toggle for Dynamic Lights** (closes [#56](https://github.com/Tschipcraft/dynamiclights/issues/56), closes [#37](https://github.com/Tschipcraft/dynamiclights/issues/37), closes [#26](https://github.com/Tschipcraft/dynamiclights/issues/26), closes [#47](https://github.com/Tschipcraft/dynamiclights/issues/47))
- Added mod support for [Lucky's Wardrobe](https://modrinth.com/project/zhIupQBu)
- Fixed ominous item spawners not being parsed for light emitting items
- Fixed Dynamic Lights breaking after some time on paper servers (closes [#45](https://github.com/Tschipcraft/dynamiclights/issues/45), closes [#21](https://github.com/Tschipcraft/dynamiclights/issues/21))
- Fixed tschipcraft.menu trigger not being enabled in 1.21+
- Added support for Minecraft 1.21.3** 💰
- Added Curios API and Curios API Continuation support** (closes [#52](https://github.com/Tschipcraft/dynamiclights/issues/52))
- Added global and per-player toggle for Dynamic Lights** (closes [#56](https://github.com/Tschipcraft/dynamiclights/issues/56), closes [#37](https://github.com/Tschipcraft/dynamiclights/issues/37), closes [#26](https://github.com/Tschipcraft/dynamiclights/issues/26), closes [#47](https://github.com/Tschipcraft/dynamiclights/issues/47))
- Added mod support for [Lucky's Wardrobe](https://modrinth.com/project/zhIupQBu)
- Fixed ominous item spawners not being parsed for light emitting items
- Fixed Dynamic Lights breaking after some time on paper servers (closes [#45](https://github.com/Tschipcraft/dynamiclights/issues/45), closes [#21](https://github.com/Tschipcraft/dynamiclights/issues/21))
- Fixed tschipcraft.menu trigger not being enabled in 1.21+
- Support for Minecraft 1.21** ⚔️ (closes [#29](https://github.com/Tschipcraft/dynamiclights/issues/29), [#41](https://github.com/Tschipcraft/dynamiclights/issues/41), [#42](https://github.com/Tschipcraft/dynamiclights/issues/42), [#44](https://github.com/Tschipcraft/dynamiclights/issues/44))
- Copied the contents of the legacy folders to their new names and removed unused code
- Used new enchantment check format in predicates
- Updated menu trigger to use advancements instead and added menu message header
- Fixed performance overlay for Minecraft 1.20.2+ not having an effect
- Updated LICENSE
- Support for Minecraft 1.21** ⚔️ (closes [#29](https://github.com/Tschipcraft/dynamiclights/issues/29), [#41](https://github.com/Tschipcraft/dynamiclights/issues/41), [#42](https://github.com/Tschipcraft/dynamiclights/issues/42), [#44](https://github.com/Tschipcraft/dynamiclights/issues/44))
- Copied the contents of the legacy folders to their new names and removed unused code
- Used new enchantment check format in predicates
- Updated menu trigger to use advancements instead and added menu message header
- Fixed performance overlay for Minecraft 1.20.2+ not having an effect
- Updated LICENSE
- Hotfix for v1.8** - the data pack now actually includes the overlays for compatibility with 1.20.6 🔧 (closes [#34](https://github.com/Tschipcraft/dynamiclights/issues/34))
<details>
<summary> v1.8 Changelog (click to expand)</summary>
- Update to Minecraft 1.20.6** 🐺
- Switched to testing components rather than NBT in predicates
- Added support for the newly added contents slot in predicates
- Added intermediate light levels 3 and 12** ([#14](https://github.com/Tschipcraft/dynamiclights/issues/14))
- Magma cubes, magma blocks, magma cream, all remaining amethyst buds, heart of the sea and totem of undying (closes [#23](https://github.com/Tschipcraft/dynamiclights/issues/23)) now emit light level 3
- Dragon fireballs now emit light level 12 instead of 15
- Implemented a new system for finding valid locations for dynamic lights.**
- Added support for parsing item displays, block displays and falling blocks**
- Added support for parsing tridents, arrows and ominous item spawners in versions 1.20.5 and up**
- Simplified light block placement and removal
- Fixed shulkers teleporting away when shooting (closes [#20](https://github.com/Tschipcraft/dynamiclights/issues/20))
- Eventified item frame reparsing in versions before 1.20.5
This should improve performance in regions with a high number of item frames while also improving responsiveness (first steps for [#13](https://github.com/Tschipcraft/dynamiclights/issues/13))
- Improved dynamic light explosion avoidance performance by checking a global score instead of scanning for nearby area effect clouds
- Fixed dynamic lights overwriting cave_air with air
- Fixed dynamic light position offset for item entities
- Added separate mod support tag lists for modded items
- Added additional overlay that should slightly improve performance when placing dynamic lights in 1.20.2 and above
- Gave dynamic light marker entities a custom name ([#19](https://github.com/Tschipcraft/dynamiclights/issues/19))
- Some light level changes
- Added conduit to light level 15 items
- Moved glowstone dust from light level 15 to light level 9
- Added crying obsidian to light level 9 items
- Added small_fireball to light level 9 entities
- Moved allay from 9 to light level 6 entities
- Added enchanted golden apple, enchanting table, enchanted book, sculk catalyst and the upcoming vault to light level 6 items
- Added paintings to the ignore tag list
- Added tnt minecarts to the may_block_explosion_damage tag list
</details>
- Hotfix for v1.8** - the data pack now actually includes the overlays for compatibility with 1.20.6 🔧 (closes [#34](https://github.com/Tschipcraft/dynamiclights/issues/34))
<details>
<summary> v1.8 Changelog (click to expand)</summary>
- Update to Minecraft 1.20.6** 🐺
- Switched to testing components rather than NBT in predicates
- Added support for the newly added contents slot in predicates
- Added intermediate light levels 3 and 12** ([#14](https://github.com/Tschipcraft/dynamiclights/issues/14))
- Magma cubes, magma blocks, magma cream, all remaining amethyst buds, heart of the sea and totem of undying (closes [#23](https://github.com/Tschipcraft/dynamiclights/issues/23)) now emit light level 3
- Dragon fireballs now emit light level 12 instead of 15
- Implemented a new system for finding valid locations for dynamic lights.**
- Added support for parsing item displays, block displays and falling blocks**
- Added support for parsing tridents, arrows and ominous item spawners in versions 1.20.5 and up**
- Simplified light block placement and removal
- Fixed shulkers teleporting away when shooting (closes [#20](https://github.com/Tschipcraft/dynamiclights/issues/20))
- Eventified item frame reparsing in versions before 1.20.5
This should improve performance in regions with a high number of item frames while also improving responsiveness (first steps for [#13](https://github.com/Tschipcraft/dynamiclights/issues/13))
- Improved dynamic light explosion avoidance performance by checking a global score instead of scanning for nearby area effect clouds
- Fixed dynamic lights overwriting cave_air with air
- Fixed dynamic light position offset for item entities
- Added separate mod support tag lists for modded items
- Added additional overlay that should slightly improve performance when placing dynamic lights in 1.20.2 and above
- Gave dynamic light marker entities a custom name ([#19](https://github.com/Tschipcraft/dynamiclights/issues/19))
- Some light level changes
- Added conduit to light level 15 items
- Moved glowstone dust from light level 15 to light level 9
- Added crying obsidian to light level 9 items
- Added small_fireball to light level 9 entities
- Moved allay from 9 to light level 6 entities
- Added enchanted golden apple, enchanting table, enchanted book, sculk catalyst and the upcoming vault to light level 6 items
- Added paintings to the ignore tag list
- Added tnt minecarts to the may_block_explosion_damage tag list
</details>