commit | author | age
|
f4302f
|
1 |
--Minetest 0.4.7 mod: concrete |
0ca19d
|
2 |
--(c) 2013 by RealBadAngel <mk@realbadangel.pl> |
R |
3 |
|
|
4 |
minetest.register_craft({ |
f4302f
|
5 |
output = 'technic:rebar 6', |
0ca19d
|
6 |
recipe = { |
R |
7 |
{'','', 'default:steel_ingot'}, |
|
8 |
{'','default:steel_ingot',''}, |
|
9 |
{'default:steel_ingot', '', ''}, |
|
10 |
} |
|
11 |
}) |
|
12 |
|
|
13 |
minetest.register_craft({ |
f4302f
|
14 |
output = 'technic:concrete 5', |
0ca19d
|
15 |
recipe = { |
R |
16 |
{'default:stone','technic:rebar','default:stone'}, |
|
17 |
{'technic:rebar','default:stone','technic:rebar'}, |
|
18 |
{'default:stone','technic:rebar','default:stone'}, |
|
19 |
} |
|
20 |
}) |
|
21 |
|
|
22 |
minetest.register_craft({ |
f4302f
|
23 |
output = 'technic:concrete_post_platform 6', |
0ca19d
|
24 |
recipe = { |
R |
25 |
{'technic:concrete','technic:concrete_post','technic:concrete'}, |
|
26 |
} |
|
27 |
}) |
|
28 |
|
|
29 |
minetest.register_craft({ |
f4302f
|
30 |
output = 'technic:concrete_post 12', |
0ca19d
|
31 |
recipe = { |
R |
32 |
{'default:stone','technic:rebar','default:stone'}, |
|
33 |
{'default:stone','technic:rebar','default:stone'}, |
|
34 |
{'default:stone','technic:rebar','default:stone'}, |
|
35 |
} |
|
36 |
}) |
|
37 |
|
6055ed
|
38 |
minetest.register_craft({ |
R |
39 |
output = 'technic:blast_resistant_concrete 5', |
|
40 |
recipe = { |
|
41 |
{'technic:concrete','technic:composite_plate','technic:concrete'}, |
|
42 |
{'technic:composite_plate','technic:concrete','technic:composite_plate'}, |
|
43 |
{'technic:concrete','technic:composite_plate','technic:concrete'}, |
|
44 |
} |
|
45 |
}) |
|
46 |
|
0ca19d
|
47 |
platform_box = {-0.5 , 0.3 , -0.5 , 0.5 , 0.5 , 0.5 } |
R |
48 |
post_str_y={ -0.15 , -0.5 , -0.15 , 0.15 , 0.5 , 0.15 } |
|
49 |
post_str_x1={ 0 , -0.3 , -0.1, 0.5 , 0.3 , 0.1 } -- x+ |
|
50 |
post_str_z1={ -0.1 , -0.3 , 0, 0.1 , 0.3 , 0.5 } -- z+ |
|
51 |
post_str_x2={ 0 , -0.3 , -0.1, -0.5 , 0.3 , 0.1 } -- x- |
|
52 |
post_str_z2={ -0.1 , -0.3 , 0, 0.1 , 0.3 , -0.5 } -- z- |
|
53 |
|
|
54 |
minetest.register_craftitem(":technic:rebar", { |
|
55 |
description = "Rebar", |
|
56 |
inventory_image = "technic_rebar.png", |
6055ed
|
57 |
stack_max = 99, |
R |
58 |
}) |
|
59 |
|
|
60 |
minetest.register_craftitem(":technic:blast_resistant_concrete", { |
|
61 |
description = "Blast-resistant Concrete Block", |
|
62 |
inventory_image = "technic_blast_resistant_concrete_block.png", |
0ca19d
|
63 |
stack_max = 99, |
R |
64 |
}) |
|
65 |
|
|
66 |
minetest.register_craftitem(":technic:concrete", { |
|
67 |
description = "Concrete Block", |
|
68 |
inventory_image = "technic_concrete_block.png", |
|
69 |
stack_max = 99, |
|
70 |
}) |
|
71 |
|
|
72 |
minetest.register_craftitem(":technic:concrete_post", { |
|
73 |
description = "Concrete Post", |
|
74 |
stack_max = 99, |
|
75 |
}) |
|
76 |
|
|
77 |
minetest.register_craftitem(":technic:concrete_post_platform", { |
|
78 |
description = "Concrete Post Platform", |
|
79 |
stack_max = 99, |
|
80 |
}) |
|
81 |
|
|
82 |
minetest.register_node(":technic:concrete", { |
|
83 |
description = "Concrete Block", |
|
84 |
tile_images = {"technic_concrete_block.png",}, |
|
85 |
is_ground_content = true, |
|
86 |
groups={cracky=1,level=2}, |
6055ed
|
87 |
sounds = default.node_sound_stone_defaults(), |
R |
88 |
paramtype = "light", |
|
89 |
light_source = 0, |
|
90 |
sunlight_propagates = true, |
|
91 |
on_construct = function(pos) |
|
92 |
meta=minetest.env:get_meta(pos) |
|
93 |
meta:set_float("postlike",1) |
|
94 |
check_post_connections (pos,1) |
|
95 |
end, |
|
96 |
after_dig_node = function (pos, oldnode, oldmetadata, digger) |
|
97 |
check_post_connections (pos,0) |
|
98 |
end, |
|
99 |
}) |
|
100 |
|
|
101 |
minetest.register_node(":technic:blast_resistant_concrete", { |
|
102 |
description = "Blast-resistant Concrete Block", |
|
103 |
tile_images = {"technic_blast_resistant_concrete_block.png",}, |
|
104 |
is_ground_content = true, |
|
105 |
groups={cracky=1,level=3}, |
0ca19d
|
106 |
sounds = default.node_sound_stone_defaults(), |
R |
107 |
paramtype = "light", |
|
108 |
light_source = 0, |
|
109 |
sunlight_propagates = true, |
|
110 |
on_construct = function(pos) |
|
111 |
meta=minetest.env:get_meta(pos) |
|
112 |
meta:set_float("postlike",1) |
|
113 |
check_post_connections (pos,1) |
|
114 |
end, |
|
115 |
after_dig_node = function (pos, oldnode, oldmetadata, digger) |
|
116 |
check_post_connections (pos,0) |
|
117 |
end, |
|
118 |
}) |
|
119 |
|
|
120 |
minetest.register_node(":technic:concrete_post_platform", { |
|
121 |
description = "Concrete Post Platform", |
|
122 |
tile_images = {"technic_concrete_block.png",}, |
|
123 |
is_ground_content = true, |
|
124 |
groups={cracky=1,level=2}, |
|
125 |
sounds = default.node_sound_stone_defaults(), |
|
126 |
paramtype = "light", |
|
127 |
light_source = 0, |
|
128 |
sunlight_propagates = true, |
|
129 |
drawtype = "nodebox", |
|
130 |
selection_box = { |
|
131 |
type = "fixed", |
|
132 |
fixed = {platform_box} |
|
133 |
}, |
|
134 |
node_box = { |
|
135 |
type = "fixed", |
|
136 |
fixed = {platform_box} |
|
137 |
}, |
|
138 |
on_place=function (itemstack, placer, pointed_thing) |
|
139 |
local node=minetest.env:get_node(pointed_thing.under) |
|
140 |
if minetest.get_item_group(node.name, "concrete_post")==0 then |
|
141 |
return minetest.item_place_node(itemstack, placer, pointed_thing) |
|
142 |
end |
|
143 |
local meta=minetest.env:get_meta(pointed_thing.under) |
|
144 |
y1=meta:get_float("y1") |
|
145 |
platform=meta:get_float("platform") |
|
146 |
if y1==1 or platform==1 then |
|
147 |
return minetest.item_place_node(itemstack, placer, pointed_thing) |
|
148 |
end |
|
149 |
y2=meta:get_float("y2") |
|
150 |
x1=meta:get_float("x1") |
|
151 |
x2=meta:get_float("x2") |
|
152 |
z1=meta:get_float("z1") |
|
153 |
z2=meta:get_float("z2") |
|
154 |
rule=make_post_rule_number(x1,x2,y1,y2,z1,z2,1) |
|
155 |
meta:set_float("platform",1) |
|
156 |
hacky_swap_posts(pointed_thing.under,"technic:concrete_post"..rule) |
|
157 |
itemstack:take_item() |
|
158 |
placer:set_wielded_item(itemstack) |
|
159 |
return itemstack |
|
160 |
end, |
|
161 |
}) |
|
162 |
|
|
163 |
|
|
164 |
minetest.register_node(":technic:concrete_post", { |
|
165 |
description = "Concrete Post", |
|
166 |
tiles = {"technic_concrete_block.png"}, |
|
167 |
groups={cracky=1,level=2,concrete_post=1}, |
|
168 |
sounds = default.node_sound_stone_defaults(), |
|
169 |
paramtype = "light", |
|
170 |
light_source = 0, |
|
171 |
sunlight_propagates = true, |
|
172 |
drawtype = "nodebox", |
|
173 |
selection_box = { |
|
174 |
type = "fixed", |
|
175 |
fixed = { -0.15 , -0.5 , -0.15 , 0.15 , 0.5 , 0.15 }}, |
|
176 |
node_box = { |
|
177 |
type = "fixed", |
|
178 |
fixed = {-0.15 , -0.5 , -0.15 , 0.15 , 0.5 , 0.15 }}, |
|
179 |
on_construct = function(pos) |
|
180 |
meta=minetest.env:get_meta(pos) |
|
181 |
meta:set_int("postlike",1) |
|
182 |
meta:set_int("platform",0) |
|
183 |
meta:set_int("x1",0) |
|
184 |
meta:set_int("x2",0) |
|
185 |
meta:set_int("y1",0) |
|
186 |
meta:set_int("y2",0) |
|
187 |
meta:set_int("z1",0) |
|
188 |
meta:set_int("z2",0) |
|
189 |
check_post_connections (pos,1) |
|
190 |
end, |
|
191 |
|
|
192 |
after_dig_node = function (pos, oldnode, oldmetadata, digger) |
|
193 |
check_post_connections (pos,0) |
|
194 |
end, |
|
195 |
|
|
196 |
}) |
|
197 |
|
|
198 |
local x1,x2,y1,z1,z2 |
|
199 |
local count=0 |
|
200 |
|
|
201 |
for x1 = 0, 1, 1 do --x- |
f4302f
|
202 |
for x2 = 0, 1, 1 do --x+ |
R |
203 |
for z1 = 0, 1, 1 do --z- |
|
204 |
for z2 = 0, 1, 1 do --z+ |
0ca19d
|
205 |
|
f4302f
|
206 |
temp_x1={} temp_x2={} temp_z1={} temp_z2={} |
0ca19d
|
207 |
|
f4302f
|
208 |
if x1==1 then temp_x1=post_str_x1 end |
R |
209 |
if x2==1 then temp_x2=post_str_x2 end |
|
210 |
if z1==1 then temp_z1=post_str_z1 end |
|
211 |
if z2==1 then temp_z2=post_str_z2 end |
0ca19d
|
212 |
|
R |
213 |
|
|
214 |
minetest.register_node(":technic:concrete_post"..count, { |
|
215 |
description = "Concrete Post", |
|
216 |
tiles = {"technic_concrete_block.png"}, |
|
217 |
groups={cracky=1,level=2,not_in_creative_inventory=1,concrete_post=1}, |
|
218 |
sounds = default.node_sound_stone_defaults(), |
|
219 |
drop = "technic:concrete_post", |
|
220 |
paramtype = "light", |
|
221 |
light_source = 0, |
|
222 |
sunlight_propagates = true, |
|
223 |
drawtype = "nodebox", |
|
224 |
selection_box = { |
|
225 |
type = "fixed", |
|
226 |
fixed = { |
|
227 |
temp_x1,temp_x2,post_str_y,temp_z1,temp_z2, |
|
228 |
}}, |
|
229 |
|
|
230 |
node_box = { |
|
231 |
type = "fixed", |
|
232 |
fixed = { |
|
233 |
temp_x1,temp_x2,post_str_y,temp_z1,temp_z2, |
|
234 |
}}, |
|
235 |
|
|
236 |
after_dig_node = function (pos, oldnode, oldmetadata, digger) |
|
237 |
check_post_connections (pos,0) |
|
238 |
end, |
|
239 |
|
|
240 |
}) |
|
241 |
|
|
242 |
minetest.register_node(":technic:concrete_post"..count+16, { |
|
243 |
description = "Concrete Post", |
|
244 |
tiles = {"technic_concrete_block.png"}, |
|
245 |
groups={cracky=1,level=2,not_in_creative_inventory=1,concrete_post=1}, |
|
246 |
sounds = default.node_sound_stone_defaults(), |
|
247 |
drop = "technic:concrete_post_platform", |
|
248 |
paramtype = "light", |
|
249 |
light_source = 0, |
|
250 |
sunlight_propagates = true, |
|
251 |
drawtype = "nodebox", |
|
252 |
selection_box = { |
|
253 |
type = "fixed", |
|
254 |
fixed = { |
|
255 |
platform_box,temp_x1,temp_x2,post_str_y,temp_z1,temp_z2, |
|
256 |
}}, |
|
257 |
|
|
258 |
node_box = { |
|
259 |
type = "fixed", |
|
260 |
fixed = { |
|
261 |
platform_box,temp_x1,temp_x2,post_str_y,temp_z1,temp_z2, |
|
262 |
}}, |
|
263 |
|
|
264 |
after_dig_node = function (pos, oldnode, oldmetadata, digger) |
|
265 |
dig_post_with_platform (pos,oldnode,oldmetadata) |
|
266 |
end, |
|
267 |
}) |
|
268 |
|
|
269 |
count=count+1 end end end end |
|
270 |
|
|
271 |
minetest.register_node(":technic:concrete_post32", { |
|
272 |
description = "Concrete Post", |
|
273 |
tiles = {"technic_concrete_block.png"}, |
|
274 |
groups={cracky=1,level=2,not_in_creative_inventory=1,concrete_post=1}, |
|
275 |
sounds = default.node_sound_stone_defaults(), |
|
276 |
drop = "technic:concrete_post", |
|
277 |
paramtype = "light", |
|
278 |
light_source = 0, |
|
279 |
sunlight_propagates = true, |
|
280 |
drawtype = "nodebox", |
|
281 |
selection_box = { |
|
282 |
type = "fixed", |
|
283 |
fixed = {-0.5,-0.3,-0.1,0.5,0.3,0.1}, |
|
284 |
}, |
|
285 |
node_box = { |
|
286 |
type = "fixed", |
|
287 |
fixed = { |
|
288 |
post_str_x1,post_str_x2, |
|
289 |
}}, |
|
290 |
|
|
291 |
after_dig_node = function (pos, oldnode, oldmetadata, digger) |
|
292 |
check_post_connections (pos,0) |
|
293 |
end, |
|
294 |
}) |
|
295 |
minetest.register_node(":technic:concrete_post33", { |
|
296 |
description = "Concrete Post", |
|
297 |
tiles = {"technic_concrete_block.png"}, |
|
298 |
groups={cracky=1,level=2,not_in_creative_inventory=1,concrete_post=1}, |
|
299 |
sounds = default.node_sound_stone_defaults(), |
|
300 |
drop = "technic:concrete_post", |
|
301 |
paramtype = "light", |
|
302 |
light_source = 0, |
|
303 |
sunlight_propagates = true, |
|
304 |
drawtype = "nodebox", |
|
305 |
selection_box = { |
|
306 |
type = "fixed", |
|
307 |
fixed = { |
|
308 |
post_str_z1,post_str_z2, |
|
309 |
}}, |
|
310 |
node_box = { |
|
311 |
type = "fixed", |
|
312 |
fixed = { |
|
313 |
post_str_z1,post_str_z2, |
|
314 |
}}, |
|
315 |
|
|
316 |
after_dig_node = function (pos, oldnode, oldmetadata, digger) |
f4302f
|
317 |
check_post_connections (pos,0) |
0ca19d
|
318 |
end, |
R |
319 |
}) |
|
320 |
|
|
321 |
minetest.register_node(":technic:concrete_post34", { |
|
322 |
description = "Concrete Post", |
|
323 |
tiles = {"technic_concrete_block.png"}, |
|
324 |
groups={cracky=1,level=2,not_in_creative_inventory=1,concrete_post=1}, |
|
325 |
sounds = default.node_sound_stone_defaults(), |
|
326 |
drop = "technic:concrete_post_platform", |
|
327 |
paramtype = "light", |
|
328 |
light_source = 0, |
|
329 |
sunlight_propagates = true, |
|
330 |
drawtype = "nodebox", |
|
331 |
selection_box = { |
|
332 |
type = "fixed", |
|
333 |
fixed = { |
|
334 |
platform_box,post_str_x1,post_str_x2, |
|
335 |
}}, |
|
336 |
node_box = { |
|
337 |
type = "fixed", |
|
338 |
fixed = { |
|
339 |
platform_box,post_str_x1,post_str_x2, |
|
340 |
}}, |
|
341 |
|
|
342 |
after_dig_node = function (pos, oldnode, oldmetadata, digger) |
|
343 |
dig_post_with_platform (pos,oldnode,oldmetadata) |
|
344 |
end, |
|
345 |
}) |
|
346 |
minetest.register_node(":technic:concrete_post35", { |
|
347 |
description = "Concrete Post", |
|
348 |
tiles = {"technic_concrete_block.png"}, |
|
349 |
groups={cracky=1,level=2,not_in_creative_inventory=1,concrete_post=1}, |
|
350 |
sounds = default.node_sound_stone_defaults(), |
|
351 |
drop = "technic:concrete_post_platform", |
|
352 |
paramtype = "light", |
|
353 |
light_source = 0, |
|
354 |
sunlight_propagates = true, |
|
355 |
drawtype = "nodebox", |
|
356 |
selection_box = { |
|
357 |
type = "fixed", |
|
358 |
fixed = { |
|
359 |
platform_box,post_str_z1,post_str_z2, |
|
360 |
}}, |
|
361 |
node_box = { |
|
362 |
type = "fixed", |
|
363 |
fixed = { |
|
364 |
platform_box,post_str_z1,post_str_z2, |
|
365 |
}}, |
|
366 |
after_dig_node = function (pos, oldnode, oldmetadata, digger) |
|
367 |
dig_post_with_platform (pos,oldnode,oldmetadata) |
|
368 |
end, |
|
369 |
}) |
|
370 |
|
|
371 |
dig_post_with_platform = function (pos,oldnode,oldmetadata) |
|
372 |
x1=tonumber(oldmetadata.fields["x1"]) |
|
373 |
x2=tonumber(oldmetadata.fields["x2"]) |
|
374 |
y1=tonumber(oldmetadata.fields["y1"]) |
|
375 |
y2=tonumber(oldmetadata.fields["y2"]) |
|
376 |
z1=tonumber(oldmetadata.fields["z1"]) |
|
377 |
z2=tonumber(oldmetadata.fields["z2"]) |
|
378 |
print(dump(x1)) |
|
379 |
oldmetadata.fields["platform"]="0" |
|
380 |
local rule=make_post_rule_number(x1,x2,y1,y2,z1,z2,0) |
f4302f
|
381 |
--print(dump(rule)) |
0ca19d
|
382 |
oldnode.name="technic:concrete_post"..rule |
R |
383 |
minetest.env:set_node(pos,oldnode) |
|
384 |
meta = minetest.env:get_meta(pos) |
|
385 |
meta:from_table(oldmetadata) |
|
386 |
end |
|
387 |
|
|
388 |
check_post_connections = function(pos,mode) |
|
389 |
local pos1={} |
|
390 |
pos1.x=pos.x |
|
391 |
pos1.y=pos.y |
|
392 |
pos1.z=pos.z |
|
393 |
tempx1=0 |
|
394 |
tempx2=0 |
|
395 |
tempy1=0 |
|
396 |
tempy2=0 |
|
397 |
tempz1=0 |
|
398 |
tempz2=0 |
|
399 |
|
|
400 |
pos1.x=pos1.x+1 |
|
401 |
if minetest.env:get_meta(pos1):get_int("postlike")==1 then |
f4302f
|
402 |
x2=mode |
R |
403 |
x1=minetest.env:get_meta(pos1):get_int("x1") |
|
404 |
y1=minetest.env:get_meta(pos1):get_int("y1") |
|
405 |
y2=minetest.env:get_meta(pos1):get_int("y2") |
|
406 |
z1=minetest.env:get_meta(pos1):get_int("z1") |
|
407 |
z2=minetest.env:get_meta(pos1):get_int("z2") |
|
408 |
platform=minetest.env:get_meta(pos1):get_int("platform") |
|
409 |
rule=make_post_rule_number(x1,x2,y1,y2,z1,z2,platform) |
|
410 |
hacky_swap_posts(pos1,"technic:concrete_post"..rule) |
|
411 |
meta=minetest.env:get_meta(pos1) |
|
412 |
meta:set_int("x2",x2) |
|
413 |
tempx1=mode |
0ca19d
|
414 |
end |
R |
415 |
|
|
416 |
pos1.x=pos1.x-2 |
|
417 |
if minetest.env:get_meta(pos1):get_int("postlike")==1 then |
f4302f
|
418 |
x1=mode |
R |
419 |
x2=minetest.env:get_meta(pos1):get_int("x2") |
|
420 |
y1=minetest.env:get_meta(pos1):get_int("y1") |
|
421 |
y2=minetest.env:get_meta(pos1):get_int("y2") |
|
422 |
z1=minetest.env:get_meta(pos1):get_int("z1") |
|
423 |
z2=minetest.env:get_meta(pos1):get_int("z2") |
|
424 |
platform=minetest.env:get_meta(pos1):get_int("platform") |
|
425 |
rule=make_post_rule_number(x1,x2,y1,y2,z1,z2,platform) |
|
426 |
hacky_swap_posts(pos1,"technic:concrete_post"..rule) |
|
427 |
meta=minetest.env:get_meta(pos1) |
|
428 |
meta:set_int("x1",x1) |
|
429 |
tempx2=mode |
0ca19d
|
430 |
end |
R |
431 |
|
|
432 |
pos1.x=pos1.x+1 |
|
433 |
|
|
434 |
pos1.y=pos1.y+1 |
|
435 |
if minetest.env:get_meta(pos1):get_int("postlike")==1 then |
f4302f
|
436 |
y2=mode |
R |
437 |
x1=minetest.env:get_meta(pos1):get_int("x1") |
|
438 |
x2=minetest.env:get_meta(pos1):get_int("x2") |
|
439 |
y1=minetest.env:get_meta(pos1):get_int("y1") |
|
440 |
z1=minetest.env:get_meta(pos1):get_int("z1") |
|
441 |
z2=minetest.env:get_meta(pos1):get_int("z2") |
|
442 |
platform=minetest.env:get_meta(pos1):get_int("platform") |
|
443 |
rule=make_post_rule_number(x1,x2,y1,y2,z1,z2,platform) |
|
444 |
hacky_swap_posts(pos1,"technic:concrete_post"..rule) |
|
445 |
meta=minetest.env:get_meta(pos1) |
|
446 |
meta:set_int("y2",y2) |
|
447 |
tempy1=mode |
0ca19d
|
448 |
end |
R |
449 |
|
|
450 |
pos1.y=pos1.y-2 |
|
451 |
if minetest.env:get_meta(pos1):get_int("postlike")==1 then |
f4302f
|
452 |
y1=mode |
R |
453 |
x1=minetest.env:get_meta(pos1):get_int("x1") |
|
454 |
x2=minetest.env:get_meta(pos1):get_int("x2") |
|
455 |
y2=minetest.env:get_meta(pos1):get_int("y2") |
|
456 |
z1=minetest.env:get_meta(pos1):get_int("z1") |
|
457 |
z2=minetest.env:get_meta(pos1):get_int("z2") |
|
458 |
platform=minetest.env:get_meta(pos1):get_int("platform") |
|
459 |
rule=make_post_rule_number(x1,x2,y1,y2,z1,z2,platform) |
|
460 |
hacky_swap_posts(pos1,"technic:concrete_post"..rule) |
|
461 |
meta=minetest.env:get_meta(pos1) |
|
462 |
meta:set_int("y1",y1) |
|
463 |
tempy2=mode |
0ca19d
|
464 |
end |
R |
465 |
pos1.y=pos1.y+1 |
|
466 |
|
|
467 |
pos1.z=pos1.z+1 |
|
468 |
if minetest.env:get_meta(pos1):get_int("postlike")==1 then |
f4302f
|
469 |
z2=mode |
R |
470 |
x1=minetest.env:get_meta(pos1):get_int("x1") |
|
471 |
x2=minetest.env:get_meta(pos1):get_int("x2") |
|
472 |
y1=minetest.env:get_meta(pos1):get_int("y1") |
|
473 |
y2=minetest.env:get_meta(pos1):get_int("y2") |
|
474 |
z1=minetest.env:get_meta(pos1):get_int("z1") |
|
475 |
platform=minetest.env:get_meta(pos1):get_int("platform") |
|
476 |
rule=make_post_rule_number(x1,x2,y1,y2,z1,z2,platform) |
|
477 |
hacky_swap_posts(pos1,"technic:concrete_post"..rule) |
|
478 |
meta=minetest.env:get_meta(pos1) |
|
479 |
meta:set_int("z2",z2) |
|
480 |
tempz1=mode |
0ca19d
|
481 |
end |
R |
482 |
pos1.z=pos1.z-2 |
|
483 |
|
|
484 |
if minetest.env:get_meta(pos1):get_int("postlike")==1 then |
f4302f
|
485 |
z1=mode |
R |
486 |
x1=minetest.env:get_meta(pos1):get_int("x1") |
|
487 |
x2=minetest.env:get_meta(pos1):get_int("x2") |
|
488 |
y1=minetest.env:get_meta(pos1):get_int("y1") |
|
489 |
y2=minetest.env:get_meta(pos1):get_int("y2") |
|
490 |
z2=minetest.env:get_meta(pos1):get_int("z2") |
|
491 |
platform=minetest.env:get_meta(pos1):get_int("platform") |
|
492 |
rule=make_post_rule_number(x1,x2,y1,y2,z1,z2,platform) |
|
493 |
hacky_swap_posts(pos1,"technic:concrete_post"..rule) |
|
494 |
meta=minetest.env:get_meta(pos1) |
|
495 |
meta:set_int("z1",z1) |
|
496 |
tempz2=mode |
0ca19d
|
497 |
end |
R |
498 |
pos1.z=pos1.z+1 |
f4302f
|
499 |
|
0ca19d
|
500 |
if mode==1 then |
R |
501 |
meta=minetest.env:get_meta(pos) |
|
502 |
meta:set_int("x1",tempx1) |
|
503 |
meta:set_int("x2",tempx2) |
|
504 |
meta:set_int("y1",tempy1) |
|
505 |
meta:set_int("y2",tempy2) |
|
506 |
meta:set_int("z1",tempz1) |
|
507 |
meta:set_int("z2",tempz2) |
|
508 |
rule=make_post_rule_number(tempx1,tempx2,tempy1,tempy2,tempz1,tempz2,0) |
|
509 |
hacky_swap_posts(pos,"technic:concrete_post"..rule) |
|
510 |
end |
|
511 |
end |
|
512 |
|
|
513 |
function make_post_rule_number (x1,x2,y1,y2,z1,z2,platform) |
f4302f
|
514 |
local tempy=y1+y2 |
R |
515 |
local tempx=x1+x2 |
|
516 |
local tempz=z1+z2 |
|
517 |
if platform==0 then |
|
518 |
if tempy==0 and tempx==0 and tempz==0 then return 0 end |
6055ed
|
519 |
if x1==1 and x2==1 and tempz==0 and tempy==0 then return 32 end |
R |
520 |
if z1==1 and z2==1 and tempx==0 and tempy==0 then return 33 end |
|
521 |
return z2+z1*2+x2*4+x1*8 |
f4302f
|
522 |
else |
R |
523 |
if tempy==0 and tempx==0 and tempz==0 then return 16 end |
6055ed
|
524 |
if x1==1 and x2==1 and tempz==0 and tempy==0 then return 34 end |
R |
525 |
if z1==1 and z2==1 and tempx==0 and tempy==0 then return 35 end |
|
526 |
return z2+z1*2+x2*4+x1*8+16 |
f4302f
|
527 |
end |
0ca19d
|
528 |
end |
R |
529 |
|
|
530 |
function hacky_swap_posts(pos,name) |
|
531 |
local node = minetest.env:get_node(pos) |
6055ed
|
532 |
if node.name == "technic:concrete" or node.name == "technic:blast_resistant_concrete" then |
0ca19d
|
533 |
return nil |
R |
534 |
end |
|
535 |
local meta = minetest.env:get_meta(pos) |
|
536 |
local meta0 = meta:to_table() |
|
537 |
node.name = name |
|
538 |
local meta0 = meta:to_table() |
|
539 |
minetest.env:set_node(pos,node) |
|
540 |
meta = minetest.env:get_meta(pos) |
|
541 |
meta:from_table(meta0) |
|
542 |
return 1 |
|
543 |
end |