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