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