From f977ac821aa2f6c7053ec7f65d289c57de1e91a8 Mon Sep 17 00:00:00 2001 From: Jeija Date: Sat, 22 Nov 2014 22:09:26 +0100 Subject: Re-implement settings system: Settings can now be retrieved by mesecon.setting(, ) and can be modified without editing the source code by adding the setting to minetest.conf For instance, you can add mesecon.blinky_plant_interval = 0.5 to minetest.conf in order to increase the blinking speed. Rewrite the blinky plant with nodetimers. Fixes #161 --- mesecons_blinkyplant/init.lua | 115 +++++++++++++----------------------------- 1 file changed, 34 insertions(+), 81 deletions(-) (limited to 'mesecons_blinkyplant') diff --git a/mesecons_blinkyplant/init.lua b/mesecons_blinkyplant/init.lua index 5b3e471..c3bb3f7 100644 --- a/mesecons_blinkyplant/init.lua +++ b/mesecons_blinkyplant/init.lua @@ -1,98 +1,51 @@ -- The BLINKY_PLANT -minetest.register_node("mesecons_blinkyplant:blinky_plant", { - drawtype = "plantlike", - visual_scale = 1, - tiles = {"jeija_blinky_plant_off.png"}, - inventory_image = "jeija_blinky_plant_off.png", - walkable = false, - groups = {dig_immediate=3, not_in_creative_inventory=1}, - drop="mesecons_blinkyplant:blinky_plant_off 1", - description="Deactivated Blinky Plant", - sounds = default.node_sound_leaves_defaults(), - selection_box = { - type = "fixed", - fixed = {-0.3, -0.5, -0.3, 0.3, -0.5+0.7, 0.3}, - }, - mesecons = {receptor = { - state = mesecon.state.off - }}, - on_rightclick = function(pos, node, clicker) - minetest.set_node(pos, {name="mesecons_blinkyplant:blinky_plant_off"}) - end -}) -minetest.register_node("mesecons_blinkyplant:blinky_plant_off", { - drawtype = "plantlike", - visual_scale = 1, - tiles = {"jeija_blinky_plant_off.png"}, - inventory_image = "jeija_blinky_plant_off.png", - paramtype = "light", - walkable = false, - groups = {dig_immediate=3, mesecon=2}, - description="Blinky Plant", - sounds = default.node_sound_leaves_defaults(), - selection_box = { - type = "fixed", - fixed = {-0.3, -0.5, -0.3, 0.3, -0.5+0.7, 0.3}, - }, - mesecons = {receptor = { - state = mesecon.state.off - }}, - on_rightclick = function(pos, node, clicker) - minetest.set_node(pos, {name="mesecons_blinkyplant:blinky_plant"}) - end -}) +local toggle_timer = function (pos) + local timer = minetest.get_node_timer(pos) + if timer:is_started() then + timer:stop() + else + timer:start(mesecon.setting("blinky_plant_interval", 3)) + end +end -minetest.register_node("mesecons_blinkyplant:blinky_plant_on", { +local 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 + toggle_timer(pos) +end + +mesecon.register_node("mesecons_blinkyplant:blinky_plant", { + description="Blinky Plant", drawtype = "plantlike", - visual_scale = 1, - tiles = {"jeija_blinky_plant_on.png"}, inventory_image = "jeija_blinky_plant_off.png", paramtype = "light", walkable = false, - groups = {dig_immediate=3, not_in_creative_inventory=1, mesecon=2}, - drop="mesecons_blinkyplant:blinky_plant_off 1", - light_source = LIGHT_MAX-7, - description = "Blinky Plant", sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-0.3, -0.5, -0.3, 0.3, -0.5+0.7, 0.3}, }, - mesecons = {receptor = { - state = mesecon.state.on - }}, - on_rightclick = function(pos, node, clicker) - minetest.set_node(pos, {name = "mesecons_blinkyplant:blinky_plant"}) - mesecon.receptor_off(pos) - end + on_timer = on_timer, + on_rightclick = toggle_timer, + on_construct = toggle_timer +},{ + tiles = {"jeija_blinky_plant_off.png"}, + groups = {dig_immediate=3}, + mesecons = {receptor = { state = mesecon.state.off }} +},{ + tiles = {"jeija_blinky_plant_on.png"}, + groups = {dig_immediate=3, not_in_creative_inventory=1}, + mesecons = {receptor = { state = mesecon.state.on }} }) minetest.register_craft({ output = "mesecons_blinkyplant:blinky_plant_off 1", - recipe = { - {"","group:mesecon_conductor_craftable",""}, - {"","group:mesecon_conductor_craftable",""}, - {"default:sapling","default:sapling","default:sapling"}, - } + recipe = { {"","group:mesecon_conductor_craftable",""}, + {"","group:mesecon_conductor_craftable",""}, + {"default:sapling","default:sapling","default:sapling"}} }) - -minetest.register_abm({ - nodenames = { - "mesecons_blinkyplant:blinky_plant_off", - "mesecons_blinkyplant:blinky_plant_on" - }, - interval = BLINKY_PLANT_INTERVAL, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - if node.name == "mesecons_blinkyplant:blinky_plant_off" then - minetest.add_node(pos, {name="mesecons_blinkyplant:blinky_plant_on"}) - mesecon.receptor_on(pos) - else - minetest.add_node(pos, {name="mesecons_blinkyplant:blinky_plant_off"}) - mesecon.receptor_off(pos) - end - nodeupdate(pos) - end, -}) - -- cgit v1.2.3