Advertisement
Guest User

Untitled

a guest
Sep 12th, 2012
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.89 KB | None | 0 0
  1. --LV cable node boxes
  2.  
  3.  
  4. minetest.register_alias("lv_cable", "technic:lv_cable")
  5.  
  6. minetest.register_craft({
  7. output = 'technic:lv_cable 6',
  8. recipe = {
  9. {'moreores:copper_ingot', 'moreores:copper_ingot', 'moreores:copper_ingot'},
  10. }
  11. })
  12.  
  13. minetest.register_craftitem("technic:lv_cable", {
  14. description = "Low Voltage Copper Cable",
  15. stack_max = 99,
  16. })
  17.  
  18. minetest.register_node("technic:lv_cable", {
  19. description = "Low Voltage Copper Cable",
  20. tiles = {"technic_lv_cable.png"},
  21. inventory_image = "technic_lv_cable_wield.png",
  22. groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
  23. sounds = default.node_sound_wood_defaults(),
  24. drop = "technic:lv_cable",
  25. cablelike=1,
  26. rules_x1=0,
  27. rules_x2=0,
  28. rules_y1=0,
  29. rules_y2=0,
  30. rules_z1=0,
  31. rules_z2=0,
  32. paramtype = "light",
  33. drawtype = "nodebox",
  34. selection_box = {
  35. type = "fixed",
  36. fixed = {
  37. { -0.1 , -0.1 , -0.1 , 0.1 , 0.1 , 0.1 },
  38. }},
  39. node_box = {
  40. type = "fixed",
  41. fixed = {
  42. { -0.1 , -0.1 , -0.1 , 0.1 , 0.1 , 0.1 },
  43. }},
  44. on_construct = function(pos)
  45. meta=minetest.env:get_meta(pos)
  46. meta:set_float("cablelike",1)
  47. meta:set_float("x1",0)
  48. meta:set_float("x2",0)
  49. meta:set_float("y1",0)
  50. meta:set_float("y2",0)
  51. meta:set_float("z1",0)
  52. meta:set_float("z2",0)
  53. check_connections (pos)
  54. end,
  55.  
  56. after_dig_node = function (pos, oldnode, oldmetadata, digger)
  57. check_connections_on_destroy (pos)
  58. end,
  59.  
  60. })
  61.  
  62.  
  63. str_y1= { -0.1 , -0.1 , -0.1 , 0.1 , 0.5, 0.1 } --0 y+
  64. str_x1= { -0.1 , -0.1 , -0.1 , 0.5, 0.1 , 0.1 } --0 x+
  65. str_z1= { -0.1 , -0.1 , 0.1 , 0.1 , 0.1 , 0.5 } --0 z+
  66. str_z2= { -0.1 , -0.1, -0.5 , 0.1 , 0.1 , 0.1 } --0 z-
  67. str_y2= { -0.1 , -0.5, -0.1 , 0.1 , 0.1 , 0.1 } --0 y-
  68. str_x2= { -0.5 , -0.1, -0.1 , 0.1 , 0.1 , 0.1 } --0 x-
  69.  
  70.  
  71.  
  72. local x1,x2,y1,y2,z1,z2
  73. local count=0
  74.  
  75. for x1 = 0, 1, 1 do --x-
  76. for x2 = 0, 1, 1 do --x+
  77. for y1 = 0, 1, 1 do --y-
  78. for y2 = 0, 1, 1 do --y-
  79. for z1 = 0, 1, 1 do --z-
  80. for z2 = 0, 1, 1 do --z+
  81.  
  82. temp_x1={} temp_x2={} temp_y1={} temp_y2={} temp_z1={} temp_z2={}
  83.  
  84. if x1==1 then temp_x1=str_x1 end
  85. if x2==1 then temp_x2=str_x2 end
  86. if y1==1 then temp_y1=str_y1 end
  87. if y2==1 then temp_y2=str_y2 end
  88. if z1==1 then temp_z1=str_z1 end
  89. if z2==1 then temp_z2=str_z2 end
  90.  
  91.  
  92. minetest.register_node("technic:lv_cable"..count, {
  93. description = "Low Voltage Copper Cable",
  94. tiles = {"technic_lv_cable.png"},
  95. groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1},
  96. sounds = default.node_sound_wood_defaults(),
  97. drop = "technic:lv_cable",
  98. rules_x1=0,
  99. rules_x2=0,
  100. rules_y1=0,
  101. rules_y2=0,
  102. rules_z1=0,
  103. rules_z2=0,
  104. cablelike=1,
  105. paramtype = "light",
  106. drawtype = "nodebox",
  107. selection_box = {
  108. type = "fixed",
  109. fixed = {
  110. temp_x1,temp_x2,temp_y1,temp_y2,temp_z1,temp_z2,
  111. }},
  112.  
  113. node_box = {
  114. type = "fixed",
  115. fixed = {
  116. temp_x1,temp_x2,temp_y1,temp_y2,temp_z1,temp_z2,
  117. }},
  118.  
  119. after_dig_node = function (pos, oldnode, oldmetadata, digger)
  120. check_connections_on_destroy (pos)
  121. end,
  122.  
  123. })
  124.  
  125. count=count+1 end end end end end end
  126.  
  127. check_connections = function(pos)
  128. local pos1={}
  129. pos1.x=pos.x
  130. pos1.y=pos.y
  131. pos1.z=pos.z
  132.  
  133. pos1.x=pos1.x+1
  134. if minetest.env:get_meta(pos1):get_float("cablelike")==1 then
  135. x2=1
  136. x1=minetest.env:get_meta(pos1):get_float("x1")
  137. y1=minetest.env:get_meta(pos1):get_float("y1")
  138. y2=minetest.env:get_meta(pos1):get_float("y2")
  139. z1=minetest.env:get_meta(pos1):get_float("z1")
  140. z2=minetest.env:get_meta(pos1):get_float("z2")
  141. rule=make_rule_number(x1,x2,y1,y2,z1,z2)
  142. hacky_swap_node(pos1,"technic:lv_cable"..rule)
  143. meta=minetest.env:get_meta(pos1)
  144. meta:set_float("x2",x2)
  145. meta=minetest.env:get_meta(pos)
  146. x1=1
  147. x2=minetest.env:get_meta(pos):get_float("x2")
  148. y1=minetest.env:get_meta(pos):get_float("y1")
  149. y2=minetest.env:get_meta(pos):get_float("y2")
  150. z1=minetest.env:get_meta(pos):get_float("z1")
  151. z2=minetest.env:get_meta(pos):get_float("z2")
  152. meta:set_float("x1",x1)
  153. rule=make_rule_number(x1,x2,y1,y2,z1,z2)
  154. hacky_swap_node(pos,"technic:lv_cable"..rule)
  155. end
  156.  
  157. pos1.x=pos1.x-2
  158. if minetest.env:get_meta(pos1):get_float("cablelike")==1 then
  159. x1=1
  160. x2=minetest.env:get_meta(pos1):get_float("x2")
  161. y1=minetest.env:get_meta(pos1):get_float("y1")
  162. y2=minetest.env:get_meta(pos1):get_float("y2")
  163. z1=minetest.env:get_meta(pos1):get_float("z1")
  164. z2=minetest.env:get_meta(pos1):get_float("z2")
  165. rule=make_rule_number(x1,x2,y1,y2,z1,z2)
  166. hacky_swap_node(pos1,"technic:lv_cable"..rule)
  167. meta=minetest.env:get_meta(pos1)
  168. meta:set_float("x1",x1)
  169. meta=minetest.env:get_meta(pos)
  170. x2=1
  171. x1=minetest.env:get_meta(pos):get_float("x1")
  172. y1=minetest.env:get_meta(pos):get_float("y1")
  173. y2=minetest.env:get_meta(pos):get_float("y2")
  174. z1=minetest.env:get_meta(pos):get_float("z1")
  175. z2=minetest.env:get_meta(pos):get_float("z2")
  176. meta:set_float("x2",x2)
  177. rule=make_rule_number(x1,x2,y1,y2,z1,z2)
  178. hacky_swap_node(pos,"technic:lv_cable"..rule)
  179. end
  180.  
  181. pos1.x=pos1.x+1
  182.  
  183. pos1.y=pos1.y+1
  184. if minetest.env:get_meta(pos1):get_float("cablelike")==1 then
  185. y2=1
  186. x1=minetest.env:get_meta(pos1):get_float("x1")
  187. x2=minetest.env:get_meta(pos1):get_float("x2")
  188. y1=minetest.env:get_meta(pos1):get_float("y1")
  189. z1=minetest.env:get_meta(pos1):get_float("z1")
  190. z2=minetest.env:get_meta(pos1):get_float("z2")
  191. rule=make_rule_number(x1,x2,y1,y2,z1,z2)
  192. hacky_swap_node(pos1,"technic:lv_cable"..rule)
  193. meta=minetest.env:get_meta(pos1)
  194. meta:set_float("y2",y2)
  195. meta=minetest.env:get_meta(pos)
  196. y1=1
  197. x1=minetest.env:get_meta(pos):get_float("x1")
  198. x2=minetest.env:get_meta(pos):get_float("x2")
  199. y2=minetest.env:get_meta(pos):get_float("y2")
  200. z1=minetest.env:get_meta(pos):get_float("z1")
  201. z2=minetest.env:get_meta(pos):get_float("z2")
  202. meta:set_float("y1",y1)
  203. rule=make_rule_number(x1,x2,y1,y2,z1,z2)
  204. hacky_swap_node(pos,"technic:lv_cable"..rule)
  205. end
  206.  
  207. if minetest.env:get_meta(pos1):get_float("technic_power_machine")==1 then
  208. y1=1
  209. x1=minetest.env:get_meta(pos):get_float("x1")
  210. x2=minetest.env:get_meta(pos):get_float("x2")
  211. y2=minetest.env:get_meta(pos):get_float("y2")
  212. z1=minetest.env:get_meta(pos):get_float("z1")
  213. z2=minetest.env:get_meta(pos):get_float("z2")
  214. rule=make_rule_number(x1,x2,y1,y2,z1,z2)
  215. hacky_swap_node(pos,"technic:lv_cable"..rule)
  216. meta=minetest.env:get_meta(pos)
  217. meta:set_float("y1",y1)
  218. end
  219.  
  220.  
  221. pos1.y=pos1.y-2
  222. if minetest.env:get_meta(pos1):get_float("cablelike")==1 then
  223. y1=1
  224. x1=minetest.env:get_meta(pos1):get_float("x1")
  225. x2=minetest.env:get_meta(pos1):get_float("x2")
  226. y2=minetest.env:get_meta(pos1):get_float("y2")
  227. z1=minetest.env:get_meta(pos1):get_float("z1")
  228. z2=minetest.env:get_meta(pos1):get_float("z2")
  229. rule=make_rule_number(x1,x2,y1,y2,z1,z2)
  230. hacky_swap_node(pos1,"technic:lv_cable"..rule)
  231. meta=minetest.env:get_meta(pos1)
  232. meta:set_float("y1",y1)
  233. meta=minetest.env:get_meta(pos)
  234. y2=1
  235. x1=minetest.env:get_meta(pos):get_float("x1")
  236. x2=minetest.env:get_meta(pos):get_float("x2")
  237. y1=minetest.env:get_meta(pos):get_float("y1")
  238. z1=minetest.env:get_meta(pos):get_float("z1")
  239. z2=minetest.env:get_meta(pos):get_float("z2")
  240. meta:set_float("y2",y2)
  241. rule=make_rule_number(x1,x2,y1,y2,z1,z2)
  242. hacky_swap_node(pos,"technic:lv_cable"..rule)
  243. end
  244. pos1.y=pos1.y+1
  245.  
  246. pos1.z=pos1.z+1
  247. if minetest.env:get_meta(pos1):get_float("cablelike")==1 then
  248. z2=1
  249. x1=minetest.env:get_meta(pos1):get_float("x1")
  250. x2=minetest.env:get_meta(pos1):get_float("x2")
  251. y1=minetest.env:get_meta(pos1):get_float("y1")
  252. y2=minetest.env:get_meta(pos1):get_float("y2")
  253. z1=minetest.env:get_meta(pos1):get_float("z1")
  254. rule=make_rule_number(x1,x2,y1,y2,z1,z2)
  255. hacky_swap_node(pos1,"technic:lv_cable"..rule)
  256. meta=minetest.env:get_meta(pos1)
  257. meta:set_float("z2",z2)
  258. meta=minetest.env:get_meta(pos)
  259. z1=1
  260. x1=minetest.env:get_meta(pos):get_float("x1")
  261. x2=minetest.env:get_meta(pos):get_float("x2")
  262. y1=minetest.env:get_meta(pos):get_float("y1")
  263. y2=minetest.env:get_meta(pos):get_float("y2")
  264. z2=minetest.env:get_meta(pos):get_float("z2")
  265. meta:set_float("z1",z1)
  266. rule=make_rule_number(x1,x2,y1,y2,z1,z2)
  267. hacky_swap_node(pos,"technic:lv_cable"..rule)
  268. end
  269. pos1.z=pos1.z-2
  270. if minetest.env:get_meta(pos1):get_float("cablelike")==1 then
  271. z1=1
  272. x1=minetest.env:get_meta(pos1):get_float("x1")
  273. x2=minetest.env:get_meta(pos1):get_float("x2")
  274. y1=minetest.env:get_meta(pos1):get_float("y1")
  275. y2=minetest.env:get_meta(pos1):get_float("y2")
  276. z2=minetest.env:get_meta(pos1):get_float("z2")
  277. rule=make_rule_number(x1,x2,y1,y2,z1,z2)
  278. hacky_swap_node(pos1,"technic:lv_cable"..rule)
  279. meta=minetest.env:get_meta(pos1)
  280. meta:set_float("z1",z1)
  281. meta=minetest.env:get_meta(pos)
  282. z2=1
  283. x1=minetest.env:get_meta(pos):get_float("x1")
  284. x2=minetest.env:get_meta(pos):get_float("x2")
  285. y1=minetest.env:get_meta(pos):get_float("y1")
  286. y2=minetest.env:get_meta(pos):get_float("y2")
  287. z1=minetest.env:get_meta(pos):get_float("z1")
  288. meta:set_float("z2",z2)
  289. rule=make_rule_number(x1,x2,y1,y2,z1,z2)
  290. hacky_swap_node(pos,"technic:lv_cable"..rule)
  291. end
  292. pos1.z=pos1.z+1
  293. end
  294.  
  295. function make_rule_number (x1,x2,y1,y2,z1,z2)
  296. local temp= z2+z1*2+y2*4+y1*8+x2*16+x1*32
  297. return temp
  298. end
  299.  
  300. check_connections_on_destroy = function(pos)
  301. local pos1={}
  302. pos1.x=pos.x
  303. pos1.y=pos.y
  304. pos1.z=pos.z
  305.  
  306. pos1.x=pos1.x+1
  307. if minetest.env:get_meta(pos1):get_float("cablelike")==1 then
  308. x2=0
  309. x1=minetest.env:get_meta(pos1):get_float("x1")
  310. y1=minetest.env:get_meta(pos1):get_float("y1")
  311. y2=minetest.env:get_meta(pos1):get_float("y2")
  312. z1=minetest.env:get_meta(pos1):get_float("z1")
  313. z2=minetest.env:get_meta(pos1):get_float("z2")
  314. rule=make_rule_number(x1,x2,y1,y2,z1,z2)
  315. if rule==0 then hacky_swap_node(pos1,"technic:lv_cable") end
  316. if rule>0 then hacky_swap_node(pos1,"technic:lv_cable"..rule) end
  317. meta=minetest.env:get_meta(pos1)
  318. meta:set_float("x2",x2)
  319. end
  320.  
  321. pos1.x=pos1.x-2
  322. if minetest.env:get_meta(pos1):get_float("cablelike")==1 then
  323. x1=0
  324. x2=minetest.env:get_meta(pos1):get_float("x2")
  325. y1=minetest.env:get_meta(pos1):get_float("y1")
  326. y2=minetest.env:get_meta(pos1):get_float("y2")
  327. z1=minetest.env:get_meta(pos1):get_float("z1")
  328. z2=minetest.env:get_meta(pos1):get_float("z2")
  329. rule=make_rule_number(x1,x2,y1,y2,z1,z2)
  330. if rule==0 then hacky_swap_node(pos1,"technic:lv_cable") end
  331. if rule>0 then hacky_swap_node(pos1,"technic:lv_cable"..rule) end
  332. meta=minetest.env:get_meta(pos1)
  333. meta:set_float("x1",x1)
  334. end
  335. pos1.x=pos1.x+1
  336.  
  337. pos1.y=pos1.y+1
  338. if minetest.env:get_meta(pos1):get_float("cablelike")==1 then
  339. y2=0
  340. x1=minetest.env:get_meta(pos1):get_float("x1")
  341. x2=minetest.env:get_meta(pos1):get_float("x2")
  342. y1=minetest.env:get_meta(pos1):get_float("y1")
  343. z1=minetest.env:get_meta(pos1):get_float("z1")
  344. z2=minetest.env:get_meta(pos1):get_float("z2")
  345. rule=make_rule_number(x1,x2,y1,y2,z1,z2)
  346. if rule==0 then hacky_swap_node(pos1,"technic:lv_cable") end
  347. if rule>0 then hacky_swap_node(pos1,"technic:lv_cable"..rule) end
  348. meta=minetest.env:get_meta(pos1)
  349. meta:set_float("y2",y2)
  350. end
  351.  
  352. pos1.y=pos1.y-2
  353. if minetest.env:get_meta(pos1):get_float("cablelike")==1 then
  354. y1=0
  355. x1=minetest.env:get_meta(pos1):get_float("x1")
  356. x2=minetest.env:get_meta(pos1):get_float("x2")
  357. y2=minetest.env:get_meta(pos1):get_float("y2")
  358. z1=minetest.env:get_meta(pos1):get_float("z1")
  359. z2=minetest.env:get_meta(pos1):get_float("z2")
  360. rule=make_rule_number(x1,x2,y1,y2,z1,z2)
  361. if rule==0 then hacky_swap_node(pos1,"technic:lv_cable") end
  362. if rule>0 then hacky_swap_node(pos1,"technic:lv_cable"..rule) end
  363. meta=minetest.env:get_meta(pos1)
  364. meta:set_float("y1",y1)
  365. end
  366. pos1.y=pos1.y+1
  367.  
  368. pos1.z=pos1.z+1
  369. if minetest.env:get_meta(pos1):get_float("cablelike")==1 then
  370. z2=0
  371. x1=minetest.env:get_meta(pos1):get_float("x1")
  372. x2=minetest.env:get_meta(pos1):get_float("x2")
  373. y1=minetest.env:get_meta(pos1):get_float("y1")
  374. y2=minetest.env:get_meta(pos1):get_float("y2")
  375. z1=minetest.env:get_meta(pos1):get_float("z1")
  376. rule=make_rule_number(x1,x2,y1,y2,z1,z2)
  377. if rule==0 then hacky_swap_node(pos1,"technic:lv_cable") end
  378. if rule>0 then hacky_swap_node(pos1,"technic:lv_cable"..rule) end
  379. meta=minetest.env:get_meta(pos1)
  380. meta:set_float("z2",z2)
  381. end
  382.  
  383. pos1.z=pos1.z-2
  384. if minetest.env:get_meta(pos1):get_float("cablelike")==1 then
  385. z1=0
  386. x1=minetest.env:get_meta(pos1):get_float("x1")
  387. x2=minetest.env:get_meta(pos1):get_float("x2")
  388. y1=minetest.env:get_meta(pos1):get_float("y1")
  389. y2=minetest.env:get_meta(pos1):get_float("y2")
  390. z2=minetest.env:get_meta(pos1):get_float("z2")
  391. rule=make_rule_number(x1,x2,y1,y2,z1,z2)
  392. if rule==0 then hacky_swap_node(pos1,"technic:lv_cable") end
  393. if rule>0 then hacky_swap_node(pos1,"technic:lv_cable"..rule) end
  394. meta=minetest.env:get_meta(pos1)
  395. meta:set_float("z1",z1)
  396. end
  397. pos1.y=pos1.y+1
  398.  
  399. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement