From c53ac5b660241c2f4167e7e7836497f1fa010083 Mon Sep 17 00:00:00 2001 From: upsilon Date: Sun, 21 May 2017 19:11:12 +0200 Subject: [PATCH] Adjustable Blinky Plant: fix very fast blinking before having set an interval + add a minimum interval setting --- moremesecons_adjustable_blinkyplant/depends.txt | 1 + moremesecons_adjustable_blinkyplant/init.lua | 10 ++++++++-- moremesecons_utils/init.lua | 5 ++++- settingtypes.txt | 5 +++++ 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/moremesecons_adjustable_blinkyplant/depends.txt b/moremesecons_adjustable_blinkyplant/depends.txt index 0ddb4fb..5a7e5e6 100644 --- a/moremesecons_adjustable_blinkyplant/depends.txt +++ b/moremesecons_adjustable_blinkyplant/depends.txt @@ -1,2 +1,3 @@ mesecons +moremesecons_utils craft_guide? diff --git a/moremesecons_adjustable_blinkyplant/init.lua b/moremesecons_adjustable_blinkyplant/init.lua index 0afaaf1..66c5e9d 100644 --- a/moremesecons_adjustable_blinkyplant/init.lua +++ b/moremesecons_adjustable_blinkyplant/init.lua @@ -4,7 +4,11 @@ local toggle_timer = function (pos, restart) and not restart then timer:stop() else - timer:start(tonumber(minetest.get_meta(pos):get_string("interval")) or 0) + local interval = tonumber(minetest.get_meta(pos):get_string("interval")) or 1 + if interval < moremesecons.setting("adjustable_blinky_plant", "min_interval", 0.5) then + interval = moremesecons.setting("adjustable_blinky_plant", "min_interval", 0.5) + end + timer:start(interval) end end @@ -30,7 +34,9 @@ mesecon.register_node("moremesecons_adjustable_blinkyplant:adjustable_blinky_pla }, on_timer = on_timer, on_construct = function(pos) - minetest.get_meta(pos):set_string("formspec", "field[interval;interval;${interval}]") + local meta = minetest.get_meta(pos) + meta:set_string("interval", "1") + meta:set_string("formspec", "field[interval;interval;${interval}]") toggle_timer(pos, true) end, on_receive_fields = function(pos, _, fields, player) diff --git a/moremesecons_utils/init.lua b/moremesecons_utils/init.lua index 0f83dab..2f6545b 100644 --- a/moremesecons_utils/init.lua +++ b/moremesecons_utils/init.lua @@ -13,7 +13,10 @@ function moremesecons.setting(modname, settingname, default, min) return minetest.setting_get(setting) or default elseif type(default) == "number" then local ret = tonumber(minetest.setting_get(setting)) or default - if ret ~= ret then -- NaN + if not ret then + minetest.log("warning", "[moremesecons_"..modname.."]: setting '"..setting.."' must be a number. Set to default value ("..tostring(default)..").") + ret = default + elseif ret ~= ret then -- NaN minetest.log("warning", "[moremesecons_"..modname.."]: setting '"..setting.."' is NaN. Set to default value ("..tostring(default)..").") ret = default end diff --git a/settingtypes.txt b/settingtypes.txt index 621f29b..7103b34 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -1,3 +1,8 @@ +[Adjustable Blinky Plant] + +# Minimal interval authorized. Any lower will be set to it. +moremesecons_adjustable_blinky_plant.min_interval (Minimum Interval) float 0.5 + [Craftable Commandblock] # Space-separated list of authorized commands