bars.lua 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. minetest.register_node("my_misc_doors:door2a", {
  2. description = "Sliding Door",
  3. inventory_image = "mydoors_bars.png",
  4. tiles = {
  5. "mydoors_bars.png",
  6. "mydoors_bars.png",
  7. "mydoors_bars.png",
  8. "mydoors_bars.png",
  9. "mydoors_bars.png",
  10. "mydoors_bars.png",
  11. },
  12. drawtype = "nodebox",
  13. paramtype = "light",
  14. paramtype2 = "facedir",
  15. groups = {cracky = 3},
  16. node_box = {
  17. type = "fixed",
  18. fixed = {
  19. {-0.4375, -0.5, -0.0625, -0.3125, 0.5, 0.0625},
  20. {-0.0625, -0.5, -0.0625, 0.0625, 0.5, 0.0625},
  21. {0.3125, -0.5, -0.0625, 0.4375, 0.5, 0.0625},
  22. {0.125, -0.5, -0.0625, 0.25, 0.5, 0.0625},
  23. {-0.25, -0.5, -0.0625, -0.125, 0.5, 0.0625},
  24. }
  25. },
  26. selection_box = {
  27. type = "fixed",
  28. fixed = {
  29. {-0.4375, -0.5, -0.0625, 0.4375, 1.5, 0.0625},
  30. }
  31. },
  32. on_place = function(itemstack, placer, pointed_thing)
  33. local pos1 = pointed_thing.above
  34. local pos2 = {x=pos1.x, y=pos1.y, z=pos1.z}
  35. pos2.y = pos2.y+1
  36. if
  37. not minetest.registered_nodes[minetest.get_node(pos1).name].buildable_to or
  38. not minetest.registered_nodes[minetest.get_node(pos2).name].buildable_to or
  39. not placer or
  40. not placer:is_player() then
  41. return
  42. end
  43. local pt = pointed_thing.above
  44. local pt2 = {x=pt.x, y=pt.y, z=pt.z}
  45. pt2.y = pt2.y+1
  46. local p2 = minetest.dir_to_facedir(placer:get_look_dir())
  47. local pt3 = {x=pt.x, y=pt.y, z=pt.z}
  48. local p4 = 0
  49. if p2 == 0 then
  50. pt3.x = pt3.x-1
  51. p4 = 2
  52. elseif p2 == 1 then
  53. pt3.z = pt3.z+1
  54. p4 = 3
  55. elseif p2 == 2 then
  56. pt3.x = pt3.x+1
  57. p4 = 0
  58. elseif p2 == 3 then
  59. pt3.z = pt3.z-1
  60. p4 = 1
  61. end
  62. if minetest.get_node(pt3).name == "my_misc_doors:door2a" then
  63. minetest.set_node(pt, {name="my_misc_doors:door2a", param2=p4})
  64. minetest.set_node(pt2, {name="my_misc_doors:door2b", param2=p4})
  65. else
  66. minetest.set_node(pt, {name="my_misc_doors:door2a", param2=p2})
  67. minetest.set_node(pt2, {name="my_misc_doors:door2b", param2=p2})
  68. end
  69. end,
  70. after_destruct = function(pos, oldnode)
  71. minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="air"})
  72. end,
  73. on_rightclick = function(pos, node, player, itemstack, pointed_thing)
  74. local timer = minetest.get_node_timer(pos)
  75. local a = minetest.get_node({x=pos.x, y=pos.y, z=pos.z-1})
  76. local b = minetest.get_node({x=pos.x, y=pos.y, z=pos.z+1})
  77. local c = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z})
  78. local d = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z})
  79. minetest.set_node(pos, {name="my_misc_doors:door2c", param2=node.param2})
  80. minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name="my_misc_doors:door2d", param2=node.param2})
  81. if a.name == "my_misc_doors:door2a" then
  82. minetest.set_node({x=pos.x, y=pos.y, z=pos.z-1}, {name="my_misc_doors:door2c", param2=a.param2})
  83. minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z-1}, {name="my_misc_doors:door2d", param2=a.param2})
  84. end
  85. if b.name == "my_misc_doors:door2a" then
  86. minetest.set_node({x=pos.x, y=pos.y, z=pos.z+1}, {name="my_misc_doors:door2c", param2=b.param2})
  87. minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z+1}, {name="my_misc_doors:door2d", param2=b.param2})
  88. end
  89. if c.name == "my_misc_doors:door2a" then
  90. minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z}, {name="my_misc_doors:door2c", param2=c.param2})
  91. minetest.set_node({x=pos.x+1,y=pos.y+1,z=pos.z}, {name="my_misc_doors:door2d", param2=c.param2})
  92. end
  93. if d.name == "my_misc_doors:door2a" then
  94. minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z}, {name="my_misc_doors:door2c", param2=d.param2})
  95. minetest.set_node({x=pos.x-1,y=pos.y+1,z=pos.z}, {name="my_misc_doors:door2d", param2=d.param2})
  96. end
  97. timer:start(3)
  98. end,
  99. })
  100. minetest.register_node("my_misc_doors:door2b", {
  101. tiles = {
  102. "mydoors_bars.png",
  103. },
  104. drawtype = "nodebox",
  105. paramtype = "light",
  106. paramtype2 = "facedir",
  107. groups = {cracky = 1},
  108. node_box = {
  109. type = "fixed",
  110. fixed = {
  111. {-0.4375, -0.5, -0.0625, -0.3125, 0.5, 0.0625},
  112. {-0.0625, -0.5, -0.0625, 0.0625, 0.5, 0.0625},
  113. {0.3125, -0.5, -0.0625, 0.4375, 0.5, 0.0625},
  114. {0.125, -0.5, -0.0625, 0.25, 0.5, 0.0625},
  115. {-0.25, -0.5, -0.0625, -0.125, 0.5, 0.0625},
  116. }
  117. },
  118. selection_box = {
  119. type = "fixed",
  120. fixed = {
  121. {0, 0, 0, 0, 0, 0},
  122. }
  123. },
  124. })
  125. minetest.register_node("my_misc_doors:door2c", {
  126. tiles = {
  127. "mydoors_bars.png",
  128. "mydoors_bars.png",
  129. "mydoors_bars.png",
  130. "mydoors_bars.png",
  131. "mydoors_bars.png^[transformFX",
  132. "mydoors_bars.png",
  133. },
  134. drawtype = "nodebox",
  135. paramtype = "light",
  136. paramtype2 = "facedir",
  137. groups = {cracky = 1},
  138. node_box = {
  139. type = "fixed",
  140. fixed = {
  141. {-0.4375, -0.375, -0.0625, -0.3125, -0.5, 0.0625},
  142. {-0.0625, -0.375, -0.0625, 0.0625, -0.5, 0.0625},
  143. {0.3125, -0.375, -0.0625, 0.4375, -0.5, 0.0625},
  144. {0.125, -0.375, -0.0625, 0.25, -0.5, 0.0625},
  145. {-0.25, -0.375, -0.0625, -0.125, -0.5, 0.0625},
  146. }
  147. },
  148. selection_box = {
  149. type = "fixed",
  150. fixed = {
  151. {0, 0, 0, 0, 0, 0},
  152. }
  153. },
  154. after_place_node = function(pos, placer, itemstack, pointed_thing)
  155. minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="my_misc_doors:door2d",param2=nodeu.param2})
  156. end,
  157. after_destruct = function(pos, oldnode)
  158. minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="air"})
  159. end,
  160. on_timer = function(pos, elapsed)
  161. local node = minetest.get_node(pos)
  162. local a = minetest.get_node({x=pos.x, y=pos.y, z=pos.z-1})
  163. local b = minetest.get_node({x=pos.x, y=pos.y, z=pos.z+1})
  164. local c = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z})
  165. local d = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z})
  166. minetest.set_node(pos, {name="my_misc_doors:door2a", param2=node.param2})
  167. minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name="my_misc_doors:door2b", param2=node.param2})
  168. if a.name == "my_misc_doors:door2c" then
  169. minetest.set_node({x=pos.x, y=pos.y, z=pos.z-1}, {name="my_misc_doors:door2a", param2=a.param2})
  170. minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z-1}, {name="my_misc_doors:door2b", param2=a.param2})
  171. end
  172. if b.name == "my_misc_doors:door2c" then
  173. minetest.set_node({x=pos.x, y=pos.y, z=pos.z+1}, {name="my_misc_doors:door2a", param2=b.param2})
  174. minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z+1}, {name="my_misc_doors:door2b", param2=b.param2})
  175. end
  176. if c.name == "my_misc_doors:door2c" then
  177. minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z}, {name="my_misc_doors:door2a", param2=c.param2})
  178. minetest.set_node({x=pos.x+1,y=pos.y+1,z=pos.z}, {name="my_misc_doors:door2b", param2=c.param2})
  179. end
  180. if d.name == "my_misc_doors:door2c" then
  181. minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z}, {name="my_misc_doors:door2a", param2=d.param2})
  182. minetest.set_node({x=pos.x-1,y=pos.y+1,z=pos.z}, {name="my_misc_doors:door2b", param2=d.param2})
  183. end
  184. end,
  185. })
  186. minetest.register_node("my_misc_doors:door2d", {
  187. tiles = {
  188. "mydoors_bars.png",
  189. "mydoors_bars.png",
  190. "mydoors_bars.png",
  191. "mydoors_bars.png",
  192. "mydoors_bars.png^[transformFX",
  193. "mydoors_bars.png",
  194. },
  195. drawtype = "nodebox",
  196. paramtype = "light",
  197. paramtype2 = "facedir",
  198. groups = {cracky = 1},
  199. node_box = {
  200. type = "fixed",
  201. fixed = {
  202. {-0.4375, 0.375, -0.0625, -0.3125, 0.5, 0.0625},
  203. {-0.0625, 0.375, -0.0625, 0.0625, 0.5, 0.0625},
  204. {0.3125, 0.375, -0.0625, 0.4375, 0.5, 0.0625},
  205. {0.125, 0.375, -0.0625, 0.25, 0.5, 0.0625},
  206. {-0.25, 0.375, -0.0625, -0.125, 0.5, 0.0625},
  207. }
  208. },
  209. selection_box = {
  210. type = "fixed",
  211. fixed = {
  212. {0, 0, 0, 0, 0, 0},
  213. }
  214. },
  215. })
  216. minetest.register_craft({
  217. output = "my_misc_doors:door2a 1",
  218. recipe = {
  219. {"default:steel_ingot", "default:steelblock", ""},
  220. {"default:steel_ingot", "default:steel_ingot", ""},
  221. {"default:steelblock", "default:steel_ingot", ""}
  222. }
  223. })