object detectors on top of sings should only activate if player, which name is on the sign, is near to the detector
@Jordach: That sounds really interesting. If you like I would be willing to help with that. I've always wanted to try my hand at something more than an adder :).
Jeija wrote:NIce sfan5, thx for fixing. I once tried param1 myself, but it didn't work back then :( Maybe I made a small mistake or so. NIce to know that btw.
I guess, sfan5, you should make different mesecon rules for buttons. Just put them in the get_rules function (I will maybe add a add_rules function when I have more time). Just look at the mesecon torch code for this.
Jeija wrote:Some changes on github, check them out.
e.g. object detectors above signs indicate the player name on the sign and new mesecon button rules. Also splitted files (I'll continue doing that, so commiting will be easier)
@Sfan5: How do I delete the README~ file? I have no idea...
@hijera: These blocks would be possible, but I can't do them myself (simply don't have time). If you or someone else wants to do that, just commit it.
Jeija wrote:For the adder: Make sure that the whole machine is in a close radius, like 30 blocks away. Unfortunately, if mesecon circuits are farer away, minetest doesn't simulate them.
@Temperest: Looks awesome! I can add you to git if you give me your name... Else, just post it here.
--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",
},
})
mesecon:register_on_signal_on(function(pos, node)
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
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
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"', ''},
}
})
--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",
},
})
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',
})
minetest.register_on_dignode(
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"', ''},
}
})
--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",
},
})
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',
})
minetest.register_on_dignode(
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"'},
}
})
Is there anything that can be done about the 30 block limitation? I ran into this too when I put a flashing light on top of a tall tower.
Jeija wrote:@Sfan5: I guess that happened because i had to --force the upload (I forgot to pull and didn't want to push). Well, I'm just new to git...
mesecon:lightstone_add(name, base_item, texture_off, texture_on)
sycam wrote:i like mods to be in zip because my minetest dosen't like tar
Users browsing this forum: No registered users and 51 guests