forked from minetest-mods/mesecons
e12b297987
fixed deprecated/invalid recipes in lightstones. fixed copy&paste error in one of the delayer textures fixed recipe for player detector to rely on microcontroller instead of old IC
245 lines
8.3 KiB
Lua
245 lines
8.3 KiB
Lua
--TEMPEREST-PLUG
|
|
|
|
local set_node_on
|
|
local set_node_off
|
|
|
|
if ENABLE_TEMPEREST then
|
|
set_node_on = function(pos)
|
|
local node = minetest.env:get_node(pos)
|
|
if node.name=="mesecons_temperest:mesecon_socket_off" then
|
|
minetest.env:add_node(pos, {name="mesecons_temperest:mesecon_socket_on"})
|
|
nodeupdate(pos)
|
|
mesecon:receptor_on(pos)
|
|
elseif node.name=="mesecons_temperest:mesecon_inverter_on" then
|
|
minetest.env:add_node(pos, {name="mesecons_temperest:mesecon_inverter_off"})
|
|
nodeupdate(pos)
|
|
mesecon:receptor_off(pos)
|
|
end
|
|
end
|
|
|
|
set_node_off = function(pos)
|
|
node = minetest.env:get_node(pos)
|
|
if node.name=="mesecons_temperest:mesecon_socket_on" then
|
|
minetest.env:add_node(pos, {name="mesecons_temperest:mesecon_socket_off"})
|
|
nodeupdate(pos)
|
|
mesecon:receptor_off(pos)
|
|
elseif node.name=="mesecons_temperest:mesecon_inverter_off" then
|
|
minetest.env:add_node(pos, {name="mesecons_temperest:mesecon_inverter_on"})
|
|
nodeupdate(pos)
|
|
mesecon:receptor_on(pos)
|
|
end
|
|
end
|
|
else
|
|
set_node_on = function(pos)
|
|
local node = minetest.env:get_node(pos)
|
|
if node.name=="mesecons_temperest:mesecon_socket_off" then
|
|
minetest.env:add_node(pos, {name="mesecons_temperest:mesecon_socket_on"})
|
|
nodeupdate(pos)
|
|
mesecon:receptor_on(pos)
|
|
end
|
|
end
|
|
|
|
set_node_off = function(pos)
|
|
node = minetest.env:get_node(pos)
|
|
if node.name=="mesecons_temperest:mesecon_socket_on" then
|
|
minetest.env:add_node(pos, {name="mesecons_temperest:mesecon_socket_off"})
|
|
nodeupdate(pos)
|
|
mesecon:receptor_off(pos)
|
|
end
|
|
end
|
|
end
|
|
|
|
local plug_on = function(pos)
|
|
local node = minetest.env:get_node(pos)
|
|
if node.name=="mesecons_temperest:mesecon_plug" then
|
|
local 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
|
|
|
|
local 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-1, 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, y=pos.y-2, z=pos.z}) end
|
|
|
|
lnode = minetest.env:get_node({x=pos.x, y=pos.y+1, 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, y=pos.y+2, z=pos.z}) end
|
|
|
|
local 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
|
|
|
|
local 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
|
|
end
|
|
end
|
|
|
|
local plug_off = function(pos)
|
|
local node = minetest.env:get_node(pos)
|
|
if node.name=="mesecons_temperest:mesecon_plug" then
|
|
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-1, 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, y=pos.y-2, z=pos.z}) end
|
|
|
|
lnode = minetest.env:get_node({x=pos.x, y=pos.y+1, 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, y=pos.y+2, 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, y=pos.y, z=pos.z+2}) end
|
|
end
|
|
end
|
|
|
|
mesecon:register_on_signal_on(plug_on)
|
|
mesecon:register_on_signal_off(plug_off)
|
|
|
|
minetest.register_node("mesecons_temperest:mesecon_plug", {
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
is_ground_content = true,
|
|
tile_images = {"jeija_mesecon_plug.png"},
|
|
inventory_image = "jeija_mesecon_plug.png",
|
|
wield_image = "jeija_mesecon_plug.png",
|
|
groups = {dig_immediate=2, mesecon = 2},
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = { -8/16, -8/16, -8/16, 8/16, -7/16, 8/16 },
|
|
},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = { -8/16, -8/16, -8/16, 8/16, -7/16, 8/16 },
|
|
},
|
|
description = "Plug",
|
|
after_place_node = plug_off,
|
|
after_dig_node = plug_off
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = '"mesecons_temperest:mesecon_plug" 2',
|
|
recipe = {
|
|
{'', '"group:mesecon_conductor_craftable"', ''},
|
|
{'"group:mesecon_conductor_craftable"', '"default:steel_ingot"', '"group:mesecon_conductor_craftable"'},
|
|
{'', '"group:mesecon_conductor_craftable"', ''},
|
|
}
|
|
})
|
|
|
|
--TEMPEREST-SOCKET
|
|
|
|
minetest.register_node("mesecons_temperest:mesecon_socket_off", {
|
|
description = "Socket",
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
is_ground_content = true,
|
|
tile_images = {"jeija_mesecon_socket_off.png"},
|
|
inventory_image = "jeija_mesecon_socket_off.png",
|
|
wield_image = "jeija_mesecon_socket_off.png",
|
|
groups = {dig_immediate=2, mesecon = 2},
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = { -8/16, -8/16, -8/16, 8/16, -7/16, 8/16 },
|
|
},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = { -8/16, -8/16, -8/16, 8/16, -7/16, 8/16 },
|
|
},
|
|
})
|
|
|
|
minetest.register_node("mesecons_temperest:mesecon_socket_on", {
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
is_ground_content = true,
|
|
tile_images = {"jeija_mesecon_socket_on.png"},
|
|
groups = {dig_immediate=2,not_in_creative_inventory=1, mesecon = 2},
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = { -8/16, -8/16, -8/16, 8/16, -7/16, 8/16 },
|
|
},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = { -8/16, -8/16, -8/16, 8/16, -7/16, 8/16 },
|
|
},
|
|
drop='"mesecons_temperest:mesecon_socket_off" 1',
|
|
after_dig_node = function(pos)
|
|
mesecon:receptor_off(pos)
|
|
end
|
|
})
|
|
|
|
mesecon:add_receptor_node("mesecons_temperest:mesecon_socket_on")
|
|
mesecon:add_receptor_node_off("mesecons_temperest:mesecon_socket_off")
|
|
|
|
minetest.register_craft({
|
|
output = '"mesecons_temperest:mesecon_socket_off" 2',
|
|
recipe = {
|
|
{'', '"default:steel_ingot"', ''},
|
|
{'"default:steel_ingot"', '"mesecons_temperest:mesecon_off"', '"default:steel_ingot"'},
|
|
{'', '"default:steel_ingot"', ''},
|
|
}
|
|
})
|
|
|
|
--TEMPEREST-INVERTER
|
|
if ENABLE_TEMPEREST then
|
|
minetest.register_node("mesecons_temperest:mesecon_inverter_off", {
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
is_ground_content = true,
|
|
tile_images = {"jeija_mesecon_inverter_off.png"},
|
|
groups = {dig_immediate=2,not_in_creative_inventory=1, mesecon = 2},
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = { -8/16, -8/16, -8/16, 8/16, -7/16, 8/16 },
|
|
},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = { -8/16, -8/16, -8/16, 8/16, -7/16, 8/16 },
|
|
},
|
|
drop='"mesecons_temperest:mesecon_inverter_on" 1',
|
|
})
|
|
|
|
minetest.register_node("mesecons_temperest:mesecon_inverter_on", {
|
|
description = "Inverter",
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
is_ground_content = true,
|
|
tile_images = {"jeija_mesecon_inverter_on.png"},
|
|
inventory_image = "jeija_mesecon_inverter_on.png",
|
|
wield_image = "jeija_mesecon_inverter_on.png",
|
|
groups = {dig_immediate=2, mesecon = 2},
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = { -8/16, -8/16, -8/16, 8/16, -7/16, 8/16 },
|
|
},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = { -8/16, -8/16, -8/16, 8/16, -7/16, 8/16 },
|
|
},
|
|
after_place_node = function(pos)
|
|
mesecon:receptor_on(pos)
|
|
end,
|
|
after_dig_node = function(pos)
|
|
mesecon:receptor_off(pos)
|
|
end
|
|
})
|
|
|
|
mesecon:add_receptor_node("mesecons_temperest:mesecon_inverter_on")
|
|
mesecon:add_receptor_node_off("mesecons_temperest:mesecon_inverter_off")
|
|
|
|
minetest.register_craft({
|
|
output = '"mesecons_temperest:mesecon_inverter_on" 2',
|
|
recipe = {
|
|
{'"mesecons_temperest:mesecon_off"', '"default:steel_ingot"', '"group:mesecon_conductor_craftable"'},
|
|
{'"default:steel_ingot"', '', '"default:steel_ingot"'},
|
|
{'"group:mesecon_conductor_craftable"', '"default:steel_ingot"', '"group:mesecon_conductor_craftable"'},
|
|
}
|
|
})
|
|
end
|