summaryrefslogtreecommitdiff
path: root/mesecons_blinkyplant
diff options
context:
space:
mode:
authorJeija <jeija@mesecons.net>2014-11-22 22:09:26 +0100
committerJeija <jeija@mesecons.net>2014-11-22 22:09:26 +0100
commitf977ac821aa2f6c7053ec7f65d289c57de1e91a8 (patch)
tree2d025fd6483e1ac3e4c409a356d2015aada00778 /mesecons_blinkyplant
parent80d136125ef8f17af85d0045800d5e761ace3229 (diff)
downloadmesecons-f977ac821aa2f6c7053ec7f65d289c57de1e91a8.tar
mesecons-f977ac821aa2f6c7053ec7f65d289c57de1e91a8.tar.gz
mesecons-f977ac821aa2f6c7053ec7f65d289c57de1e91a8.tar.bz2
mesecons-f977ac821aa2f6c7053ec7f65d289c57de1e91a8.tar.xz
mesecons-f977ac821aa2f6c7053ec7f65d289c57de1e91a8.zip
Re-implement settings system:
Settings can now be retrieved by mesecon.setting(<name>, <default>) 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
Diffstat (limited to 'mesecons_blinkyplant')
-rw-r--r--mesecons_blinkyplant/init.lua115
1 files changed, 34 insertions, 81 deletions
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,
-})
-