From 3c8a97bc0bc8970d60013bf7e1c4c861a93b6513 Mon Sep 17 00:00:00 2001 From: HybridDog Date: Sat, 12 Dec 2015 17:51:56 +0100 Subject: [PATCH] disallow removing any node using the igniter --- moremesecons_igniter/init.lua | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/moremesecons_igniter/init.lua b/moremesecons_igniter/init.lua index 7df0a87..82cbbdf 100644 --- a/moremesecons_igniter/init.lua +++ b/moremesecons_igniter/init.lua @@ -1,12 +1,36 @@ +local function add_back_igniter(pos) + local name = minetest.get_node(pos).name + + if name == "moremesecons_igniter:igniter" then + -- this should not happen + minetest.log("error", "[moremesecons_igniter] igniter is already back") + return + end + + if name == "ignore" then + -- in case of unloaded chunk + minetest.get_voxel_manip():read_from_map(pos, pos) + name = minetest.get_node(pos).name + end + + if name == "air" + or name == "fire:basic_flame" then + minetest.set_node(pos, {name="moremesecons_igniter:igniter"}) + else + -- drop it as item if something took place there in the 0.8 seconds + pos.y = pos.y+1 + minetest.add_item(pos, "moremesecons_igniter:igniter") + pos.y = pos.y-1 + end +end + local function igniter_on(pos) - local fire_node = {name="fire:basic_flame"} - local igniter_node = {name="moremesecons_igniter:igniter"} - minetest.set_node(pos, fire_node) - minetest.after(0.8, minetest.set_node, pos, igniter_node) + minetest.set_node(pos, {name="fire:basic_flame"}) + minetest.after(0.8, add_back_igniter, pos) end minetest.register_node("moremesecons_igniter:igniter", { - description="Igniter", + description = "Igniter", paramtype = "light", tiles = {"moremesecons_igniter.png"}, groups = {cracky=3},