From c3f6ea3052f08bdc0351874800023ced4d92e352 Mon Sep 17 00:00:00 2001 From: Gergely POLONKAI Date: Sun, 23 Nov 2025 19:39:56 +0100 Subject: [PATCH] Make the clock work Signed-off-by: Gergely POLONKAI --- init.lua | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ mod.conf | 2 +- 2 files changed, 63 insertions(+), 1 deletion(-) diff --git a/init.lua b/init.lua index 5351853..278f3bf 100644 --- a/init.lua +++ b/init.lua @@ -1,5 +1,41 @@ local S = minetest.get_translator(minetest.get_current_modname()) +local default_on_interval = minetest.settings:get("mesecons_clock.default_on_interval", 1) or 1 +local default_off_interval = minetest.settings:get("mesecons_clock.default_off_interval", 1) or 1 + +local meseclock_toggle_timer = function (pos) + local timer = minetest.get_node_timer(pos) + + if timer:is_started() then + timer:stop() + else + local node = minetest.get_node(pos) + local nodedef = minetest.registered_nodes[node.name] + + if (nodedef.__mesecon_state == "on") then + timer:start(default_on_interval) + else + timer:start(default_off_interval) + end + end +end + +local meseclock_on_timer = function (pos) + local node = minetest.get_node(pos) + + if (mesecon.flipstate(pos, node) == "on") then + mesecon.receptor_on(pos) + else + mesecon.receptor_off(pos) + end + + meseclock_toggle_timer(pos) +end + +local meseclock_on_construct = function (pos) + meseclock_toggle_timer(pos) +end + local node_defaults = { description = S("Mesecons Clock"), drawtype = "nodebox", @@ -23,6 +59,15 @@ local node_defaults = { sounds = mesecon.node_sound.stone, on_blast = mesecon.on_blastnode, drop = "mesecons_clock:clock_off", + on_construct = meseclock_on_construct, + on_punch = function (pos, _, clicker) + if minetest.is_protected(pos, clicker and clicker:get_player_name() or "") then + return + end + + meseclock_toggle_timer(pos) + end, + on_timer = meseclock_on_timer, } local off_state = { inventory_image = "jeija_gate_off.png^meseclock.png", @@ -58,3 +103,20 @@ local on_state = { } mesecon.register_node("mesecons_clock:clock", node_defaults, off_state, on_state) + +if (minetest.get_modpath("mesecons_blinkyplant")) then + minetest.register_craft({ + type = "shapeless", + output = "mesecons_clock:clock_off", + recipe = {"mesecons_blinkyplant:blinky_plant_off", "mesecons_delayer:delayer_off_1"}, + }) +end + +minetest.register_craft({ + type = "shaped", + output = "mesecons_clock:clock_off", + recipe = { + {"group:mesecon_conductor_craftable", "mesecons_delayer:delayer_off_1", "group:mesecon_conductor_craftable"}, + {"group:mesecon_conductor_craftable", "mesecons_delayer:delayer_off_1", "group:mesecon_conductor_craftable"}, + }, +}) diff --git a/mod.conf b/mod.conf index fec193e..af34370 100644 --- a/mod.conf +++ b/mod.conf @@ -3,4 +3,4 @@ title = Mesecons Clock description = Adds a configurable mesecons clock depends = mesecons, mesecons_delayer optional_depends = mesecons_blinkyplant -author = Gergely Polonkai \ No newline at end of file +author = Gergely Polonkai