Nore wrote:I just noticed that you can put items via tubes in the MV electric furnace, but not out (you should add input_inventory="dst" in the tube table). Moreover, LV electric furnaces seem to be not compatible at all. Is that normal?
if stack:get_name() ~=nil then if stack:get_name() ~=nil and minetest.registered_nodes[stack:get_name()]~=nil then Nore wrote:Deployer doesn't work... You should replace line 29 of deployer.luaYour phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
- Code: Select all
if stack:get_name() ~=nil then
byYour phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
- Code: Select all
if stack:get_name() ~=nil and minetest.registered_nodes[stack:get_name()]~=nil then
It works after this simple modification.
I also noticed that the deployer is not compatible with tubes when on... You should add the same as for the off deployer for it to work.
1244 wrote:In which way I can add new machine to function check_LV_node_subp in battery box? I ask because I create new mod wich use energy from LV battery box.

if minetest.env:get_node(pos1).name == "technic:mv_electric_furnace" then new_node_added=add_new_cable_node(RE_nodes,pos1) end
if minetest.env:get_node(pos1).name == "technic:mv_electric_furnace_active" then new_node_added=add_new_cable_node(RE_nodes,pos1) end
Nore wrote:I tried to use the MV furnace, but it looks like it doesn't receive power from the MV cables, battery boxes and solar panels. Am I doing something wrong?
EDIT: found where the bug comes from: you should add the following at line 320 of battery_box_mv.lua:Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
- Code: Select all
if minetest.env:get_node(pos1).name == "technic:mv_electric_furnace" then new_node_added=add_new_cable_node(RE_nodes,pos1) end
if minetest.env:get_node(pos1).name == "technic:mv_electric_furnace_active" then new_node_added=add_new_cable_node(RE_nodes,pos1) end
It could be even better if you used something in the node definition, so one could easily define new machines and power producers, and the code would be more simpler.
minetest.register_craft({
output = 'pipeworks:accelerator_tube_000000',
recipe = {
{'technic:copper_coil', 'pipeworks:tube_000000', 'technic:copper_coil'},
}
})
minetest.register_craft({
output = 'pipeworks:detector_tube_off_000000',
recipe = {
{'mesecons:mesecon', 'pipeworks:tube_000000', 'mesecons:mesecon'},
}
})
minetest.register_craft({
output = 'pipeworks:sand_tube_000000',
recipe = {
{'default:sand', 'pipeworks:tube_000000', 'default:sand'},
}
})
minetest.register_craft({
output = 'pipeworks:teleport_tube_000000',
recipe = {
{'default:mese_crystal', 'default:desert_stone', 'default:mese_crystal'},
{'default:desert_stone', 'pipeworks:tube_000000', 'default:desert_stone'},
{'default:mese_crystal', 'default:desert_stone', 'default:mese_crystal'},
}
})Nore wrote:Suggestion for tube crafting recipes:Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
- Code: Select all
minetest.register_craft({
output = 'pipeworks:accelerator_tube_000000',
recipe = {
{'technic:copper_coil', 'pipeworks:tube_000000', 'technic:copper_coil'},
}
})
minetest.register_craft({
output = 'pipeworks:detector_tube_off_000000',
recipe = {
{'mesecons:mesecon', 'pipeworks:tube_000000', 'mesecons:mesecon'},
}
})
minetest.register_craft({
output = 'pipeworks:sand_tube_000000',
recipe = {
{'default:sand', 'pipeworks:tube_000000', 'default:sand'},
}
})
minetest.register_craft({
output = 'pipeworks:teleport_tube_000000',
recipe = {
{'default:mese_crystal', 'default:desert_stone', 'default:mese_crystal'},
{'default:desert_stone', 'pipeworks:tube_000000', 'default:desert_stone'},
{'default:mese_crystal', 'default:desert_stone', 'default:mese_crystal'},
}
})


