Zefram
2014-08-13 38e85e9775b132b0ce504d8d795632668eb47852
technic/machines/other/frames.lua
@@ -3,6 +3,8 @@
frames = {}
local infinite_stacks = minetest.setting_getbool("creative_mode") and minetest.get_modpath("unified_inventory") == nil
local frames_pos = {}
-- Helpers
@@ -220,6 +222,7 @@
      paramtype = "light",
      frame=1,
      drop="technic:frame_111111",
      sunlight_propagates = true,
      frame_connect_all=function(nodename)
         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}}
@@ -265,10 +268,12 @@
         else
            minetest.set_node(pos, {name = itemstack:get_name()})
         end
         itemstack:take_item()
         if not infinite_stacks then
            itemstack:take_item()
         end
         return itemstack
      end,
      on_rightclick = function(pos, node, placer, itemstack)
      on_rightclick = function(pos, node, placer, itemstack, pointed_thing)
         if is_supported_node(itemstack:get_name()) then
            if minetest.is_protected(pos, placer:get_player_name()) then
               minetest.log("action", placer:get_player_name()
@@ -312,6 +317,11 @@
            obj:get_luaentity():set_node({name=node.name})
            
            return itemstack
         else
            --local pointed_thing = {type = "node", under = pos}
            if pointed_thing then
               minetest.item_place_node(itemstack, placer, pointed_thing)
            end
         end
      end,
   })
@@ -532,11 +542,15 @@
      nnode.name = frames_pos[pos_to_string(nnodepos)]
   end
   local meta = minetest.get_meta(pos)
   if meta:get_int("last_moved") == minetest.get_gametime() then
      return
   end
   local owner = meta:get_string("owner")
   if minetest.registered_nodes[nnode.name].frame==1 then
      local connected_nodes=get_connected_nodes(nnodepos)
      move_nodes_vect(connected_nodes,dir,pos,owner)
   end
   minetest.get_meta(vector.add(pos, dir)):set_int("last_moved", minetest.get_gametime())
end
minetest.register_node("technic:frame_motor",{
@@ -788,11 +802,11 @@
})
minetest.register_tool("technic:template_tool",{
   description = S("Template tool"),
   description = S("Template Tool"),
   inventory_image = "technic_template_tool.png",
   on_use = function(itemstack, puncher, pointed_thing)
      local pos = pointed_thing.under
      if pos == nil or (minetest.is_protected and minetest.is_protected(pos, placer:get_player_name())) then
      if pos == nil or (minetest.is_protected and minetest.is_protected(pos, puncher:get_player_name())) then
         return nil
      end
      local node = minetest.get_node(pos)
@@ -833,15 +847,19 @@
   local dir = minetest.facedir_to_dir(node.param2)
   local nnode=minetest.get_node(nnodepos)
   local meta = minetest.get_meta(pos)
   if meta:get_int("last_moved") == minetest.get_gametime() then
      return
   end
   local owner = meta:get_string("owner")
   if nnode.name == "technic:template" then
      local connected_nodes=get_template_nodes(nnodepos)
      move_nodes_vect(connected_nodes,dir,pos,owner)
   end
   minetest.get_meta(vector.add(pos, dir)):set_int("last_moved", minetest.get_gametime())
end
minetest.register_node("technic:template_motor",{
   description = S("Template motor"),
   description = S("Template Motor"),
   tiles = {"pipeworks_filter_top.png^[transformR90", "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},
@@ -867,7 +885,7 @@
   output = 'technic:frame_motor',
   recipe = {
      {'',               'technic:frame_111111',   ''},
      {'group:mesecons_conductor_craftable',   'technic:motor',   'group:mesecons_conductor_craftable'},
      {'group:mesecon_conductor_craftable',   'technic:motor',   'group:mesecon_conductor_craftable'},
      {'',               'technic:frame_111111',   ''},
   }
})
@@ -895,7 +913,7 @@
   output = 'technic:template_motor',
   recipe = {
      {'',               'technic:template',   ''},
      {'group:mesecons_conductor_craftable',   'technic:motor',   'group:mesecons_conductor_craftable'},
      {'group:mesecon_conductor_craftable',   'technic:motor',   'group:mesecon_conductor_craftable'},
      {'',               'technic:template',   ''},
   }
})