Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2017
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 7.99 KB | None | 0 0
  1. local doors = {
  2.     {"my_future_doors:door2a","my_future_doors:door2b","my_future_doors:door2c","my_future_doors:door2d","2","Steel"},
  3.     {"my_future_doors:door3a","my_future_doors:door3b","my_future_doors:door3c","my_future_doors:door3d","3","Squared"},
  4.     {"my_future_doors:door4a","my_future_doors:door4b","my_future_doors:door4c","my_future_doors:door4d","4","Dark"},
  5.     {"my_future_doors:door6a","my_future_doors:door6b","my_future_doors:door6c","my_future_doors:door6d","6","Points"},
  6.     {"my_future_doors:door7a","my_future_doors:door7b","my_future_doors:door7c","my_future_doors:door7d","7","Snow Flake"},
  7.     {"my_future_doors:door8a","my_future_doors:door8b","my_future_doors:door8c","my_future_doors:door8d","8","Blue Steel"},
  8.     {"my_future_doors:door9a","my_future_doors:door9b","my_future_doors:door9c","my_future_doors:door9d","9","Tan Steel"},
  9.     }
  10. for i in ipairs (doors) do
  11. local doora = doors[i][1]
  12. local doorb = doors[i][2]
  13. local doorc = doors[i][3]
  14. local doord = doors[i][4]
  15. local num = doors[i][5]
  16. local des = doors[i][6]
  17.  
  18. function onplace(itemstack, placer, pointed_thing)
  19.     local pos1 = pointed_thing.above
  20.     local pos2 = {x=pos1.x, y=pos1.y, z=pos1.z}
  21.           pos2.y = pos2.y+1
  22.     if
  23.     not minetest.registered_nodes[minetest.get_node(pos1).name].buildable_to or
  24.     not minetest.registered_nodes[minetest.get_node(pos2).name].buildable_to or
  25.     not placer or
  26.     not placer:is_player() then
  27.     return
  28.     end
  29.  
  30. minetest.log("action",placer:get_player_name().." placed a sliding door.")
  31.  
  32.             local pt = pointed_thing.above
  33.             local pt2 = {x=pt.x, y=pt.y, z=pt.z}
  34.             pt2.y = pt2.y+1
  35.             local p2 = minetest.dir_to_facedir(placer:get_look_dir())
  36.             local pt3 = {x=pt.x, y=pt.y, z=pt.z}
  37.             local p4 = 0
  38.             if p2 == 0 then
  39.                 pt3.x = pt3.x-1
  40.                 p4 = 2
  41.             elseif p2 == 1 then
  42.                 pt3.z = pt3.z+1
  43.                 p4 = 3
  44.             elseif p2 == 2 then
  45.                 pt3.x = pt3.x+1
  46.                 p4 = 0
  47.             elseif p2 == 3 then
  48.                 pt3.z = pt3.z-1
  49.                 p4 = 1
  50.             end
  51.             if minetest.get_node(pt3).name == doora then
  52.                 minetest.set_node(pt, {name=doora, param2=p4})
  53.                 minetest.set_node(pt2, {name=doorb, param2=p4})
  54.             else
  55.                 minetest.set_node(pt, {name=doora, param2=p2})
  56.                 minetest.set_node(pt2, {name=doorb, param2=p2})
  57.             end
  58. end
  59.  
  60. function afterdestruct(pos, oldnode)
  61.        minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="air"})
  62. end
  63.  
  64. function rightclick(pos, node, player, itemstack, pointed_thing)
  65.     local timer = minetest.get_node_timer(pos)
  66.     local a = minetest.get_node({x=pos.x, y=pos.y, z=pos.z-1})
  67.     local b = minetest.get_node({x=pos.x, y=pos.y, z=pos.z+1})
  68.     local c = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z})
  69.     local d = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z})
  70.         minetest.set_node(pos, {name=doorc, param2=node.param2})
  71.         minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name=doord, param2=node.param2})
  72.  
  73.          if a.name == doora then
  74.         minetest.set_node({x=pos.x, y=pos.y, z=pos.z-1}, {name=doorc, param2=a.param2})
  75.         minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z-1}, {name=doord, param2=a.param2})
  76.         end
  77.          if b.name == doora then
  78.         minetest.set_node({x=pos.x, y=pos.y, z=pos.z+1}, {name=doorc, param2=b.param2})
  79.         minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z+1}, {name=doord, param2=b.param2})
  80.         end
  81.          if c.name == doora then
  82.         minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z}, {name=doorc, param2=c.param2})
  83.         minetest.set_node({x=pos.x+1,y=pos.y+1,z=pos.z}, {name=doord, param2=c.param2})
  84.         end
  85.          if d.name == doora then
  86.         minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z}, {name=doorc, param2=d.param2})
  87.         minetest.set_node({x=pos.x-1,y=pos.y+1,z=pos.z}, {name=doord, param2=d.param2})
  88.         end
  89.  
  90.        timer:start(3)
  91.  
  92. end
  93.  
  94. function afterplace(pos, placer, itemstack, pointed_thing)
  95.     minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name=doord,param2=nodeu.param2})
  96. end
  97.  
  98. function ontimer(pos, elapsed)
  99.     local node = minetest.get_node(pos)
  100.     local a = minetest.get_node({x=pos.x, y=pos.y, z=pos.z-1})
  101.     local b = minetest.get_node({x=pos.x, y=pos.y, z=pos.z+1})
  102.     local c = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z})
  103.     local d = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z})
  104.         minetest.set_node(pos, {name=doora, param2=node.param2})
  105.         minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name=doorb, param2=node.param2})
  106.  
  107.          if a.name == doorc then
  108.         minetest.set_node({x=pos.x, y=pos.y, z=pos.z-1}, {name=doora, param2=a.param2})
  109.         minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z-1}, {name=doorb, param2=a.param2})
  110.         end
  111.          if b.name == doorc then
  112.         minetest.set_node({x=pos.x, y=pos.y, z=pos.z+1}, {name=doora, param2=b.param2})
  113.         minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z+1}, {name=doorb, param2=b.param2})
  114.         end
  115.          if c.name == doorc then
  116.         minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z}, {name=doora, param2=c.param2})
  117.         minetest.set_node({x=pos.x+1,y=pos.y+1,z=pos.z}, {name=doorb, param2=c.param2})
  118.         end
  119.          if d.name == doorc then
  120.         minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z}, {name=doora, param2=d.param2})
  121.         minetest.set_node({x=pos.x-1,y=pos.y+1,z=pos.z}, {name=doorb, param2=d.param2})
  122.         end
  123.  
  124. end
  125.  
  126. minetest.register_node(doora, {
  127.     description = des.." Sliding Door",
  128.     inventory_image = "myndoors_door"..num.."a_inv.png",
  129.     wield_image = "myndoors_door"..num.."a_inv.png",
  130.     tiles = {
  131.         "myndoors_door"..num.."a_edge.png",
  132.         "myndoors_door"..num.."a_edge.png",
  133.         "myndoors_door"..num.."a_edge.png",
  134.         "myndoors_door"..num.."a_edge.png",
  135.         "myndoors_door"..num.."a_bottom.png",
  136.         "myndoors_door"..num.."a_bottom.png^[transformFX"
  137.     },
  138.     drawtype = "nodebox",
  139.     paramtype = "light",
  140.     paramtype2 = "facedir",
  141.     groups = {cracky = 3},
  142.     node_box = {
  143.         type = "fixed",
  144.         fixed = {
  145.             {-0.5, -0.5, -0.0625, 0.5, 0.5, 0.0625}
  146.         }
  147.     },
  148.     selection_box = {
  149.         type = "fixed",
  150.         fixed = {
  151.             {-0.5, -0.5, -0.0625, 0.5, 1.5, 0.0625}
  152.         }
  153.     },
  154.  
  155. on_place = onplace,
  156.  
  157. after_destruct = afterdestruct,
  158.  
  159. on_rightclick = rightclick,
  160. })
  161. minetest.register_node(doorb, {
  162.     tiles = {
  163.         "myndoors_door"..num.."a_edge.png",
  164.         "myndoors_door"..num.."a_edge.png",
  165.         "myndoors_door"..num.."a_edge.png",
  166.         "myndoors_door"..num.."a_edge.png",
  167.         "myndoors_door"..num.."a_bottom.png^[transformFY",
  168.         "myndoors_door"..num.."a_bottom.png^[transformFX^[transformFY"
  169.     },
  170.     drawtype = "nodebox",
  171.     paramtype = "light",
  172.     paramtype2 = "facedir",
  173.     groups = {cracky = 1},
  174.     node_box = {
  175.         type = "fixed",
  176.         fixed = {
  177.             {-0.5, -0.5, -0.0625, 0.5, 0.5, 0.0625}
  178.         }
  179.     },
  180.     selection_box = {
  181.         type = "fixed",
  182.         fixed = {
  183.             {0, 0, 0, 0, 0, 0},
  184.         }
  185.     },
  186. })minetest.register_node(doorc, {
  187.     tiles = {
  188.         "myndoors_door"..num.."a_edge.png",
  189.         "myndoors_door"..num.."a_edge.png",
  190.         "myndoors_door"..num.."a_edge.png",
  191.         "myndoors_door"..num.."a_edge.png",
  192.         "myndoors_door"..num.."a_bottomo.png",
  193.         "myndoors_door"..num.."a_bottomo.png^[transformFX"
  194.     },
  195.     drawtype = "nodebox",
  196.     paramtype = "light",
  197.     paramtype2 = "facedir",
  198.     drop = doora,
  199.     groups = {cracky = 1},
  200.     node_box = {
  201.         type = "fixed",
  202.         fixed = {
  203.             {-0.5, -0.5, -0.0625, -0.25, 0.5, 0.0625},
  204.         }
  205.     },
  206.     selection_box = {
  207.         type = "fixed",
  208.         fixed = {
  209.             {-0.5, -0.5, -0.0625, -0.25, 1.5, 0.0625},
  210.         }
  211.     },
  212. after_place_node = afterplace,
  213. after_destruct = afterdestruct,
  214. on_timer = ontimer,
  215. })
  216. minetest.register_node(doord, {
  217.     tiles = {
  218.         "myndoors_door"..num.."a_edge.png",
  219.         "myndoors_door"..num.."a_edge.png",
  220.         "myndoors_door"..num.."a_edge.png",
  221.         "myndoors_door"..num.."a_edge.png",
  222.         "myndoors_door"..num.."a_bottomo.png^[transformFY",
  223.         "myndoors_door"..num.."a_bottomo.png^[transformFX^[transformFY"
  224.     },
  225.     drawtype = "nodebox",
  226.     paramtype = "light",
  227.     paramtype2 = "facedir",
  228.     groups = {cracky = 1},
  229.     node_box = {
  230.         type = "fixed",
  231.         fixed = {
  232.             {-0.5, -0.5, -0.0625, -0.25, 0.5, 0.0625},
  233.         }
  234.     },
  235.     selection_box = {
  236.         type = "fixed",
  237.         fixed = {
  238.             {0, 0, 0, 0, 0, 0},
  239.         }
  240.     },
  241. })
  242. minetest.register_craft({
  243.     output = "my_future_doors:door"..num.."a 1",
  244.     recipe = {
  245.         {"default:steel_ingot", "default:steelblock", ""},
  246.         {"default:steel_ingot", "default:steel_ingot", ""},
  247.         {"default:steelblock", "default:steel_ingot", ""}
  248.     }
  249. })
  250. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement