diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 8dfb991b7..a35adca60 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -7468,8 +7468,10 @@ child will follow movement and rotation of that bone. * `saturation` sets the saturation (vividness). values > 1 increase the saturation values in [0,1) decrease the saturation + * This value has no effect on clients who have the "Tone Mapping" shader disabled. * `shadows` is a table that controls ambient shadows * `intensity` sets the intensity of the shadows from 0 (no shadows, default) to 1 (blackness) + * This value has no effect on clients who have the "Dynamic Shadows" shader disabled. * `get_lighting()`: returns the current state of lighting for the player. * Result is a table with the same fields as `light_definition` in `set_lighting`. * `respawn()`: Respawns the player using the same mechanism as the death screen, diff --git a/src/script/lua_api/l_object.cpp b/src/script/lua_api/l_object.cpp index 0538e15d5..0a3e05907 100644 --- a/src/script/lua_api/l_object.cpp +++ b/src/script/lua_api/l_object.cpp @@ -2294,10 +2294,10 @@ int ObjectRef::l_set_lighting(lua_State *L) Lighting lighting = player->getLighting(); lua_getfield(L, 2, "shadows"); if (lua_istable(L, -1)) { - lighting.shadow_intensity = getfloatfield_default(L, -1, "intensity", lighting.shadow_intensity); + getfloatfield(L, -1, "intensity", lighting.shadow_intensity); } - lighting.saturation = getfloatfield_default(L, 2, "saturation", lighting.saturation); - lua_pop(L, -1); + lua_pop(L, 1); // shadows + getfloatfield(L, -1, "saturation", lighting.saturation); getServer(L)->setLighting(player, lighting); return 0;