Nore's update to frames
authorRealBadAngel <mk@realbadangel.pl>
Sun, 17 Feb 2013 18:31:12 +0000 (19:31 +0100)
committerRealBadAngel <mk@realbadangel.pl>
Sun, 17 Feb 2013 18:31:12 +0000 (19:31 +0100)
technic/frames.lua

index f149409b3cff77e7be1c58e70af2a26f440048c4..820a3082e1ad52aedbcdff4040ec9b0cc26a3b62 100644 (file)
@@ -1,31 +1,3 @@
-       minetest.register_node("technic:wall", {
-               description = description,
-               drawtype = "nodebox",
-               tiles = {"default_wood.png"},
-               paramtype = "light",
-               --paramtype2 = "facedir",
-               sunlight_propagates = true,
-               is_ground_content = true,
-               node_box = {
-                       type = "fixed",
-                       --fixed = {-0.5, -0.5, 0.25, 0.5, 0.5, 0.5},
-       fixed={
-       {-0.5, -0.5, -0.5, -0.4, 0.5, -0.4},
-       {-0.4, -0.5, 0.3, -0.3, 0.5, 0.4},
-       {0.3, -0.5, 0.3, 0.4, 0.5,0.4},
-       {0.3, -0.5, -0.3, 0.4, 0.5,-0.4},
-       {-0.3, -0.35, -0.3, 0.3, -0.2,-0.25},
-       {-0.3, 0.2, -0.3,        0.3, 0.35,-0.25},
-       {-0.3, -0.35, 0.25, 0.3, -0.2,0.3},
-       {-0.3, 0.2, 0.25,        0.3, 0.35,0.3},
-       {-0.3, -0.35, -0.25, -0.25, -0.2,0.25},
-       {-0.3, 0.2, -0.25,       -0.25, 0.35,0.25},
-       {0.25, -0.35, -0.25, 0.3, -0.2,0.25},
-       {0.25, 0.2, -0.25,      0.3, 0.35,0.25},
-       },},
-               sounds = default.node_sound_stone_defaults(),
-       })
-
 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
@@ -371,11 +343,19 @@ minetest.register_node("technic:frame_motor6",{
        end
 })
 
-
-
+function add_table(table,toadd)
+       local i=1
+       while true do
+               o=table[i]
+               if o==toadd then return end
+               if o==nil then break end
+               i=i+1
+       end
+       table[i]=toadd
+end
 
 function move_nodes_vect(poslist,vect)
-       for _,pos in ipairs(poslist) do
+               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
@@ -386,6 +366,19 @@ function move_nodes_vect(poslist,vect)
                nodelist[#(nodelist)+1]={pos=pos,node=node,meta=meta}
                minetest.env:remove_node(pos)
        end
+       objects={}
+       for _,pos in ipairs(poslist) do
+               for _,object in ipairs(minetest.env:get_objects_inside_radius(pos, 1)) do
+                       add_table(objects,object)
+               end
+       end
+       for _,obj in ipairs(objects) do
+               obj:setpos(addVect(obj:getpos(),vect))
+               if obj:get_luaentity().name == "pipeworks:tubed_item" then
+                       le=obj:get_luaentity()
+                       le.start_pos=addVect(le.start_pos,vect)
+               end
+       end
        for _,n in ipairs(nodelist) do
                local npos=addVect(n.pos,vect)
                minetest.env:set_node(npos,n.node)