diff options
Diffstat (limited to 'mesecons_delayer')
-rw-r--r-- | mesecons_delayer/init.lua | 207 |
1 files changed, 207 insertions, 0 deletions
diff --git a/mesecons_delayer/init.lua b/mesecons_delayer/init.lua new file mode 100644 index 0000000..ccf8ef2 --- /dev/null +++ b/mesecons_delayer/init.lua @@ -0,0 +1,207 @@ +minetest.register_node("mesecons_delayer:delayer_off_1", { + description = "Delayer", + drawtype = "raillike", + tile_images = {"mesecons_delayer_off_1.png"}, + inventory_image = "mesecons_delayer_off_1.png", + walkable = false, + selection_box = {type = "fixed",}, + groups = {bendy=2,snappy=1,dig_immediate=2}, + paramtype = "light", + drop = 'mesecons_delayer:delayer_off_1', +}) + +minetest.register_node("mesecons_delayer:delayer_off_2", { + description = "Delayer", + drawtype = "raillike", + tile_images = {"mesecons_delayer_off_2.png"}, + inventory_image = "mesecons_delayer_off_2.png", + walkable = false, + selection_box = {type = "fixed",}, + groups = {bendy=2,snappy=1,dig_immediate=2}, + paramtype = "light", + drop = 'mesecons_delayer:delayer_off_1', +}) + +minetest.register_node("mesecons_delayer:delayer_off_3", { + description = "Delayer", + drawtype = "raillike", + tile_images = {"mesecons_delayer_off_3.png"}, + inventory_image = "mesecons_delayer_off_3.png", + walkable = false, + selection_box = {type = "fixed",}, + groups = {bendy=2,snappy=1,dig_immediate=2}, + paramtype = "light", + drop = 'mesecons_delayer:delayer_off_1', +}) + +minetest.register_node("mesecons_delayer:delayer_off_4", { + description = "Delayer", + drawtype = "raillike", + tile_images = {"mesecons_delayer_off_4.png"}, + inventory_image = "mesecons_delayer_off_4.png", + walkable = false, + selection_box = {type = "fixed",}, + groups = {bendy=2,snappy=1,dig_immediate=2}, + paramtype = "light", + drop = 'mesecons_delayer:delayer_off_1', +}) + + + + + +minetest.register_node("mesecons_delayer:delayer_on_1", { + description = "Delayer", + drawtype = "raillike", + tile_images = {"mesecons_delayer_on_1.png"}, + inventory_image = "mesecons_delayer_on_1.png", + walkable = false, + selection_box = {type = "fixed",}, + groups = {bendy=2,snappy=1,dig_immediate=2}, + paramtype = "light", + drop = 'mesecons_delayer:delayer_off_1', +}) + +minetest.register_node("mesecons_delayer:delayer_on_2", { + description = "Delayer", + drawtype = "raillike", + tile_images = {"mesecons_delayer_on_2.png"}, + inventory_image = "mesecons_delayer_on_2.png", + walkable = false, + selection_box = {type = "fixed",}, + groups = {bendy=2,snappy=1,dig_immediate=2}, + paramtype = "light", + drop = 'mesecons_delayer:delayer_off_1', +}) + +minetest.register_node("mesecons_delayer:delayer_on_3", { + description = "Delayer", + drawtype = "raillike", + tile_images = {"mesecons_delayer_on_3.png"}, + inventory_image = "mesecons_delayer_on_3.png", + walkable = false, + selection_box = {type = "fixed",}, + groups = {bendy=2,snappy=1,dig_immediate=2}, + paramtype = "light", + drop = 'mesecons_delayer:delayer_off_1', +}) + +minetest.register_node("mesecons_delayer:delayer_on_4", { + description = "Delayer", + drawtype = "raillike", + tile_images = {"mesecons_delayer_on_4.png"}, + inventory_image = "mesecons_delayer_on_4.png", + walkable = false, + selection_box = {type = "fixed",}, + groups = {bendy=2,snappy=1,dig_immediate=2}, + paramtype = "light", + drop = 'mesecons_delayer:delayer_off_1', +}) + + + + +minetest.register_on_punchnode(function (pos, node) + if node.name=="mesecons_delayer:delayer_off_1" then + minetest.env:add_node(pos, {name="mesecons_delayer:delayer_off_2"}) + end + if node.name=="mesecons_delayer:delayer_off_2" then + minetest.env:add_node(pos, {name="mesecons_delayer:delayer_off_3"}) + end + if node.name=="mesecons_delayer:delayer_off_3" then + minetest.env:add_node(pos, {name="mesecons_delayer:delayer_off_4"}) + end + if node.name=="mesecons_delayer:delayer_off_4" then + minetest.env:add_node(pos, {name="mesecons_delayer:delayer_off_1"}) + end +end) + +minetest.register_on_punchnode(function (pos, node) + if node.name=="mesecons_delayer:delayer_on_1" then + minetest.env:add_node(pos, {name="mesecons_delayer:delayer_on_2"}) + end + if node.name=="mesecons_delayer:delayer_on_2" then + minetest.env:add_node(pos, {name="mesecons_delayer:delayer_on_3"}) + end + if node.name=="mesecons_delayer:delayer_on_3" then + minetest.env:add_node(pos, {name="mesecons_delayer:delayer_on_4"}) + end + if node.name=="mesecons_delayer:delayer_on_4" then + minetest.env:add_node(pos, {name="mesecons_delayer:delayer_on_1"}) + end +end) + +mesecon.delayer_signal_change = function(pos, node) + print "CHANGE" + if string.find(node.name, "mesecons_delayer:delayer_off")~=nil then + np={x=pos.x-1, y=pos.y, z=pos.z} + nn=minetest.env:get_node(np) + if nn.name=="mesecons:mesecon_on" or mesecon:is_receptor_node(nn.name, np, pos) then + local time + if node.name=="mesecons_delayer:delayer_off_1" then + minetest.env:add_node(pos, {name="mesecons_delayer:delayer_on_1"}) + time=0.5 + end + if node.name=="mesecons_delayer:delayer_off_2" then + minetest.env:add_node(pos, {name="mesecons_delayer:delayer_on_2"}) + time=1 + end + if node.name=="mesecons_delayer:delayer_off_3" then + minetest.env:add_node(pos, {name="mesecons_delayer:delayer_on_3"}) + time=1.5 + end + if node.name=="mesecons_delayer:delayer_off_4" then + minetest.env:add_node(pos, {name="mesecons_delayer:delayer_on_4"}) + time=2 + end + minetest.after(time, mesecon.delayer_turnon, {pos=pos}) + + end + end + if string.find(node.name, "mesecons_delayer:delayer_on")~=nil then + np={x=pos.x-1, y=pos.y, z=pos.z} + nn=minetest.env:get_node(np) + if nn.name=="mesecons:mesecon_off" or mesecon:is_receptor_node_off(nn.name, np, pos) or nn.name=="air" then + local time + if node.name=="mesecons_delayer:delayer_on_1" then + minetest.env:add_node(pos, {name="mesecons_delayer:delayer_off_1"}) + time=0.5 + end + if node.name=="mesecons_delayer:delayer_on_2" then + minetest.env:add_node(pos, {name="mesecons_delayer:delayer_off_2"}) + time=1 + end + if node.name=="mesecons_delayer:delayer_on_3" then + minetest.env:add_node(pos, {name="mesecons_delayer:delayer_off_3"}) + time=1.5 + end + if node.name=="mesecons_delayer:delayer_on_4" then + minetest.env:add_node(pos, {name="mesecons_delayer:delayer_off_4"}) + time=2 + end + minetest.after(time, mesecon.delayer_turnoff, {pos=pos}) + end + end +end + +mesecon:register_on_signal_change(mesecon.delayer_signal_change) + +mesecon.delayer_turnon=function(params) + mesecon:receptor_on(params.pos, mesecon:get_rules("delayer")) +end + +mesecon.delayer_turnoff=function(params) + mesecon:receptor_off(params.pos, mesecon:get_rules("delayer")) +end + +mesecon:add_rules("delayer", {{x=1, y=0, z=0}}) + +mesecon:add_receptor_node("mesecons_delayer:delayer_on_1", mesecon:get_rules("delayer")) +mesecon:add_receptor_node("mesecons_delayer:delayer_on_2", mesecon:get_rules("delayer")) +mesecon:add_receptor_node("mesecons_delayer:delayer_on_3", mesecon:get_rules("delayer")) +mesecon:add_receptor_node("mesecons_delayer:delayer_on_4", mesecon:get_rules("delayer")) + +mesecon:add_receptor_node_off("mesecons_delayer:delayer_off_1", mesecon:get_rules("delayer")) +mesecon:add_receptor_node_off("mesecons_delayer:delayer_off_2", mesecon:get_rules("delayer")) +mesecon:add_receptor_node_off("mesecons_delayer:delayer_off_3", mesecon:get_rules("delayer")) +mesecon:add_receptor_node_off("mesecons_delayer:delayer_off_4", mesecon:get_rules("delayer")) |