mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
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.
This commit is contained in:
parent
3ce6642a26
commit
4e59fcf5c1
6 changed files with 46 additions and 1 deletions
|
@ -561,6 +561,15 @@ int ModApiEnvMod::l_get_timeofday(lua_State *L)
|
|||
return 1;
|
||||
}
|
||||
|
||||
// get_day_count() -> int
|
||||
int ModApiEnvMod::l_get_day_count(lua_State *L)
|
||||
{
|
||||
GET_ENV_PTR;
|
||||
|
||||
lua_pushnumber(L, env->getDayCount());
|
||||
return 1;
|
||||
}
|
||||
|
||||
// get_gametime()
|
||||
int ModApiEnvMod::l_get_gametime(lua_State *L)
|
||||
{
|
||||
|
@ -1055,6 +1064,7 @@ void ModApiEnvMod::Initialize(lua_State *L, int top)
|
|||
API_FCT(set_timeofday);
|
||||
API_FCT(get_timeofday);
|
||||
API_FCT(get_gametime);
|
||||
API_FCT(get_day_count);
|
||||
API_FCT(find_node_near);
|
||||
API_FCT(find_nodes_in_area);
|
||||
API_FCT(find_nodes_in_area_under_air);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue