From 4e59fcf5c1e40dee764317a1190dceadc3a77829 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Sun, 6 Mar 2016 12:02:21 -0800 Subject: Add consistent monotonic day counter - get_day_count() I've written several experimental bits of code that revolve around the need for a consistent calendar, but implementing one is extremely hard in mods due to time changes and mods overriding core.get_timeofday(), which will conflict. The second part of the problem is that doing this from a mod requires constant maintenance of a settings file. An implementation in core is trivial, however, and solves all of these problems at virtually no cost: No extra branches in server steps, and a single branch when minetest.set_time_of_day(), which is entirely reasonable. We store the day_count value in env_meta.txt. The use case is obvious: This change allows mods to create an actual virtual calendar, or properly account for seasonal changes, etc.. We add a "/days" chatcommand that displays the current day count. No permissions are needed. It can only retrieve the day count, not modify it. --- src/script/lua_api/l_env.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/script/lua_api/l_env.h') diff --git a/src/script/lua_api/l_env.h b/src/script/lua_api/l_env.h index 0e385ffef..89dd7978f 100644 --- a/src/script/lua_api/l_env.h +++ b/src/script/lua_api/l_env.h @@ -113,6 +113,9 @@ private: // get_gametime() static int l_get_gametime(lua_State *L); + // get_day_count() -> int + static int l_get_day_count(lua_State *L); + // find_node_near(pos, radius, nodenames) -> pos or nil // nodenames: eg. {"ignore", "group:tree"} or "default:dirt" static int l_find_node_near(lua_State *L); -- cgit v1.2.3