RealBadAngel
2013-02-01 061e6bbadc89a4e4be2818a691436f8144327cf1
commit | author | age
82cba9 1 --MV cable node boxes
R 2
3
4 minetest.register_alias("mv_cable", "technic:mv_cable")
5
6 minetest.register_craft({
7     output = 'technic:mv_cable 3',
8     recipe ={
9         {'technic:rubber','technic:rubber','technic:rubber'},
10         {'technic:lv_cable','technic:lv_cable','technic:lv_cable'},
11         {'technic:rubber','technic:rubber','technic:rubber'},
12         }
13 }) 
14
15
16 minetest.register_craftitem("technic:mv_cable", {
17     description = "Medium Voltage Copper Cable",
18     stack_max = 99,
19 }) 
20
21 minetest.register_node("technic:mv_cable", {
22     description = "Medium Voltage Copper Cable",
23     tiles = {"technic_mv_cable.png"},
24     inventory_image = "technic_mv_cable_wield.png",
25     wield_image = "technic_mv_cable_wield.png",
26     groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
27     sounds = default.node_sound_wood_defaults(),
28     drop = "technic:mv_cable",
29     mv_cablelike=1,
30     rules_x1=0,
31     rules_x2=0,
32     rules_y1=0,
33     rules_y2=0,
34     rules_z1=0,
35     rules_z2=0,
36     paramtype = "light",
37         drawtype = "nodebox", 
38     selection_box = {
39         type = "fixed",
40                 fixed = {
41         { -0.1 , -0.1 , -0.1 , 0.1 ,  0.1 , 0.1  },
42         }},
43     node_box = {
44         type = "fixed",
45                 fixed = {
46         { -0.1 , -0.1 , -0.1 , 0.1 ,  0.1 , 0.1  },
47         }},
48     on_construct = function(pos)
49     meta=minetest.env:get_meta(pos)
50     meta:set_float("mv_cablelike",1)
51     meta:set_float("x1",0)
52     meta:set_float("x2",0)
53     meta:set_float("y1",0)
54     meta:set_float("y2",0)
55     meta:set_float("z1",0)
56     meta:set_float("z2",0)
57     MV_check_connections (pos)
58     end,
59
60     after_dig_node = function (pos, oldnode, oldmetadata, digger)
61     MV_check_connections_on_destroy (pos)
62     end,
63
64 })
65
66
67 str_y1=        { -0.1 , -0.1 , -0.1 , 0.1 , 0.5, 0.1  }    --0 y+
68 str_x1=        { -0.1 , -0.1 , -0.1 , 0.5, 0.1 , 0.1  }    --0 x+
69 str_z1=        { -0.1 , -0.1 ,  0.1 ,  0.1 , 0.1 , 0.5 }   --0 z+
70 str_z2=        { -0.1 , -0.1, -0.5 ,  0.1 ,  0.1 , 0.1  }  --0 z-
71 str_y2=        { -0.1 , -0.5, -0.1 ,  0.1 ,  0.1 , 0.1  }  --0 y-
72 str_x2=        { -0.5 , -0.1, -0.1 ,  0.1 ,  0.1 , 0.1  }  --0 x-
73
74
75
76 local x1,x2,y1,y2,z1,z2
77 local count=0
78
79 for x1 = 0, 1, 1 do    --x-
80 for x2 = 0, 1, 1 do    --x+
81 for y1 = 0, 1, 1 do    --y-
82 for y2 = 0, 1, 1 do    --y-    
83 for z1 = 0, 1, 1 do    --z-
84 for z2 = 0, 1, 1 do    --z+
85      
86 temp_x1={} temp_x2={} temp_y1={} temp_y2={} temp_z1={} temp_z2={}
87
88 if x1==1 then     temp_x1=str_x1  end 
89 if x2==1 then     temp_x2=str_x2  end 
90 if y1==1 then     temp_y1=str_y1  end 
91 if y2==1 then     temp_y2=str_y2  end 
92 if z1==1 then     temp_z1=str_z1  end 
93 if z2==1 then     temp_z2=str_z2  end 
94
95
96 minetest.register_node("technic:mv_cable"..count, {
97     description = "Medium Voltage Copper Cable",
98     tiles = {"technic_mv_cable.png"},
99     groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1},
100     sounds = default.node_sound_wood_defaults(),
101     drop = "technic:mv_cable",
102     rules_x1=0,
103     rules_x2=0,
104     rules_y1=0,
105     rules_y2=0,
106     rules_z1=0,
107     rules_z2=0,
108     cablelike=1,
109     paramtype = "light",
110         drawtype = "nodebox", 
111     selection_box = {
112         type = "fixed",
113            fixed = {
114         temp_x1,temp_x2,temp_y1,temp_y2,temp_z1,temp_z2,
115         }},
116
117     node_box = {
118         type = "fixed",
119            fixed = {
120         temp_x1,temp_x2,temp_y1,temp_y2,temp_z1,temp_z2,
121         }},
122
123     after_dig_node = function (pos, oldnode, oldmetadata, digger)
124     MV_check_connections_on_destroy (pos)
125     end,
126     
127 })
128
129 count=count+1 end end end end end end
130
131 MV_check_connections = function(pos)
132         local pos1={}
133         pos1.x=pos.x
134         pos1.y=pos.y
135         pos1.z=pos.z
136         
137         pos1.x=pos1.x+1
138         if minetest.env:get_meta(pos1):get_float("mv_cablelike")==1 then
139         x2=1
140         x1=minetest.env:get_meta(pos1):get_float("x1")
141         y1=minetest.env:get_meta(pos1):get_float("y1")
142         y2=minetest.env:get_meta(pos1):get_float("y2")
143         z1=minetest.env:get_meta(pos1):get_float("z1")
144         z2=minetest.env:get_meta(pos1):get_float("z2")
145         rule=make_rule_number(x1,x2,y1,y2,z1,z2)
146         hacky_swap_node(pos1,"technic:mv_cable"..rule)
147         meta=minetest.env:get_meta(pos1)
148         meta:set_float("x2",x2)
149         meta=minetest.env:get_meta(pos)
150         x1=1
151         x2=minetest.env:get_meta(pos):get_float("x2")
152         y1=minetest.env:get_meta(pos):get_float("y1")
153         y2=minetest.env:get_meta(pos):get_float("y2")
154         z1=minetest.env:get_meta(pos):get_float("z1")
155         z2=minetest.env:get_meta(pos):get_float("z2")
156         meta:set_float("x1",x1)
157         rule=make_rule_number(x1,x2,y1,y2,z1,z2)
158         hacky_swap_node(pos,"technic:mv_cable"..rule)
159         end
160
161         pos1.x=pos1.x-2
162         if minetest.env:get_meta(pos1):get_float("mv_cablelike")==1 then
163         x1=1
164         x2=minetest.env:get_meta(pos1):get_float("x2")
165         y1=minetest.env:get_meta(pos1):get_float("y1")
166         y2=minetest.env:get_meta(pos1):get_float("y2")
167         z1=minetest.env:get_meta(pos1):get_float("z1")
168         z2=minetest.env:get_meta(pos1):get_float("z2")
169         rule=make_rule_number(x1,x2,y1,y2,z1,z2)
170         hacky_swap_node(pos1,"technic:mv_cable"..rule)
171         meta=minetest.env:get_meta(pos1)
172         meta:set_float("x1",x1)
173         meta=minetest.env:get_meta(pos)
174         x2=1
175         x1=minetest.env:get_meta(pos):get_float("x1")
176         y1=minetest.env:get_meta(pos):get_float("y1")
177         y2=minetest.env:get_meta(pos):get_float("y2")
178         z1=minetest.env:get_meta(pos):get_float("z1")
179         z2=minetest.env:get_meta(pos):get_float("z2")
180         meta:set_float("x2",x2)
181         rule=make_rule_number(x1,x2,y1,y2,z1,z2)
182         hacky_swap_node(pos,"technic:mv_cable"..rule)
183         end
184
185         pos1.x=pos1.x+1
186         
187         pos1.y=pos1.y+1
188         if minetest.env:get_meta(pos1):get_float("mv_cablelike")==1 then
189         y2=1
190         x1=minetest.env:get_meta(pos1):get_float("x1")
191         x2=minetest.env:get_meta(pos1):get_float("x2")
192         y1=minetest.env:get_meta(pos1):get_float("y1")
193         z1=minetest.env:get_meta(pos1):get_float("z1")
194         z2=minetest.env:get_meta(pos1):get_float("z2")
195         rule=make_rule_number(x1,x2,y1,y2,z1,z2)
196         hacky_swap_node(pos1,"technic:mv_cable"..rule)
197         meta=minetest.env:get_meta(pos1)
198         meta:set_float("y2",y2)
199         meta=minetest.env:get_meta(pos)
200         y1=1
201         x1=minetest.env:get_meta(pos):get_float("x1")
202         x2=minetest.env:get_meta(pos):get_float("x2")
203         y2=minetest.env:get_meta(pos):get_float("y2")
204         z1=minetest.env:get_meta(pos):get_float("z1")
205         z2=minetest.env:get_meta(pos):get_float("z2")
206         meta:set_float("y1",y1)
207         rule=make_rule_number(x1,x2,y1,y2,z1,z2)
208         hacky_swap_node(pos,"technic:mv_cable"..rule)
209         end
210         
211         if minetest.env:get_meta(pos1):get_float("technic_mv_power_machine")==1 then
212         y1=1
213         x1=minetest.env:get_meta(pos):get_float("x1")
214         x2=minetest.env:get_meta(pos):get_float("x2")
215         y2=minetest.env:get_meta(pos):get_float("y2")
216         z1=minetest.env:get_meta(pos):get_float("z1")
217         z2=minetest.env:get_meta(pos):get_float("z2")
218         rule=make_rule_number(x1,x2,y1,y2,z1,z2)
219         hacky_swap_node(pos,"technic:mv_cable"..rule)
220         meta=minetest.env:get_meta(pos)
221         meta:set_float("y1",y1)
222         end
223
224
225         pos1.y=pos1.y-2
226         if minetest.env:get_meta(pos1):get_float("mv_cablelike")==1 then
227         y1=1
228         x1=minetest.env:get_meta(pos1):get_float("x1")
229         x2=minetest.env:get_meta(pos1):get_float("x2")
230         y2=minetest.env:get_meta(pos1):get_float("y2")
231         z1=minetest.env:get_meta(pos1):get_float("z1")
232         z2=minetest.env:get_meta(pos1):get_float("z2")
233         rule=make_rule_number(x1,x2,y1,y2,z1,z2)
234         hacky_swap_node(pos1,"technic:mv_cable"..rule)
235         meta=minetest.env:get_meta(pos1)
236         meta:set_float("y1",y1)
237         meta=minetest.env:get_meta(pos)
238         y2=1
239         x1=minetest.env:get_meta(pos):get_float("x1")
240         x2=minetest.env:get_meta(pos):get_float("x2")
241         y1=minetest.env:get_meta(pos):get_float("y1")
242         z1=minetest.env:get_meta(pos):get_float("z1")
243         z2=minetest.env:get_meta(pos):get_float("z2")
244         meta:set_float("y2",y2)
245         rule=make_rule_number(x1,x2,y1,y2,z1,z2)
246         hacky_swap_node(pos,"technic:mv_cable"..rule)
247         end
248         pos1.y=pos1.y+1
249
250         pos1.z=pos1.z+1
251         if minetest.env:get_meta(pos1):get_float("mv_cablelike")==1 then
252         z2=1
253         x1=minetest.env:get_meta(pos1):get_float("x1")
254         x2=minetest.env:get_meta(pos1):get_float("x2")
255         y1=minetest.env:get_meta(pos1):get_float("y1")
256         y2=minetest.env:get_meta(pos1):get_float("y2")
257         z1=minetest.env:get_meta(pos1):get_float("z1")
258         rule=make_rule_number(x1,x2,y1,y2,z1,z2)
259         hacky_swap_node(pos1,"technic:mv_cable"..rule)
260         meta=minetest.env:get_meta(pos1)
261         meta:set_float("z2",z2)
262         meta=minetest.env:get_meta(pos)
263         z1=1
264         x1=minetest.env:get_meta(pos):get_float("x1")
265         x2=minetest.env:get_meta(pos):get_float("x2")
266         y1=minetest.env:get_meta(pos):get_float("y1")
267         y2=minetest.env:get_meta(pos):get_float("y2")
268         z2=minetest.env:get_meta(pos):get_float("z2")
269         meta:set_float("z1",z1)
270         rule=make_rule_number(x1,x2,y1,y2,z1,z2)
271         hacky_swap_node(pos,"technic:mv_cable"..rule)
272         end
273         pos1.z=pos1.z-2
274         if minetest.env:get_meta(pos1):get_float("mv_cablelike")==1 then
275         z1=1
276         x1=minetest.env:get_meta(pos1):get_float("x1")
277         x2=minetest.env:get_meta(pos1):get_float("x2")
278         y1=minetest.env:get_meta(pos1):get_float("y1")
279         y2=minetest.env:get_meta(pos1):get_float("y2")
280         z2=minetest.env:get_meta(pos1):get_float("z2")
281         rule=make_rule_number(x1,x2,y1,y2,z1,z2)
282         hacky_swap_node(pos1,"technic:mv_cable"..rule)
283         meta=minetest.env:get_meta(pos1)
284         meta:set_float("z1",z1)
285         meta=minetest.env:get_meta(pos)
286         z2=1
287         x1=minetest.env:get_meta(pos):get_float("x1")
288         x2=minetest.env:get_meta(pos):get_float("x2")
289         y1=minetest.env:get_meta(pos):get_float("y1")
290         y2=minetest.env:get_meta(pos):get_float("y2")
291         z1=minetest.env:get_meta(pos):get_float("z1")
292         meta:set_float("z2",z2)
293         rule=make_rule_number(x1,x2,y1,y2,z1,z2)
294         hacky_swap_node(pos,"technic:mv_cable"..rule)
295         end
296         pos1.z=pos1.z+1
297 end    
298
299
300 MV_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("mv_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:mv_cable") end
316         if rule>0  then    hacky_swap_node(pos1,"technic:mv_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("mv_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:mv_cable") end
331         if rule>0  then    hacky_swap_node(pos1,"technic:mv_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("mv_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:mv_cable") end
347         if rule>0  then    hacky_swap_node(pos1,"technic:mv_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("mv_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:mv_cable") end
362         if rule>0  then    hacky_swap_node(pos1,"technic:mv_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("mv_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:mv_cable") end
378         if rule>0  then    hacky_swap_node(pos1,"technic:mv_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("mv_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:mv_cable") end
393         if rule>0  then    hacky_swap_node(pos1,"technic:mv_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    
400