1244 wrote:In which way I can add new machine to function check_LV_node_subp in battery box? I ask because I create new mod wich use energy from LV battery box.
18:57:40: VERBOSE[main]: error_message = ServerError: LuaError: error: ...n\..\mods\minetest\technic\unified_inventory/api.lua:465: bad argument #1 to 'lower' (string expected, got table)
function get_face(pos,ppos,pvect)
ppos={x=ppos.x-pos.x,y=ppos.y-pos.y+1.5,z=ppos.z-pos.z}
if pvect.x>0 then
local t=(-0.5-ppos.x)/pvect.x
local y_int=ppos.y+t*pvect.y
local z_int=ppos.z+t*pvect.z
if y_int>-0.4 and y_int<0.4 and z_int>-0.4 and z_int<0.4 then return 1 end
elseif pvect.x<0 then
local t=(0.5-ppos.x)/pvect.x
local y_int=ppos.y+t*pvect.y
local z_int=ppos.z+t*pvect.z
if y_int>-0.4 and y_int<0.4 and z_int>-0.4 and z_int<0.4 then return 2 end
end
if pvect.y>0 then
local t=(-0.5-ppos.y)/pvect.y
local x_int=ppos.x+t*pvect.x
local z_int=ppos.z+t*pvect.z
if x_int>-0.4 and x_int<0.4 and z_int>-0.4 and z_int<0.4 then return 3 end
elseif pvect.y<0 then
local t=(0.5-ppos.y)/pvect.y
local x_int=ppos.x+t*pvect.x
local z_int=ppos.z+t*pvect.z
if x_int>-0.4 and x_int<0.4 and z_int>-0.4 and z_int<0.4 then return 4 end
end
if pvect.z>0 then
local t=(-0.5-ppos.z)/pvect.z
local x_int=ppos.x+t*pvect.x
local y_int=ppos.y+t*pvect.y
if x_int>-0.4 and x_int<0.4 and y_int>-0.4 and y_int<0.4 then return 5 end
elseif pvect.z<0 then
local t=(0.5-ppos.z)/pvect.z
local x_int=ppos.x+t*pvect.x
local y_int=ppos.y+t*pvect.y
if x_int>-0.4 and x_int<0.4 and y_int>-0.4 and y_int<0.4 then return 6 end
end
end
for xm=0,1 do
for xp=0,1 do
for ym=0,1 do
for yp=0,1 do
for zm=0,1 do
for zp=0,1 do
local outimgs = {}
if yp==1 then
table.insert(outimgs, "technic_lv_cable.png")
else
table.insert(outimgs, "default_stone.png")
end
if ym==1 then
table.insert(outimgs, "technic_lv_cable.png")
else
table.insert(outimgs, "default_stone.png")
end
if xp==1 then
table.insert(outimgs, "technic_lv_cable.png")
else
table.insert(outimgs, "default_stone.png")
end
if xm==1 then
table.insert(outimgs, "technic_lv_cable.png")
else
table.insert(outimgs, "default_stone.png")
end
if zp==1 then
table.insert(outimgs, "technic_lv_cable.png")
else
table.insert(outimgs, "default_stone.png")
end
if zm==1 then
table.insert(outimgs, "technic_lv_cable.png")
else
table.insert(outimgs, "default_stone.png")
end
local nameext=tostring(xm)..tostring(xp)..tostring(ym)..tostring(yp)..tostring(zm)..tostring(zp)
local groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}
if nameext~="111111" then groups.not_in_creative_inventory=1 end
minetest.register_node("technic:frame_"..nameext,{
description = "Frame",
tiles = outimgs,
groups=groups,
frame=1,
drop="technic:frame_111111",
frame_connect_all=function(pos)
local nodename=minetest.env:get_node(pos).name
l2={}
l1={{x=-1,y=0,z=0},{x=1,y=0,z=0},{x=0,y=-1,z=0},{x=0,y=1,z=0},{x=0,y=0,z=-1},{x=0,y=0,z=1}}
for i,dir in ipairs(l1) do
if string.sub(nodename,-7+i,-7+i)=="1" then
l2[#(l2)+1]=dir
end
end
return l2
end,
on_punch=function(pos,node,puncher)
local ppos=puncher:getpos()
local pvect=puncher:get_look_dir()
local pface=get_face(pos,ppos,pvect)
if pface==nil then return end
local nodename=node.name
local newstate=tostring(1-tonumber(string.sub(nodename,-7+pface,-7+pface)))
if pface<=5 then
nodename=string.sub(nodename,1,-7+pface-1)..newstate..string.sub(nodename,-7+pface+1)
else
nodename=string.sub(nodename,1,-2)..newstate
end
node.name=nodename
minetest.env:set_node(pos,node)
end
})
end
end
end
end
end
end
function frame_motor1_on(pos,node)
local npos={x=pos.x,y=pos.y+1,z=pos.z}
local nnode=minetest.env:get_node(npos)
if node.param2==0 then
dir={x=1,y=0,z=0}
elseif node.param2==1 then
dir={x=0,y=0,z=-1}
elseif node.param2==2 then
dir={x=-1,y=0,z=0}
else
dir={x=0,y=0,z=1}
end
if minetest.registered_nodes[nnode.name].frame==1 then
local connected_nodes=get_connected_nodes(npos)
move_nodes_vect(connected_nodes,dir)
end
end
function frame_motor2_on(pos,node)
local npos={x=pos.x,y=pos.y-1,z=pos.z}
local nnode=minetest.env:get_node(npos)
if node.param2==0 then
dir={x=1,y=0,z=0}
elseif node.param2==1 then
dir={x=0,y=0,z=-1}
elseif node.param2==2 then
dir={x=-1,y=0,z=0}
else
dir={x=0,y=0,z=1}
end
if minetest.registered_nodes[nnode.name].frame==1 then
local connected_nodes=get_connected_nodes(npos)
move_nodes_vect(connected_nodes,dir)
end
end
function frame_motor3_on(pos,node)
local npos={x=pos.x,y=pos.y,z=pos.z}
if node.param2==0 then
dir={x=1,y=0,z=0}
npos.z=npos.z-1
elseif node.param2==1 then
dir={x=0,y=0,z=-1}
npos.x=npos.x-1
elseif node.param2==2 then
dir={x=-1,y=0,z=0}
npos.z=npos.z+1
else
dir={x=0,y=0,z=1}
npos.x=npos.x+1
end
local nnode=minetest.env:get_node(npos)
if minetest.registered_nodes[nnode.name].frame==1 then
local connected_nodes=get_connected_nodes(npos)
move_nodes_vect(connected_nodes,dir)
end
end
function frame_motor4_on(pos,node)
local npos={x=pos.x,y=pos.y,z=pos.z}
if node.param2==0 then
dir={x=-1,y=0,z=0}
npos.z=npos.z-1
elseif node.param2==1 then
dir={x=0,y=0,z=1}
npos.x=npos.x-1
elseif node.param2==2 then
dir={x=1,y=0,z=0}
npos.z=npos.z+1
else
dir={x=0,y=0,z=-1}
npos.x=npos.x+1
end
local nnode=minetest.env:get_node(npos)
if minetest.registered_nodes[nnode.name].frame==1 then
local connected_nodes=get_connected_nodes(npos)
move_nodes_vect(connected_nodes,dir)
end
end
function frame_motor5_on(pos,node)
local npos={x=pos.x,y=pos.y,z=pos.z}
if node.param2==0 then
npos.z=npos.z-1
elseif node.param2==1 then
npos.x=npos.x-1
elseif node.param2==2 then
npos.z=npos.z+1
else
npos.x=npos.x+1
end
dir={x=0,y=1,z=0}
local nnode=minetest.env:get_node(npos)
if minetest.registered_nodes[nnode.name].frame==1 then
local connected_nodes=get_connected_nodes(npos)
move_nodes_vect(connected_nodes,dir)
end
end
function frame_motor6_on(pos,node)
local npos={x=pos.x,y=pos.y,z=pos.z}
if node.param2==0 then
npos.z=npos.z-1
elseif node.param2==1 then
npos.x=npos.x-1
elseif node.param2==2 then
npos.z=npos.z+1
else
npos.x=npos.x+1
end
dir={x=0,y=-1,z=0}
local nnode=minetest.env:get_node(npos)
if minetest.registered_nodes[nnode.name].frame==1 then
local connected_nodes=get_connected_nodes(npos)
move_nodes_vect(connected_nodes,dir)
end
end
minetest.register_node("technic:frame_motor1",{
description = "Frame motor 1",
tiles = {"pipeworks_filter_top.png", "technic_lv_cable.png", "technic_lv_cable.png",
"technic_lv_cable.png", "technic_lv_cable.png", "technic_lv_cable.png"},
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,mesecon=2},
paramtype2 = "facedir",
mesecons={effector={action_on=frame_motor1_on}},
frames_can_connect=function(pos,dir)
return dir.y~=-1
end
})
minetest.register_node("technic:frame_motor2",{
description = "Frame motor 2",
tiles = {"technic_lv_cable.png", "pipeworks_filter_top.png", "technic_lv_cable.png",
"technic_lv_cable.png", "technic_lv_cable.png", "technic_lv_cable.png"},
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,mesecon=2},
paramtype2 = "facedir",
mesecons={effector={action_on=frame_motor2_on}},
frames_can_connect=function(pos,dir)
return dir.y~=1
end
})
minetest.register_node("technic:frame_motor3",{
description = "Frame motor 3",
tiles = {"technic_lv_cable.png", "technic_lv_cable.png", "technic_lv_cable.png",
"technic_lv_cable.png", "technic_lv_cable.png", "pipeworks_filter_top.png"},
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,mesecon=2},
paramtype2 = "facedir",
mesecons={effector={action_on=frame_motor3_on}},
frames_can_connect=function(pos,dir)
local node=minetest.env:get_node(pos)
if node.param2==0 then return dir.z~=1
elseif node.param2==1 then return dir.x~=1
elseif node.param2==2 then return dir.z~=-1
else return dir.x~=-1 end
end
})
minetest.register_node("technic:frame_motor4",{
description = "Frame motor 4",
tiles = {"technic_lv_cable.png", "technic_lv_cable.png", "technic_lv_cable.png",
"technic_lv_cable.png", "technic_lv_cable.png", "pipeworks_filter_top.png"},
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,mesecon=2},
paramtype2 = "facedir",
mesecons={effector={action_on=frame_motor4_on}},
frames_can_connect=function(pos,dir)
local node=minetest.env:get_node(pos)
if node.param2==0 then return dir.z~=1
elseif node.param2==1 then return dir.x~=1
elseif node.param2==2 then return dir.z~=-1
else return dir.x~=-1 end
end
})
minetest.register_node("technic:frame_motor5",{
description = "Frame motor 5",
tiles = {"technic_lv_cable.png", "technic_lv_cable.png", "technic_lv_cable.png",
"technic_lv_cable.png", "technic_lv_cable.png", "pipeworks_filter_top.png"},
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,mesecon=2},
paramtype2 = "facedir",
mesecons={effector={action_on=frame_motor5_on}},
frames_can_connect=function(pos,dir)
local node=minetest.env:get_node(pos)
if node.param2==0 then return dir.z~=1
elseif node.param2==1 then return dir.x~=1
elseif node.param2==2 then return dir.z~=-1
else return dir.x~=-1 end
end
})
minetest.register_node("technic:frame_motor6",{
description = "Frame motor 6",
tiles = {"technic_lv_cable.png", "technic_lv_cable.png", "technic_lv_cable.png",
"technic_lv_cable.png", "technic_lv_cable.png", "pipeworks_filter_top.png"},
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,mesecon=2},
paramtype2 = "facedir",
mesecons={effector={action_on=frame_motor6_on}},
frames_can_connect=function(pos,dir)
local node=minetest.env:get_node(pos)
if node.param2==0 then return dir.z~=1
elseif node.param2==1 then return dir.x~=1
elseif node.param2==2 then return dir.z~=-1
else return dir.x~=-1 end
end
})
function move_nodes_vect(poslist,vect)
for _,pos in ipairs(poslist) do
local npos=addVect(pos,vect)
if minetest.env:get_node(npos).name~="air" and not(pos_in_list(poslist,npos)) then return end
end
nodelist={}
for _,pos in ipairs(poslist) do
local node=minetest.env:get_node(pos)
local meta=minetest.env:get_meta(pos):to_table()
nodelist[#(nodelist)+1]={pos=pos,node=node,meta=meta}
minetest.env:remove_node(pos)
end
for _,n in ipairs(nodelist) do
local npos=addVect(n.pos,vect)
minetest.env:set_node(npos,n.node)
local meta=minetest.env:get_meta(npos)
meta:from_table(n.meta)
end
end
function get_connected_nodes(pos)
c={pos}
local nodename=minetest.env:get_node(pos).name
connected(pos,c,minetest.registered_nodes[nodename].frame_connect_all(pos))
return c
end
function addVect(pos,vect)
return {x=pos.x+vect.x,y=pos.y+vect.y,z=pos.z+vect.z}
end
function pos_in_list(l,pos)
for _,p in ipairs(l) do
if p.x==pos.x and p.y==pos.y and p.z==pos.z then return true end
end
return false
end
function connected(pos,c,adj)
for _,vect in ipairs(adj) do
local pos1=addVect(pos,vect)
local nodename=minetest.env:get_node(pos1).name
if not(pos_in_list(c,pos1)) and nodename~="air" and
(minetest.registered_nodes[nodename].frames_can_connect==nil or
minetest.registered_nodes[nodename].frames_can_connect(pos1,vect)) then
c[#(c)+1]=pos1
if minetest.registered_nodes[nodename].frame==1 then
local adj=minetest.registered_nodes[nodename].frame_connect_all(pos1)
connected(pos1,c,adj)
end
end
end
end
Nore wrote:Try to upgrade to latest stairplus.
Also, I have a more or less working frame code:

Inocudom wrote:In creative mode in the latest xyz build of 0.4.4, unified_inventory's inventory menu disappears and never comes back. Instead, I end up having to use the default creative menu.

Nore wrote:Thanks. Could you make better textures for the frame motor? Moreover, have you got a way to rotate a frame motor without using 6 different nodes?
ERROR[EmergeThread]: ERROR: An unhandled exception occurred: LuaError: error: ...n\..\mods\minetest\technic-master\technic/rubber.lua:111: attempt to call method 'spawn_tree' (a nil value)
BZab wrote:1. Am I alone? im using latest technic, but MV wires, vertical are 'invisible'... isnt missing texture?
PS how to use frames and f. motors? (I think they arent just decorative)


Users browsing this forum: No registered users and 23 guests