forked from Mirrorlandia_minetest/minetest
Add EnvRef:set_timeofday(0...1) and EnvRef:get_timeofday()
This commit is contained in:
parent
cb05a28745
commit
2e8e9ee7f5
@ -114,10 +114,10 @@
|
|||||||
-- minetest.chat_send_player(name, text)
|
-- minetest.chat_send_player(name, text)
|
||||||
-- minetest.get_player_privs(name) -> set of privs
|
-- minetest.get_player_privs(name) -> set of privs
|
||||||
-- minetest.get_inventory(location) -> InvRef
|
-- minetest.get_inventory(location) -> InvRef
|
||||||
-- minetest.get_current_modname() -> string
|
|
||||||
-- minetest.get_modpath(modname) -> eg. "/home/user/.minetest/usermods/modname"
|
|
||||||
-- ^ location = eg. {type="player", name="celeron55"}
|
-- ^ location = eg. {type="player", name="celeron55"}
|
||||||
-- {type="node", pos={x=, y=, z=}}
|
-- {type="node", pos={x=, y=, z=}}
|
||||||
|
-- minetest.get_current_modname() -> string
|
||||||
|
-- minetest.get_modpath(modname) -> eg. "/home/user/.minetest/usermods/modname"
|
||||||
--
|
--
|
||||||
-- minetest.debug(line)
|
-- minetest.debug(line)
|
||||||
-- ^ Goes to dstream
|
-- ^ Goes to dstream
|
||||||
@ -169,6 +169,8 @@
|
|||||||
-- - get_meta(pos) -- Get a NodeMetaRef at that position
|
-- - get_meta(pos) -- Get a NodeMetaRef at that position
|
||||||
-- - get_player_by_name(name) -- Get an ObjectRef to a player
|
-- - get_player_by_name(name) -- Get an ObjectRef to a player
|
||||||
-- - get_objects_inside_radius(pos, radius)
|
-- - get_objects_inside_radius(pos, radius)
|
||||||
|
-- - set_timeofday(val): val: 0...1; 0 = midnight, 0.5 = midday
|
||||||
|
-- - get_timeofday()
|
||||||
--
|
--
|
||||||
-- NodeMetaRef (this stuff is subject to change in a future version)
|
-- NodeMetaRef (this stuff is subject to change in a future version)
|
||||||
-- - get_type()
|
-- - get_type()
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
-- For testing random stuff
|
-- For testing random stuff
|
||||||
|
|
||||||
|
experimental = {}
|
||||||
|
|
||||||
function on_step(dtime)
|
function on_step(dtime)
|
||||||
-- print("experimental on_step")
|
-- print("experimental on_step")
|
||||||
--[[
|
--[[
|
||||||
@ -20,6 +22,26 @@ function on_step(dtime)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
--]]
|
--]]
|
||||||
|
--[[
|
||||||
|
if experimental.t1 == nil then
|
||||||
|
experimental.t1 = 0
|
||||||
|
end
|
||||||
|
experimental.t1 = experimental.t1 + dtime
|
||||||
|
if experimental.t1 >= 2 then
|
||||||
|
experimental.t1 = experimental.t1 - 2
|
||||||
|
minetest.log("time of day is "..minetest.env:get_timeofday())
|
||||||
|
if experimental.day then
|
||||||
|
minetest.log("forcing day->night")
|
||||||
|
experimental.day = false
|
||||||
|
minetest.env:set_timeofday(0.0)
|
||||||
|
else
|
||||||
|
minetest.log("forcing night->day")
|
||||||
|
experimental.day = true
|
||||||
|
minetest.env:set_timeofday(0.5)
|
||||||
|
end
|
||||||
|
minetest.log("time of day is "..minetest.env:get_timeofday())
|
||||||
|
end
|
||||||
|
--]]
|
||||||
end
|
end
|
||||||
minetest.register_globalstep(on_step)
|
minetest.register_globalstep(on_step)
|
||||||
|
|
||||||
|
@ -2913,6 +2913,38 @@ private:
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EnvRef:set_timeofday(val)
|
||||||
|
// val = 0...1
|
||||||
|
static int l_set_timeofday(lua_State *L)
|
||||||
|
{
|
||||||
|
EnvRef *o = checkobject(L, 1);
|
||||||
|
ServerEnvironment *env = o->m_env;
|
||||||
|
if(env == NULL) return 0;
|
||||||
|
// Do it
|
||||||
|
float timeofday_f = luaL_checknumber(L, 2);
|
||||||
|
assert(timeofday_f >= 0.0 && timeofday_f <= 1.0);
|
||||||
|
int timeofday_mh = (int)(timeofday_f * 24000.0);
|
||||||
|
// This should be set directly in the environment but currently
|
||||||
|
// such changes aren't immediately sent to the clients, so call
|
||||||
|
// the server instead.
|
||||||
|
//env->setTimeOfDay(timeofday_mh);
|
||||||
|
get_server(L)->setTimeOfDay(timeofday_mh);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// EnvRef:get_timeofday() -> 0...1
|
||||||
|
static int l_get_timeofday(lua_State *L)
|
||||||
|
{
|
||||||
|
EnvRef *o = checkobject(L, 1);
|
||||||
|
ServerEnvironment *env = o->m_env;
|
||||||
|
if(env == NULL) return 0;
|
||||||
|
// Do it
|
||||||
|
int timeofday_mh = env->getTimeOfDay();
|
||||||
|
float timeofday_f = (float)timeofday_mh / 24000.0;
|
||||||
|
lua_pushnumber(L, timeofday_f);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static int gc_object(lua_State *L) {
|
static int gc_object(lua_State *L) {
|
||||||
EnvRef *o = *(EnvRef **)(lua_touserdata(L, 1));
|
EnvRef *o = *(EnvRef **)(lua_touserdata(L, 1));
|
||||||
delete o;
|
delete o;
|
||||||
@ -2990,6 +3022,8 @@ const luaL_reg EnvRef::methods[] = {
|
|||||||
method(EnvRef, get_meta),
|
method(EnvRef, get_meta),
|
||||||
method(EnvRef, get_player_by_name),
|
method(EnvRef, get_player_by_name),
|
||||||
method(EnvRef, get_objects_inside_radius),
|
method(EnvRef, get_objects_inside_radius),
|
||||||
|
method(EnvRef, set_timeofday),
|
||||||
|
method(EnvRef, get_timeofday),
|
||||||
{0,0}
|
{0,0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user