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", use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or nil, walkable = true, selection_box = { type = "fixed", fixed = { -8/16, -8/16, -8/16, 8/16, -7/16, 8/16 }, }, node_box = { type = "fixed", fixed = { { -8/16, -8/16, -8/16, 8/16, -7/16, 8/16 }, { -6/16, -7/16, -6/16, 6/16, -6/16, 6/16 }, }, }, paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, is_ground_content = false, 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", wield_image = "jeija_gate_off.png^meseclock.png", tiles = { "jeija_microcontroller_bottom.png^meseclock_output_off.png^jeija_gate_off.png^meseclock.png", "jeija_microcontroller_bottom.png^meseclock_output_off.png", "jeija_gate_side.png^jeija_gate_side_output_off.png", "jeija_gate_side.png^jeija_gate_side_output_off.png", "jeija_gate_side.png^jeija_gate_side_output_off.png", "jeija_gate_side.png^jeija_gate_side_output_off.png", }, groups = { bendy = 2, snappy = 1, dig_immediate = 2 }, mesecons = { receptor = { state = mesecon.state.off }, }, } local on_state = { inventory_image = "jeija_gate_on.png^meseclock.png", wield_image = "jeija_gate_on.png^meseclock.png", tiles = { "jeija_microcontroller_bottom.png^meseclock_output_on.png^jeija_gate_on.png^meseclock.png", "jeija_microcontroller_bottom.png^meseclock_output_on.png", "jeija_gate_side.png^jeija_gate_side_output_on.png", "jeija_gate_side.png^jeija_gate_side_output_on.png", "jeija_gate_side.png^jeija_gate_side_output_on.png", "jeija_gate_side.png^jeija_gate_side_output_on.png", }, groups = { bendy = 2, snappy = 1, dig_immediate = 2, not_in_creative_inventory = 1 }, mesecons = { receptor = { state = mesecon.state.on }, }, } 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"}, }, })