timehud 🔗
Minimal timer HUD API for Luanti.
Differences vs hud_timers:
- text-only timers (no background, no bar)
- configuration file
- label always renders as
Name: 0h, 0m, 0s
API:
timehud.add_timer(player_name, def)timehud.remove_timer(player_name, index)timehud.remove_timer_by_reference(player_name, timer)timehud.update_timers(player_name)timehud.trigger_event(player_name, event_name)
Example:
local timehud = rawget(_G, "timehud")
if type(timehud) ~= "table" then
return
end
minetest.register_chatcommand("timerdemo", {
description = "Start a 30s demo timer",
func = function(name)
local timer = timehud.add_timer(name, {
name = "Demo",
duration = 30,
color = "55ff55",
on_complete = function(player_name, _timer)
minetest.chat_send_player(player_name, "Demo timer finished.")
end,
on_event = {
boost_tick = function(player_name, t)
-- Example: subtract 1s when this event is triggered.
t.time_left = math.max(1, (tonumber(t.time_left) or 1) - 1)
end,
},
})
if not timer then
return false, "Could not create timer."
end
-- Optional immediate refresh.
timehud.update_timers(name)
return true, "Demo timer started."
end,
})
-- Somewhere else in your code:
-- timehud.trigger_event(player_name, "boost_tick")
-- timehud.remove_timer_by_reference(player_name, timer)
Legacy global aliases are also exported for compatibility:
add_timer(...)remove_timer(...)remove_timer_by_reference(...)update_timers(...)trigger_event(...)