diff --git a/jeija/temperest.lua b/jeija/temperest.lua index e8fb84d..8bd9507 100644 --- a/jeija/temperest.lua +++ b/jeija/temperest.lua @@ -1,182 +1,209 @@ --TEMPEREST-PLUG minetest.register_node("jeija:mesecon_plug", { - drawtype = "raillike", - paramtype = "light", - is_ground_content = true, - tile_images = {"jeija_mesecon_plug.png"}, - inventory_image = "jeija_mesecon_plug.png", - material = minetest.digprop_constanttime(0.1), - walkable = false, - selection_box = { - type = "fixed", - }, + drawtype = "raillike", + paramtype = "light", + is_ground_content = true, + tile_images = {"jeija_mesecon_plug.png"}, + inventory_image = "jeija_mesecon_plug.png", + material = minetest.digprop_constanttime(0.1), + walkable = false, + selection_box = { + type = "fixed", + }, }) mesecon:register_on_signal_on(function(pos, node) - if node.name=="jeija:mesecon_plug" then - for x = -2,2,2 do - for z = -2,2,2 do - lpos = {x=pos.x+x, y=pos.y, z=pos.z+z} - lnode = minetest.env:get_node(lpos) - if lnode.name=="jeija:mesecon_socket_off" then - minetest.env:add_node(lpos, {name="jeija:mesecon_socket_on"}) - nodeupdate(lpos) - mesecon:receptor_on(lpos) - elseif lnode.name=="jeija:mesecon_inverter_on" then - minetest.env:add_node(lpos, {name="jeija:mesecon_inverter_off"}) - nodeupdate(lpos) - mesecon:receptor_off(lpos) - end - end - end - end + if node.name=="jeija:mesecon_plug" then + local set_node_on = function(pos) + node = minetest.env:get_node(pos) + if node.name=="jeija:mesecon_socket_off" then + minetest.env:add_node(pos, {name="jeija:mesecon_socket_on"}) + nodeupdate(pos) + mesecon:receptor_on(pos) + elseif node.name=="jeija:mesecon_inverter_on" then + minetest.env:add_node(pos, {name="jeija:mesecon_inverter_off"}) + nodeupdate(pos) + mesecon:receptor_off(pos) + end + end + + lnode = minetest.env:get_node({x=pos.x-1, y=pos.y, z=pos.z}) --a node between this node and the one two nodes away + if lnode.name=="air" then set_node_on({x=pos.x-2, y=pos.y, z=pos.z}) end + + lnode = minetest.env:get_node({x=pos.x+1, y=pos.y, z=pos.z}) --a node between this node and the one two nodes away + if lnode.name=="air" then set_node_on({x=pos.x+2, y=pos.y, z=pos.z}) end + + lnode = minetest.env:get_node({x=pos.x, y=pos.y, z=pos.z-1}) --a node between this node and the one two nodes away + if lnode.name=="air" then set_node_on({x=pos.x, y=pos.y, z=pos.z-2}) end + + lnode = minetest.env:get_node({x=pos.x, y=pos.y, z=pos.z+1}) --a node between this node and the one two nodes away + if lnode.name=="air" then set_node_on({x=pos.x-2, y=pos.y, z=pos.z+2}) end + end end) mesecon:register_on_signal_off(function(pos, node) - if node.name=="jeija:mesecon_plug" then - for x = -2,2,2 do - for z = -2,2,2 do - lpos = {x=pos.x+x, y=pos.y, z=pos.z+z} - lnode = minetest.env:get_node(lpos) - if lnode.name=="jeija:mesecon_socket_on" then - minetest.env:add_node(lpos, {name="jeija:mesecon_socket_off"}) - nodeupdate(lpos) - mesecon:receptor_off(lpos) - elseif lnode.name=="jeija:mesecon_inverter_off" then - minetest.env:add_node(lpos, {name="jeija:mesecon_inverter_on"}) - nodeupdate(lpos) - mesecon:receptor_on(lpos) - end - end - end - end + if node.name=="jeija:mesecon_plug" then + local set_node_off = function(pos) + node = minetest.env:get_node(pos) + if node.name=="jeija:mesecon_socket_on" then + minetest.env:add_node(pos, {name="jeija:mesecon_socket_off"}) + nodeupdate(pos) + mesecon:receptor_off(pos) + elseif node.name=="jeija:mesecon_inverter_off" then + minetest.env:add_node(pos, {name="jeija:mesecon_inverter_on"}) + nodeupdate(pos) + mesecon:receptor_on(pos) + end + end + + lnode = minetest.env:get_node({x=pos.x-1, y=pos.y, z=pos.z}) --a node between this node and the one two nodes away + if lnode.name=="air" then set_node_off({x=pos.x-2, y=pos.y, z=pos.z}) end + + lnode = minetest.env:get_node({x=pos.x+1, y=pos.y, z=pos.z}) --a node between this node and the one two nodes away + if lnode.name=="air" then set_node_off({x=pos.x+2, y=pos.y, z=pos.z}) end + + lnode = minetest.env:get_node({x=pos.x, y=pos.y, z=pos.z-1}) --a node between this node and the one two nodes away + if lnode.name=="air" then set_node_off({x=pos.x, y=pos.y, z=pos.z-2}) end + + lnode = minetest.env:get_node({x=pos.x, y=pos.y, z=pos.z+1}) --a node between this node and the one two nodes away + if lnode.name=="air" then set_node_off({x=pos.x-2, y=pos.y, z=pos.z+2}) end + end end) minetest.register_on_dignode(function(pos, oldnode, digger) - if oldnode.name == "jeija:mesecon_plug" then - for x = -2,2,2 do - for z = -2,2,2 do - lpos = {x=pos.x+x, y=pos.y, z=pos.z+z} - lnode = minetest.env:get_node(lpos) - if lnode.name=="jeija:mesecon_socket_on" then - minetest.env:add_node(lpos, {name="jeija:mesecon_socket_off"}) - nodeupdate(lpos) - mesecon:receptor_off(lpos) - elseif lnode.name=="jeija:mesecon_inverter_on" then - minetest.env:add_node(lpos, {name="jeija:mesecon_inverter_off"}) - nodeupdate(lpos) - mesecon:receptor_off(lpos) - end - end - end - end + if oldnode.name == "jeija:mesecon_plug" then + local set_node_deactivated = function(pos) + node = minetest.env:get_node(pos) + if node.name=="jeija:mesecon_socket_on" then + minetest.env:add_node(pos, {name="jeija:mesecon_socket_off"}) + nodeupdate(pos) + mesecon:receptor_off(pos) + elseif node.name=="jeija:mesecon_inverter_on" then + minetest.env:add_node(pos, {name="jeija:mesecon_inverter_off"}) + nodeupdate(pos) + mesecon:receptor_off(pos) + end + end + + lnode = minetest.env:get_node({x=pos.x-1, y=pos.y, z=pos.z}) --a node between this node and the one two nodes away + if lnode.name=="air" then set_node_deactivated({x=pos.x-2, y=pos.y, z=pos.z}) end + + lnode = minetest.env:get_node({x=pos.x+1, y=pos.y, z=pos.z}) --a node between this node and the one two nodes away + if lnode.name=="air" then set_node_deactivated({x=pos.x+2, y=pos.y, z=pos.z}) end + + lnode = minetest.env:get_node({x=pos.x, y=pos.y, z=pos.z-1}) --a node between this node and the one two nodes away + if lnode.name=="air" then set_node_deactivated({x=pos.x, y=pos.y, z=pos.z-2}) end + + lnode = minetest.env:get_node({x=pos.x, y=pos.y, z=pos.z+1}) --a node between this node and the one two nodes away + if lnode.name=="air" then set_node_deactivated({x=pos.x-2, y=pos.y, z=pos.z+2}) end + end end) minetest.register_craft({ - output = 'node "jeija:mesecon_plug" 2', - recipe = { - {'', 'node "jeija:mesecon_off"', ''}, - {'node "jeija:mesecon_off"', 'craft "default:steel_ingot"', 'node "jeija:mesecon_off"'}, - {'', 'node "jeija:mesecon_off"', ''}, - } + output = 'node "jeija:mesecon_plug" 2', + recipe = { + {'', 'node "jeija:mesecon_off"', ''}, + {'node "jeija:mesecon_off"', 'craft "default:steel_ingot"', 'node "jeija:mesecon_off"'}, + {'', 'node "jeija:mesecon_off"', ''}, + } }) --TEMPEREST-SOCKET minetest.register_node("jeija:mesecon_socket_off", { - drawtype = "raillike", - paramtype = "light", - is_ground_content = true, - tile_images = {"jeija_mesecon_socket_off.png"}, - inventory_image = "jeija_mesecon_socket_off.png", - material = minetest.digprop_constanttime(0.1), - walkable = false, - selection_box = { - type = "fixed", - }, + drawtype = "raillike", + paramtype = "light", + is_ground_content = true, + tile_images = {"jeija_mesecon_socket_off.png"}, + inventory_image = "jeija_mesecon_socket_off.png", + material = minetest.digprop_constanttime(0.1), + walkable = false, + selection_box = { + type = "fixed", + }, }) minetest.register_node("jeija:mesecon_socket_on", { - drawtype = "raillike", - paramtype = "light", - is_ground_content = true, - tile_images = {"jeija_mesecon_socket_on.png"}, - inventory_image = "jeija_mesecon_socket_on.png", - material = minetest.digprop_constanttime(0.1), - walkable = false, - selection_box = { - type = "fixed", - }, - dug_item='node "jeija:mesecon_socket_off" 1', + drawtype = "raillike", + paramtype = "light", + is_ground_content = true, + tile_images = {"jeija_mesecon_socket_on.png"}, + inventory_image = "jeija_mesecon_socket_on.png", + material = minetest.digprop_constanttime(0.1), + walkable = false, + selection_box = { + type = "fixed", + }, + dug_item='node "jeija:mesecon_socket_off" 1', }) minetest.register_on_dignode( - function(pos, oldnode, digger) - if oldnode.name == "jeija:mesecon_socket_on" then - mesecon:receptor_off(pos) - end - end + function(pos, oldnode, digger) + if oldnode.name == "jeija:mesecon_socket_on" then + mesecon:receptor_off(pos) + end + end ) mesecon:add_receptor_node("jeija:mesecon_socket_on") mesecon:add_receptor_node_off("jeija:mesecon_socket_off") minetest.register_craft({ - output = 'node "jeija:mesecon_socket_off" 2', - recipe = { - {'', 'craft "default:steel_ingot"', ''}, - {'craft "default:steel_ingot"', 'node "jeija:mesecon_off"', 'craft "default:steel_ingot"'}, - {'', 'craft "default:steel_ingot"', ''}, - } + output = 'node "jeija:mesecon_socket_off" 2', + recipe = { + {'', 'craft "default:steel_ingot"', ''}, + {'craft "default:steel_ingot"', 'node "jeija:mesecon_off"', 'craft "default:steel_ingot"'}, + {'', 'craft "default:steel_ingot"', ''}, + } }) --TEMPEREST-INVERTER minetest.register_node("jeija:mesecon_inverter_off", { - drawtype = "raillike", - paramtype = "light", - is_ground_content = true, - tile_images = {"jeija_mesecon_inverter_off.png"}, - inventory_image = "jeija_mesecon_inverter_off.png", - material = minetest.digprop_constanttime(0.1), - walkable = false, - selection_box = { - type = "fixed", - }, + drawtype = "raillike", + paramtype = "light", + is_ground_content = true, + tile_images = {"jeija_mesecon_inverter_off.png"}, + inventory_image = "jeija_mesecon_inverter_off.png", + material = minetest.digprop_constanttime(0.1), + walkable = false, + selection_box = { + type = "fixed", + }, }) minetest.register_node("jeija:mesecon_inverter_on", { - drawtype = "raillike", - paramtype = "light", - is_ground_content = true, - tile_images = {"jeija_mesecon_inverter_on.png"}, - inventory_image = "jeija_mesecon_inverter_on.png", - material = minetest.digprop_constanttime(0.1), - walkable = false, - selection_box = { - type = "fixed", - }, - dug_item='node "jeija:mesecon_inverter_off" 1', + drawtype = "raillike", + paramtype = "light", + is_ground_content = true, + tile_images = {"jeija_mesecon_inverter_on.png"}, + inventory_image = "jeija_mesecon_inverter_on.png", + material = minetest.digprop_constanttime(0.1), + walkable = false, + selection_box = { + type = "fixed", + }, + dug_item='node "jeija:mesecon_inverter_off" 1', }) minetest.register_on_dignode( - function(pos, oldnode, digger) - if oldnode.name == "jeija:mesecon_inverter_on" then - mesecon:receptor_off(pos) - end - end + function(pos, oldnode, digger) + if oldnode.name == "jeija:mesecon_inverter_on" then + mesecon:receptor_off(pos) + end + end ) mesecon:add_receptor_node("jeija:mesecon_inverter_on") mesecon:add_receptor_node_off("jeija:mesecon_inverter_off") minetest.register_craft({ - output = 'node "jeija:mesecon_inverter_off" 2', - recipe = { - {'node "jeija:mesecon_off"', 'craft "default:steel_ingot"', 'node "jeija:mesecon_off"'}, - {'craft "default:steel_ingot"', '', 'craft "default:steel_ingot"'}, - {'node "jeija:mesecon_off"', 'craft "default:steel_ingot"', 'node "jeija:mesecon_off"'}, - } -}) + output = 'node "jeija:mesecon_inverter_off" 2', + recipe = { + {'node "jeija:mesecon_off"', 'craft "default:steel_ingot"', 'node "jeija:mesecon_off"'}, + {'craft "default:steel_ingot"', '', 'craft "default:steel_ingot"'}, + {'node "jeija:mesecon_off"', 'craft "default:steel_ingot"', 'node "jeija:mesecon_off"'}, + } +}) \ No newline at end of file