realtime-cd2025/init.lua
2024-03-14 13:48:37 +08:00

37 lines
865 B
Lua

local function truncate(num)
return math.floor(num * 10000) / 10000
end
local function get_time()
local now = os.date("*t")
local time = now.hour * 3600 + now.min * 60 + now.sec
return time / (24 * 3600)
end
local function sync_time()
minetest.set_timeofday(get_time())
end
local function sync_time_loop()
local game_time = truncate(minetest.get_timeofday())
local world_time = truncate(get_time())
if game_time ~= world_time then
sync_time()
end
minetest.after(60, sync_time_loop)
end
minetest.after(0, function()
minetest.settings:set("time_speed", 1)
sync_time()
sync_time_loop()
end)
minetest.register_chatcommand("sync_time", {
privs = { server = true },
func = function(name, _)
sync_time()
minetest.chat_send_player(name, "Time synced with real-world time")
end
})