Reason: Changes were made to mob spawning requirements.
Light (or lighting) in Minecraft affects visibility, mob spawning, and plant growth. There are three aspects of Minecraft's lighting system: light level, internal light level, and rendered brightness.
Light level[]
Light levels can be found on the debug screen in Java Edition. Light may come from two sources: the sky and certain blocks. There are 16 light levels, specified by an integer from 0 (the minimum) through 15 (the maximum).
Block light[]
Block light comes from light-emitting blocks, and spreads using a flood fill algorithm.
The block light level decreases by one for each meter (block) of taxicab distance from the light source. This applies to each of the 3 coordinate axes. In other words, the light level decreases diagonally by the sum of the distances along each axis. For example:
- If a torch with light level 14 is placed on the floor, the light level of the adjacent floor blocks in all four directions is 13, while the diagonal blocks in all four directions have a light level of 12 (14 minus 1 south, minus 1 east).
- If a torch with light level 14 is placed on a wall one block above the floor, then the block on the floor that is one block southeast of and below the torch has a light level of 11 (14 - 1 (south) - 1 (east) - 1 (down)).
In Bedrock Edition, light-filtering blocks can reduce more than 1 level of block light.
On a surface, this effect produces a diamond-shaped pattern of illumination around the light source.
In Java Edition, when calculating lighting, the shapes of some blocks are detected: pistons, daylight detectors, enchanting tables, farmland, lecterns, stonecutters, dirt paths, snow, end portal frames, slabs and stairs, so that the light passing through them can spread only in specific directions. For example, dirt paths prevents the light from propagating downward, but the light can propagate in other directions.
Sky light[]
The sky light level for blocks exposed to broad daylight is 15. Sky light cast onto blocks can spread to darker areas using a flood fill algorithm. Sky light is not reduced at night; rather, the spawning of mobs is determined by internal light values.
Opaque blocks can prevent the spread of sky light. By contrast, transparent blocks such as glass and iron bars have no effect on the sky light level. All light-filtering blocks, however, reduce the spread of sky light.
When sky light of a level of 15 spreads down through a transparent block, the level remains unchanged. When it spreads horizontally or upward, it reduces 1 light level. However, when it spreads through a light-filtering block, it does not follow the above two rules and attenuates specific light levels.
Sky light with a level less than 15 spreads as block light - when it propagates to adjacent (including top and bottom, six blocks in total) blocks, it is attenuated until it is 0.
In Java Edition, when calculating lighting, the shapes of some blocks are detected: piston, daylight detectors, enchanting table, farmland, lectern, stonecutter, grass path, snow, end portal frame, slabs, and stairs. They have directional opacity, so that the light passing through them can spread only in specific directions. For example, the grass path prevents the light from propagating downward, but the light can propagate in other directions.
Light-filtering blocks[]
In Java Edition, all of the following light-filtering blocks decrease sky light by 1 level (but do not affect block light).
Icon | Block |
---|---|
Water | |
All transparent waterlogged blocks | |
Bubble Column | |
Ice | |
Frosted Ice | |
Cobweb | |
Leaves | |
Slime Block | |
Honey Block | |
Monster Spawner | |
Lava | |
Beacon | |
End Gateway | |
Chorus Plant | |
Chorus Flower | |
Shulker Box |
In Bedrock Edition, light-filtering blocks can reduce more levels of block or sky light. The following values are the amounts by which each block decreases the light level.
Icon | Block | Amount of decrease |
---|---|---|
Beacon | 14 | |
Anvil | 3 | |
Hopper | ||
Brewing Stand | ||
Cauldron | ||
Ice | ||
Frosted Ice | ||
Water | 2 | |
Cobweb | 1 | |
Leaves | ||
Powder Snow | ||
Slabs (except double slabs) |
Light-emitting blocks[]
Internal light level[]
The internal light level is used for calculations within the game. The game uses the internal light level of one block to compute aspects of the game, which include mob spawning, plant growth, and daylight detector outputs.
The game uses sky light, time, and weather to calculate an internal sky light value (also known as darkening sky light), then uses the maximum level of the block light and the internal sky light to calculate the internal light (formula: (max(internal sky light,block light))
). This value is an integer with a maximum level of 15; it can also be negative.
Here are the levels of internal sky light at a sky light of level 15:
Internal sky light | Clear | Rain or Snowfall | Thunder | |||
---|---|---|---|---|---|---|
Time ↓ | Time ↑ | Time ↓ | Time ↑ | Time ↓ | Time ↑ | |
4 | 13,670–(Midnight/18,000)-22,330
(8,660 Gtk/7:13) |
13,670–(Midnight/18,000)-22,330
(8,660 Gtk/7:13) |
13,670–(Midnight/18,000)-22,330
(8,660 Gtk/7:13) | |||
5 | 22,331–22,491
(160 Gtk/8 sec) |
13,509–13,669
(160 Gtk/8 sec) |
22,331–22,565
() |
13,436–13,669
() |
22,331–22,671
() |
13,330–13,669
() |
6 | 22,492–22,652
(160 Gtk/8 sec) |
13,348–13,508
(160 Gtk/8 sec) |
22,566–22,798
() |
13,203–13,435
() |
22,672–23,010
() |
12,990–13,329
() |
7 | 22,653–22,812[JE only] 22,653–22,813[BE only]J: (159 Gtk/7.95 sec) B: (160 Gtk/8 sec) |
13,188–13,347
(159 Gtk/7.95 sec) |
22,799–23,031
() |
12,969–13,202
() |
23,011–23,352
() |
12,648–12,989
() |
8 | 22,813[JE only]–22,973 22,814[BE only]–22,973 J: (160 Gtk/8 sec) B: (159 Gtk/7.95 sec) |
13,027–13,187
(160 Gtk/8 sec) |
23,032–23,266
() |
12,734–12,968
() |
23,353–23,700
() |
12,300–12,647
() |
9 | 22,974–23,134
(160 Gtk/8 sec) |
12,867–13,026
(159 Gtk/7.95 sec) |
23,267–23,504
() |
12,497–12,733
() |
23,701-(Dawn/24,000/0)–59
(240 Gtk/12 sec) |
11,941[JE only]–(Dusk/12,000)-12,299 11,942[BE only]–(Dusk/12,000)-12,299 J:(358 Gtk/17.9 sec) B:(357 Gtk/17.85 sec) |
10 | 23,135–23,296
(161 Gtk/8.05 sec) |
12,705–12,866
(161 Gtk/8.05 sec) |
23,505–23,745
() |
12,256–12,496
() |
60–(Noon/6,000)-11,940[JE only] 60–(Noon/6,000)-11,941[BE only]J: (11,880 Gtk/9:54) B: (11,881 Gtk/9:54) | |
11 | 23,297–23,459
(162 Gtk/8.1 sec) |
12,542–12,704
(162 Gtk/8.1 sec) |
23,746–23,991
() |
12,010–12,255
() |
N/A | |
12 | 23,460–23,623[JE only] 23,460–23,624[BE only]J: (163 Gtk/8.15 sec) B: (164/8.2 sec) |
12,377–12,541
(164 Gtk/8.2 sec) |
23,992–(Dawn/24,000/0)(Noon/6,000)(Dusk/12,000)-12,009
(12,017 Gtk/10:00.85) |
N/A | ||
13 | 23,624[JE only]–23,790 23,625[BE only]–23,790 J: (166 Gtk/8.3 sec) B: (165 Gtk/8.25 sec) |
12,210–12,376
(166 Gtk/8.3 sec) |
N/A | N/A | ||
14 | 23,791–23,960
(169 Gtk/8.45 sec) |
12,041–12,209
(168 Gtk/8.4 sec) |
N/A | N/A | ||
15 | 23,961–(Dawn/24,000/0)(Noon/6,000)(Dusk/12,000)-12,040 | N/A | N/A |
To obtain an internal sky light for a sky light level s less than 15, take the internal level L at 15 and subtract from it the difference between 15 and s: L−(15−s).
Icon | Time | Internal sky light when sky light is 15 |
---|---|---|
noon, during clear weather | 15 | |
noon, during Rain or Snowfall | 12 | |
noon, during a Thunderstorm | 10[storm 1] | |
midnight, during clear weather | 4 |
- ↑ During thunderstorms, hostile mobs are allowed to spawn as if the internal sky light level were actually 5.
Effects of internal light[]
Keep in mind that the internal light level is only one of the considerations that apply to mob spawning and plant growth.
Mobs[]
Mobs may ignore the light level they are supposed to spawn in after using /fill
.[1]
Light level >
Mob v |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Bats | Spawn at y: 0–62 | Spawn at y: 0–62 from October 20 to November 3[JE only] | Do not spawn | |||||||||||||
Blazes | Spawn in Nether Fortresses | Do not spawn | ||||||||||||||
Wither Skeletons | Spawn in Nether Fortresses | Do not spawn | ||||||||||||||
Zombified Piglins | Spawn in the Nether | Do not spawn | ||||||||||||||
Slimes (slime chunk) | Spawn in slime chunks at y: -64–40 | |||||||||||||||
Slimes (swamp) | Spawn in swamp biomes at y: 50–70 | Do not spawn | ||||||||||||||
Zombies Skeletons Chicken jockeys |
Spawn in the Overworld | Skeletons spawn in the Nether | Do not spawn | Do not spawn, burn in sunlight | ||||||||||||
Drowned | Spawn in oceans and rivers | Hostile, do not spawn | Burn in sunlight, ignore player outside water when in sunlight | |||||||||||||
Creepers Witches |
Spawn in the Overworld | Do not spawn | ||||||||||||||
Phantoms | Spawn in the Overworld if player hasn't entered a bed in over 3 in-game days | Do not spawn | Burn in sunlight | |||||||||||||
Spiders Cave spiders Spider jockey |
Spawn in the Overworld | Hostile, do not spawn | Do not spawn, neutral unless provoked | |||||||||||||
Silverfish | Spawn from monster spawners in the Overworld | Hostile, do not spawn | ||||||||||||||
Endermen | Spawn in all three dimensions | Spawn in the Nether | Do not spawn, teleport randomly in Overworld |
Blocks[]
Block | Level 0–3 | Level 4–7 | Level 8 | Level 9 | Level 10 | Level 11 | Level 12 | Level 13–15 |
---|---|---|---|---|---|---|---|---|
Snow[note 1] | Forms | Neither forms nor melts[note 2] | Melts | |||||
Ice[note 1] | Forms | Neither forms nor melts[note 3] | Melts | |||||
Mushrooms | Spread | Uproot unless on mycelium, podzol, or nylium | ||||||
Saplings Pumpkin or Melon stems Bamboo [note 4] |
Does not grow | Grows | ||||||
Wheat Carrots Potatoes Beetroots[note 5] |
Uproot | Does not grow | Grows | |||||
Grass Block Mycelium[note 6] |
Becomes dirt if opaque block or partially transparent block on top | Does not spread | Spreads to nearby dirt (see below) | |||||
Dirt[note 6] | Does not accept spread | Accepts spread if there is no opaque or semi-transparent block on top | ||||||
Frosted Ice | See Frosted Ice for details | |||||||
Daylight detector | Output |
- ↑ a b Sunlight does not affect snow or ice melting.
- ↑ "[MC-217420] Snow neither forms nor melts at block light level 11 - Jira" – Mojira, March 1, 2021.
- ↑ "[MC-217424] Ice neither forms nor melts at block light level 10 - Jira" – Mojira, March 1, 2021.
- ↑ For growth, the relevant light level is that in the block above the plant. The growth of pumpkins or melons from a stem checks the light above the stem, not the block where the pumpkin or melon grows.
- ↑ For growth, the relevant light level is that in the block above the plant. For uprooting, the relevant light level is the plant block itself.
- ↑ a b The relevant light level is that in the air block above it.
Rendered brightness[]
The game uses the light level (instead of internal light level), time, and weather to compute the rendered brightness of a given block or an entity. Light is completely monochromatic and cannot be truly colored.
As mentioned above, sky light is not reduced at night, instead, the brightness curve itself changes based on the time. Entities cast circular[Java Edition only] or tridecagonal[Bedrock Edition only] shadows; however, these are unrelated to the rendering of blocks.
In general, lighting due to blocks results in a higher brightness, which is balanced by the fact that light due to blocks effectively starts at 14 (solid light source blocks emit a level of 15, but that applies to the light source block itself) while sky light brightness is 15 outdoors. Light due to blocks also tends toward orange in the middle ranges, while sky light in the Overworld daytime is white.
In the Overworld with the "Moody" brightness setting, full daylight reaches 98% brightness,[luma 1] while at night brightness is reduced to about 17%[luma 1] and is shaded blue. Full darkness is about 5% brightness.[luma 1]
In the Nether, sky lighting doesn't play a role since there is no source of sky light (although if there were, it would reach about 99% brightness.[luma 1]) Full darkness with the "Moody" brightness setting is at about 25% brightness,[luma 1] slightly darker than a block light level of 7 and no sky light in the Overworld, and is shaded orange like block light.
In the End, sky lighting wouldn't play a role even if there were a source of sky light; this can also be seen if lightning is summoned in the End (there is no flash of brightness like there is in other dimensions). Full darkness in the End with the "Moody" brightness setting is about 28% brightness,[luma 1] and is shaded toward a bluish-green rather than the orange of the Nether and of block lighting.
In Java Edition 20w14∞, most unique dimensions have unique lighting system. However, most of the Easter egg dimensions do not have darkness at all. Instead, they are fully bright, but in an Easter egg dimension called gallery
has the blue lighting nearly identical to the Overworld at night (only significantly brighter). Easter egg dimensions that resembles the Overworld with just world generation modifications (namely busy
, chess
, decay
, holes
, pillars
, rooms
, slime
, and zone
) have the same lighting as in the Overworld. blacklight
has the inverted lighting system derived from the Overworld. colors
, red
, green
, and blue
dimensions resembles the Overworld with lighting mixed with dimensional tinting, and darkness
is blended with darkness at higher distances far away from the origin. Its darkness cannot be fixed with Night Vision effect.
Light level > Biome/time of day v |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Overworld (day) | ||||||||||||||||
Overworld (night, approximate) | ||||||||||||||||
Blacklight (day) | ||||||||||||||||
Blacklight (night, approximate) |
Smooth lighting[]
Smooth lighting is a lighting engine that blends light levels across block faces and darkens corners using ambient occlusion to add semi-realistic shadows and glowing from light sources. It affects only rendered brightness, not the light level, so it has no effect on mob spawning or crop growth. It is set on by default. Paintings, item frames[2] and water surfaces[3] are unaffected.[Java Edition only]
Smooth lighting can be turned on or off in the video settings.
Ambient occlusion in Minecraft[]
In many newer games, ambient occlusion is mainly generated dynamically by the GPU. But Minecraft calculates ambient occlusion in the code based on voxel placement and brightness levels.
Ambient occlusion is responsible for adding shading to an ordinary texture. It is a layer of translucent textures, on top of the normal textures. Overlaying these AO textures onto a texture is called AO mapping. There are about five AO texture patterns used in Minecraft's smooth lighting, excluding flips and rotations, and only three patterns algorithmically. Strictly speaking, it's probably more than that. That's when the intensity changes with the brightness level. But they are solved by tint.
AO texture pattern[]
If AO mapping is selected only to the northwest of the voxel, the following pattern is possible.
Number | Image |
---|---|
0 | |
1 | |
2 | |
3 |
These classifications allow one the ability to deduce a pattern from the placement of each voxel. The following function can then be used to compute the opacity of the voxels' vertices, depending on the presence of the side and corner voxels.
function vertexAO(side1, side2, corner) { return 3 - (side1 + side2 + corner) }
This generates a 2x2 pixel image using the values of each vertex. The pixels are small, but when zoomed in using anti-aliasing, it gradates.
History[]
Java Edition pre-Classic | |||||
---|---|---|---|---|---|
Cave game tech test | The lighting engine in Classic was simple, with only two light levels, bright and dark. "Sunlight" is emitted by the top edge of the map and hits any block that is under it, regardless of distance. It passes through transparent blocks to light blocks underneath. Blocks that do not receive light are in a dim shadow that remains at the same level of brightness no matter how far they are from a light source. [needs testing] | ||||
Java Edition Classic | |||||
May 26, 2009 | Notch discussed the feasibility of having dynamic lighting with limited range, allowing possibilities like defining blocks like lava to emit light. | ||||
Java Edition Indev | |||||
0.31 | 20091223-1 | Added 10 degrees of brightness, with a maximum of 9 for full daylight and a minimum of 0 for almost complete darkness. Brightness is a linear scale and represents its value divided by 8; for example 8 is 100% (8⁄8) and 7 is 87.5% (7⁄8).. | |||
20100109 | There are now 16 degrees of brightness, with a maximum of 15 for full daylight and a minimum of 0 for almost complete darkness. | ||||
Sunlight now has a maximum light value of 15. | |||||
20100204-2 | Passive mobs now spawn only in higher light levels, and hostile mobs spawn only in the dark. | ||||
20100212-1 | Sunlight's light value steadily decreases from dusk, until it reaches a night-time minimum value of 4, representing moonlight. | ||||
Java Edition Alpha | |||||
? | Lighting is no longer linear. | ||||
Each brightness value below 15 is 80% as bright as the one above it. For example, 14 is 80% as bright as 15, and 13 is 64% as bright as 15. | |||||
Sunlight now has its own light array and optimizations to make dawn and dusk smoother. During dusk, nighttime, and dawn, a "darkness" value is subtracted from the sky to create the effects of different times of day. | |||||
v1.2.0 | preview | Added the Nether, where light decreases by 10% each level, rather than the normal 20%. | |||
Hostile mobs could spawn in higher light levels at lower depths, using the formula 16 − (Layer / 8). At level 8 and below, mobs could spawn even in sunlight. | |||||
v1.2.1 | Notch reverted mob spawning to the original method, saying, "It was way too annoying. I have plans on what to do with this." | ||||
Java Edition Beta | |||||
1.3 | Smooth lighting engine added with the help of MrMessiah.[4] | ||||
1.8 | Pre-release | Implemented a new lighting engine. The lighting on a block is given a tint based on the most prominent source of light. | |||
Day/night cycles no longer require chunk updates and have a smooth transition. | |||||
Artificial light now gives a subtle "flicker." | |||||
Java Edition | |||||
1.4.2 | 12w39a | Dinnerbone fixed black patches in world generation,[5] and began overhauling the lighting systems such as changing the lighting of blocks to allow for directional lighting.[6][7] | |||
1.5 | 13w05a | Improved lighting interaction with stairs. | |||
13w06a | Several lighting optimizations. | ||||
13w09a | Added three different levels of smooth lighting: Off, Minimum, and Maximum. Minimum uses the old Smooth Lighting, and Maximum fixes a bug with stairs. | ||||
1.7.2 | 13w36a | Black patches in world generation and structure generation were made a lot less common.[8] | |||
1.8 | 14w30a | The lighting engine was significantly improved, removing most black spots present in world generation. | |||
1.14 | 18w43a | The lighting system has been rewritten. | |||
18w46a | Added support for directional opacity of blocks. | ||||
1.14.2 | pre4 | All light is now re-calculated the first time a world saved in a previous version is opened. | |||
1.17 | 21w13a | Added light blocks, which helps the placement of light. | |||
Pre-release 2 | Smooth lighting now works properly underwater.[9] | ||||
1.19.3 | Release Candidate 1 | The "Maximum" and "Minimum" settings for smooth lighting have been merged, since there is no difference between them.[10] | |||
Pocket Edition Alpha | |||||
v0.7.0 | Added toggleable smooth lighting. | ||||
v0.8.0 | build 2 | Removed the ability to toggle smooth lighting. | |||
Pocket Edition | |||||
1.1.0 | alpha 1.1.0.0 | Readded the Smooth Lighting toggle to Video options. |
Issues[]
Issues relating to "Light" are maintained on the bug tracker. Report issues there.
Trivia[]
- In Minecraft's source code, the luminescences are defined using the floating point values in the third column. These floating point numbers are fractions of 16, but are multiplied by 15 to get the integer light value. This means that both 0/16 and 1/16 (0.0 and 0.0625) correspond to the integer light value 0.
Gallery[]
A teaser from Notch showing the new lighting system for the Adventure Update.
Bugged light creating stripes similar to the stripe lands.
References[]
- ↑ "[MC-156880] Mobs spawn where they should not be able to after using /fill - Jira" – Mojira, July 16, 2019.
- ↑ "[MC-1531] No smooth lighting on item frames and paintings - Jira" – Mojira, October 31, 2012.
- ↑ "[MC-227302] Smooth lighting doesn't work properly on the water surface - Jira" – Mojira, June 3, 2021.
- ↑ https://web.archive.org/web/0/http://notch.tumblr.com/post/3446675806/minecraft-beta-1-3
- ↑ "Remember that silly lighting bug where world would generate with big black patches? Well you may not remember it in the future; it's fixed." – @Dinnerbone (Nathan Adams) on X, September 26, 2012
- ↑ "It's such a small thing to look at, but this required unbelievable amounts of code changing :D" – @Dinnerbone (Nathan Adams) on X, September 26, 2012
- ↑ http://www.reddit.com/r/Minecraft/comments/10g4mi/dinnerbone_at_this_point_i_think_its_almost/
- ↑ "Finally! Much fewer "black spots" in the terrain generator, such a relief =)" – @jeb_ (Jens Bergensten) on X, July 31, 2013
- ↑ "[MC-68129] Smooth lighting doesn't work properly underwater - Jira" – Mojira, August 18, 2014.
- ↑ MC-58668 — "Smooth Lighting Minimum and Maximum levels no longer differ" — resolved as "Fixed".