diff options
author | Perttu Ahola <celeron55@gmail.com> | 2011-12-04 15:55:37 +0200 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2011-12-04 15:55:37 +0200 |
commit | 09c48b60bd0430084d0d5a93357147e5279f071b (patch) | |
tree | c824795332cd801c1cdc62c502a58258f7371302 | |
parent | 4cc117ddf6149b5b488e598a620674c8df208eac (diff) | |
download | minetest-09c48b60bd0430084d0d5a93357147e5279f071b.tar.gz minetest-09c48b60bd0430084d0d5a93357147e5279f071b.tar.bz2 minetest-09c48b60bd0430084d0d5a93357147e5279f071b.zip |
Add EnvRef:get_node_light(pos, timeofday)
-rw-r--r-- | data/mods/default/init.lua | 2 | ||||
-rw-r--r-- | src/scriptapi.cpp | 29 |
2 files changed, 31 insertions, 0 deletions
diff --git a/data/mods/default/init.lua b/data/mods/default/init.lua index 7f0614e20..1bd1eba4a 100644 --- a/data/mods/default/init.lua +++ b/data/mods/default/init.lua @@ -146,6 +146,8 @@ -- ^ Returns {name="ignore", ...} for unloaded area -- - get_node_or_nil(pos) -- ^ Returns nil for unloaded area +-- - get_node_light(pos, timeofday) -> 0...15 or nil +-- ^ timeofday: nil = current time, 0 = night, 0.5 = day -- - add_luaentity(pos, name) -- - add_item(pos, itemstring) -- - add_rat(pos) diff --git a/src/scriptapi.cpp b/src/scriptapi.cpp index ffbce9167..9b37c53b4 100644 --- a/src/scriptapi.cpp +++ b/src/scriptapi.cpp @@ -2402,6 +2402,34 @@ private: } } + // EnvRef:get_node_light(pos, timeofday) + // pos = {x=num, y=num, z=num} + // timeofday: nil = current time, 0 = night, 0.5 = day + static int l_get_node_light(lua_State *L) + { + EnvRef *o = checkobject(L, 1); + ServerEnvironment *env = o->m_env; + if(env == NULL) return 0; + // Do it + v3s16 pos = readpos(L, 2); + u32 time_of_day = env->getTimeOfDay(); + if(lua_isnumber(L, 3)) + time_of_day = 24000.0 * lua_tonumber(L, 3); + time_of_day %= 24000; + u32 dnr = time_to_daynight_ratio(time_of_day); + MapNode n = env->getMap().getNodeNoEx(pos); + try{ + MapNode n = env->getMap().getNode(pos); + INodeDefManager *ndef = env->getGameDef()->ndef(); + lua_pushinteger(L, n.getLightBlend(dnr, ndef)); + return 1; + } catch(InvalidPositionException &e) + { + lua_pushnil(L); + return 1; + } + } + // EnvRef:add_luaentity(pos, entityname) // pos = {x=num, y=num, z=num} static int l_add_luaentity(lua_State *L) @@ -2571,6 +2599,7 @@ const luaL_reg EnvRef::methods[] = { method(EnvRef, remove_node), method(EnvRef, get_node), method(EnvRef, get_node_or_nil), + method(EnvRef, get_node_light), method(EnvRef, add_luaentity), method(EnvRef, add_item), method(EnvRef, add_rat), |