mirror of
https://github.com/minetest-mods/technic.git
synced 2024-12-27 03:10:29 +01:00
Merge pull request #23 from Novatux/frames
Frames destroy liquids they should replace and are not blocked by them.
This commit is contained in:
commit
60c9d97101
@ -1,3 +1,5 @@
|
|||||||
|
frames={}
|
||||||
|
|
||||||
function get_face(pos,ppos,pvect)
|
function get_face(pos,ppos,pvect)
|
||||||
ppos={x=ppos.x-pos.x,y=ppos.y-pos.y+1.5,z=ppos.z-pos.z}
|
ppos={x=ppos.x-pos.x,y=ppos.y-pos.y+1.5,z=ppos.z-pos.z}
|
||||||
if pvect.x>0 then
|
if pvect.x>0 then
|
||||||
@ -360,8 +362,10 @@ end
|
|||||||
|
|
||||||
function move_nodes_vect(poslist,vect)
|
function move_nodes_vect(poslist,vect)
|
||||||
for _,pos in ipairs(poslist) do
|
for _,pos in ipairs(poslist) do
|
||||||
local npos=addVect(pos,vect)
|
local npos=frames.addVect(pos,vect)
|
||||||
if minetest.env:get_node(npos).name~="air" and not(pos_in_list(poslist,npos)) then return end
|
local name = minetest.env:get_node(npos).name
|
||||||
|
if (name~="air" and minetest.registered_nodes[name].liquidtype=="none") and not(pos_in_list(poslist,npos)) then
|
||||||
|
return end
|
||||||
end
|
end
|
||||||
nodelist={}
|
nodelist={}
|
||||||
for _,pos in ipairs(poslist) do
|
for _,pos in ipairs(poslist) do
|
||||||
@ -376,14 +380,14 @@ function move_nodes_vect(poslist,vect)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
for _,obj in ipairs(objects) do
|
for _,obj in ipairs(objects) do
|
||||||
obj:setpos(addVect(obj:getpos(),vect))
|
obj:setpos(frames.addVect(obj:getpos(),vect))
|
||||||
le=obj:get_luaentity()
|
le=obj:get_luaentity()
|
||||||
if le and le.name == "pipeworks:tubed_item" then
|
if le and le.name == "pipeworks:tubed_item" then
|
||||||
le.start_pos=addVect(le.start_pos,vect)
|
le.start_pos=frames.addVect(le.start_pos,vect)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
for _,n in ipairs(nodelist) do
|
for _,n in ipairs(nodelist) do
|
||||||
local npos=addVect(n.pos,vect)
|
local npos=frames.addVect(n.pos,vect)
|
||||||
minetest.env:set_node(npos,n.node)
|
minetest.env:set_node(npos,n.node)
|
||||||
local meta=minetest.env:get_meta(npos)
|
local meta=minetest.env:get_meta(npos)
|
||||||
meta:from_table(n.meta)
|
meta:from_table(n.meta)
|
||||||
@ -406,7 +410,7 @@ function get_connected_nodes(pos)
|
|||||||
return c
|
return c
|
||||||
end
|
end
|
||||||
|
|
||||||
function addVect(pos,vect)
|
function frames.addVect(pos,vect)
|
||||||
return {x=pos.x+vect.x,y=pos.y+vect.y,z=pos.z+vect.z}
|
return {x=pos.x+vect.x,y=pos.y+vect.y,z=pos.z+vect.z}
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -419,7 +423,7 @@ end
|
|||||||
|
|
||||||
function connected(pos,c,adj)
|
function connected(pos,c,adj)
|
||||||
for _,vect in ipairs(adj) do
|
for _,vect in ipairs(adj) do
|
||||||
local pos1=addVect(pos,vect)
|
local pos1=frames.addVect(pos,vect)
|
||||||
local nodename=minetest.env:get_node(pos1).name
|
local nodename=minetest.env:get_node(pos1).name
|
||||||
if not(pos_in_list(c,pos1)) and nodename~="air" and
|
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==nil or
|
||||||
|
Loading…
Reference in New Issue
Block a user