Make the clock work

Signed-off-by: Gergely POLONKAI <gergely@polonkai.eu>
This commit is contained in:
2025-11-23 19:39:56 +01:00
parent 3bc33616a2
commit c3f6ea3052
2 changed files with 63 additions and 1 deletions

View File

@@ -1,5 +1,41 @@
local S = minetest.get_translator(minetest.get_current_modname()) 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 = { local node_defaults = {
description = S("Mesecons Clock"), description = S("Mesecons Clock"),
drawtype = "nodebox", drawtype = "nodebox",
@@ -23,6 +59,15 @@ local node_defaults = {
sounds = mesecon.node_sound.stone, sounds = mesecon.node_sound.stone,
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_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 = { local off_state = {
inventory_image = "jeija_gate_off.png^meseclock.png", 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) 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"},
},
})

View File

@@ -3,4 +3,4 @@ title = Mesecons Clock
description = Adds a configurable mesecons clock description = Adds a configurable mesecons clock
depends = mesecons, mesecons_delayer depends = mesecons, mesecons_delayer
optional_depends = mesecons_blinkyplant optional_depends = mesecons_blinkyplant
author = Gergely Polonkai author = Gergely Polonkai