Make on and off times configurable

Signed-off-by: Gergely POLONKAI <gergely@polonkai.eu>
This commit is contained in:
2025-11-23 21:23:00 +01:00
parent c3f6ea3052
commit 9e37caf1be
2 changed files with 34 additions and 2 deletions

View File

@@ -11,11 +11,14 @@ local meseclock_toggle_timer = function (pos)
else else
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
local nodedef = minetest.registered_nodes[node.name] local nodedef = minetest.registered_nodes[node.name]
local meta = minetest.get_meta(pos)
local meta_on_interval = meta:get_int("on_time") or default_on_interval
local meta_off_interval = meta:get_int("off_time") or default_off_interval
if (nodedef.__mesecon_state == "on") then if (nodedef.__mesecon_state == "on") then
timer:start(default_on_interval) timer:start(meta_on_interval)
else else
timer:start(default_off_interval) timer:start(meta_off_interval)
end end
end end
end end
@@ -32,10 +35,35 @@ local meseclock_on_timer = function (pos)
meseclock_toggle_timer(pos) meseclock_toggle_timer(pos)
end end
local meseclock_make_formspec = function (pos)
local meta = minetest.get_meta(pos)
if meta:get_string("on_time") == "" then meta:set_string("on_time", "1") end
if meta:get_string("off_time") == "" then meta:set_string("off_time", "1") end
meta:set_string(
"formspec", "size[6,2.5]" ..
"field[0.3, 0;3,2;on_time;" .. S("On time (seconds)") .. ":;${on_time}]" ..
"field[3.3, 0;3,2;off_time;" .. S("Off time (seconds)") .. ":;${off_time}]" ..
"button_exit[0.3,0.5;2,3;;" .. S("Save") .. "]"
)
end
local meseclock_on_construct = function (pos) local meseclock_on_construct = function (pos)
meseclock_make_formspec(pos)
meseclock_toggle_timer(pos) meseclock_toggle_timer(pos)
end end
local meseclock_on_receive_fields = function (pos, _, fields, sender)
if not fields.on_time then return end
if minetest.is_protected(pos, sender:get_player_name()) then return end
local meta = minetest.get_meta(pos)
meta:set_string("on_time", fields.on_time or to_string(default_on_time))
meta:set_string("off_time", fields.off_time or to_string(default_off_time))
meseclock_make_formspec(pos)
end
local node_defaults = { local node_defaults = {
description = S("Mesecons Clock"), description = S("Mesecons Clock"),
drawtype = "nodebox", drawtype = "nodebox",
@@ -60,6 +88,7 @@ local node_defaults = {
on_blast = mesecon.on_blastnode, on_blast = mesecon.on_blastnode,
drop = "mesecons_clock:clock_off", drop = "mesecons_clock:clock_off",
on_construct = meseclock_on_construct, on_construct = meseclock_on_construct,
on_receive_fields = meseclock_on_receive_fields,
on_punch = function (pos, _, clicker) on_punch = function (pos, _, clicker)
if minetest.is_protected(pos, clicker and clicker:get_player_name() or "") then if minetest.is_protected(pos, clicker and clicker:get_player_name() or "") then
return return

View File

@@ -1,2 +1,5 @@
# textdomain: mesecons_clock # textdomain: mesecons_clock
On time (seconds)=
Off time (seconds)=
Save=
Mesecons Clock= Mesecons Clock=