Light Level 2025
displays block-light level on top of the solid blocks
Light Level 2025
<div style="display: inline"> <img src="https://img.shields.io/badge/Minecraft-25w37a-white"> <img src="https://img.shields.io/badge/Fabric_Loader-0.17.2-white"> <img src="https://img.shields.io/badge/Fabric_API-0.133.6%2B1.21.9-white"> <img src="https://img.shields.io/github/actions/workflow/status/dark-lion-jp/light-level-2025/build.yml?branch=main"> </div>
Light Level 2025
Press F9 to see the block light levels.
Inspired by LightLevel By parzivail, with some improvements implemented.

Dependencies
You can find the dependencies in the description of each release.
- Fabric Loader Fabric Loader from fabricmc.net
- Fabric API Fabric API from modrinth %%MD1%% on GitHub
Features
Dimension-Specific Color Coding
The colors used to represent the light levels can be customized in `config/light-level-2025.yaml` as hex color codes.
Overworld
- Hostile mobs cannot spawn - color: green - conditions: - block light >= 1 - config field: `text.color.safe`
- Hostile mobs can spawn at night - color: yellow - conditions: - block light = 0 - sky light >= 8 - config field: `text.color.warning`
- Hostile mobs can always potentially spawn - color: red - conditions: - block light = 0 - sky light <= 7 - config field: `text.color.danger`
The Nether
- Mobs cannot spawn - color: green - conditions: - block light >= 12 - config field: `text.color.safe`
- Mobs can always potentially spawn - color: red - conditions: - block light <= 11 - config field: `text.color.danger`
The End
- Mobs cannot spawn - color: green - conditions: - block light >= 1 - config field: `text.color.safe`
- Mobs can always potentially spawn - color: red - conditions: - block light = 0 - config field: `text.color.danger`
Adjustable Text Height
If a block that doesn't have a collision box is above the target block and its appearance obstructs the text, the light level will be shown above its visual.
Debug Mode
Press F3 to show both the block light and the sky light levels.
Technical Features
Block Exclusion Conditions
The rendering on a target block will be skipped if:
- The target block is one of the following (config field: `block.blacklist`): - `minecraft:air` - `minecraft:barrier` - `minecraft:bedrock` - `minecraft:chain_command_block` - `minecraft:command_block` - `minecraft:end_portal` - `minecraft:nether_portal` - `minecraft:repeating_command_block`
- The target block is not opaque and visually transparent. - Examples Excluded: - `minecraft:glass` - `minecraft:ice` - Examples Not Excluded: - `minecraft:glowstone` - `minecraft:packed_ice`
- The target block does not have a full square top surface. - Examples Excluded: - bottom slabs - right-side-up stairs - Examples Not Excluded: - top slabs - up-side-down stairs
- A block above the target block has a collision shape. - Examples Excluded: - `minecraft:ladder` - `minecraft:snow` (layers count >= 2) - Examples Not Excluded: - `minecraft:vine` - `minecraft:snow` (layers count = 1)
Caching
This mod caches information about block positions and the text to be rendered, storing it in memory for faster access.
By setting the cache update frequency in frames, the update rate automatically adjusts based on FPS — updating more frequently in high-FPS environments and less frequently in low-FPS environments.
You can change the update frequency via `cache.update_interval_frames` in the config file.
Rendering Culling
This mod does not render the light level for a target block that is invisible to the player.
Configuration
You can customize the mod behavior via `config/light-level-2025.yaml`.
- `render_distance` - `horizontal`: Maximum horizontal distance for rendering - Default: `16` - `vertical`: Maximum vertical distance for rendering - Default: `4`
- `block` - `blacklist`: Blocks to exclude from rendering - Default: - `minecraft:air` - `minecraft:barrier` - `minecraft:bedrock` - `minecraft:chain_command_block` - `minecraft:command_block` - `minecraft:end_portal` - `minecraft:nether_portal` - `minecraft:repeating_command_block` - `whitelist`: Blocks to include in rendering - Default: - `minecraft:mud` - `minecraft:slime_block` - `minecraft:soul_sand`
- `text` - `color`: - `safe`: Light level where hostile mobs cannot spawn - Default: `40FF40` - `warning`: Light level where hostile mobs can spawn at night in Overworld - Default: `FFFF40` - `danger`: Light level where hostile mobs can always potentially spawn - Default: `FF4040` - `neutral`: Display color for unknown or unsupported dimensions - Default: `FFFFFF` - `scale`: - `normal`: Text size for normal state - Default: `0.03125` - `debug`: Text size for debug screen - Default: `0.020833334` - `offset_y_base`: Height to offset the text from the block - Default: `0.1` - `hide_safe`: Hides light level values that are considered "safe" - Default: `false`
- `cache` - `update_interval_frames`: Frequency in frames to update the block cache - Default: `20`
Contribution
We welcome contributions from the community!
To contribute, please fork the repository and create a pull request on GitHub. We appreciate your help in making this project even better!
Please note that when we use a LLM for code proofreading, aspects of the code might change. This isn't a reflection of any dissatisfaction or shortcomings with your original code.