Rename many textures in hades_trees
[minetest_hades/hades_revisited.git] / mods / stairs / init.lua
blob1a4f457322d6f1b4322cce3c99713689ee8c13af
1 local S = minetest.get_translator("stairs")
3 -- Minetest 0.4 mod: stairs
4 -- See README.txt for licensing and other information.
6 stairs = {}
8 -- Node will be called stairs:stair_<subname>
9 function stairs.register_stair(subname, recipeitem, groups, images, description, sounds)
10 minetest.register_node(":stairs:stair_" .. subname, {
11 description = description,
12 drawtype = "nodebox",
13 tiles = images,
14 paramtype = "light",
15 paramtype2 = "facedir",
16 is_ground_content = false,
17 groups = groups,
18 sounds = sounds,
19 node_box = {
20 type = "fixed",
21 fixed = {
22 {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
23 {-0.5, 0, 0, 0.5, 0.5, 0.5},
26 on_place = function(itemstack, placer, pointed_thing)
27 if pointed_thing.type ~= "node" then
28 return itemstack
29 end
31 local p0 = pointed_thing.under
32 local p1 = pointed_thing.above
33 local param2 = 0
35 local placer_pos = placer:get_pos()
36 if placer_pos then
37 local dir = {
38 x = p1.x - placer_pos.x,
39 y = p1.y - placer_pos.y,
40 z = p1.z - placer_pos.z
42 param2 = minetest.dir_to_facedir(dir)
43 end
45 if p0.y-1 == p1.y then
46 param2 = param2 + 20
47 if param2 == 21 then
48 param2 = 23
49 elseif param2 == 23 then
50 param2 = 21
51 end
52 end
54 return minetest.item_place(itemstack, placer, pointed_thing, param2)
55 end,
58 minetest.register_craft({
59 output = 'stairs:stair_' .. subname .. ' 8',
60 recipe = {
61 {recipeitem, "", ""},
62 {recipeitem, recipeitem, ""},
63 {recipeitem, recipeitem, recipeitem},
66 -- Flipped recipe
67 minetest.register_craft({
68 output = 'stairs:stair_' .. subname .. ' 8',
69 recipe = {
70 {"", "", recipeitem},
71 {"", recipeitem, recipeitem},
72 {recipeitem, recipeitem, recipeitem},
75 end
77 -- Node will be called stairs:stair_out_<subname>
78 function stairs.register_stair_out(subname, recipeitem, groups, images, description, sounds)
79 minetest.register_node(":stairs:stair_out_" .. subname, {
80 description = description,
81 drawtype = "nodebox",
82 tiles = images,
83 paramtype = "light",
84 paramtype2 = "facedir",
85 is_ground_content = false,
86 groups = groups,
87 sounds = sounds,
88 node_box = {
89 type = "fixed",
90 fixed = {
91 {-0.5, -0.5, -0.5, 0.5, 0, 0},
92 {-0.5, -0.5, 0, 0, 0.5, 0.5},
93 {0, -0.5, 0, 0.5, 0, 0.5},
96 on_place = function(itemstack, placer, pointed_thing)
97 if pointed_thing.type ~= "node" then
98 return itemstack
99 end
101 local p0 = pointed_thing.under
102 local p1 = pointed_thing.above
103 local param2 = 0
105 local placer_pos = placer:get_pos()
106 if placer_pos then
107 local dir = {
108 x = p1.x - placer_pos.x,
109 y = p1.y - placer_pos.y,
110 z = p1.z - placer_pos.z
112 param2 = minetest.dir_to_facedir(dir)
115 if p0.y-1 == p1.y then
116 param2 = param2 + 20
117 if param2 == 21 then
118 param2 = 23
119 elseif param2 == 23 then
120 param2 = 21
124 return minetest.item_place(itemstack, placer, pointed_thing, param2)
125 end,
128 minetest.register_craft({
129 output = 'stairs:stair_out_' .. subname .. ' 4',
130 recipe = {
131 {"", recipeitem, ""},
132 {recipeitem, recipeitem, recipeitem},
137 -- Node will be called stairs:stair_in_<subname>
138 function stairs.register_stair_in(subname, recipeitem, groups, images, description, sounds)
139 minetest.register_node(":stairs:stair_in_" .. subname, {
140 description = description,
141 drawtype = "nodebox",
142 tiles = images,
143 paramtype = "light",
144 paramtype2 = "facedir",
145 is_ground_content = false,
146 groups = groups,
147 sounds = sounds,
148 node_box = {
149 type = "fixed",
150 fixed = {
151 {-0.5, -0.5, 0, 0.5, 0.5, 0.5},
152 {-0.5, -0.5, -0.5, 0, 0.5, 0},
153 {0, -0.5, -0.5, 0.5, 0, 0},
156 on_place = function(itemstack, placer, pointed_thing)
157 if pointed_thing.type ~= "node" then
158 return itemstack
161 local p0 = pointed_thing.under
162 local p1 = pointed_thing.above
163 local param2 = 0
165 local placer_pos = placer:get_pos()
166 if placer_pos then
167 local dir = {
168 x = p1.x - placer_pos.x,
169 y = p1.y - placer_pos.y,
170 z = p1.z - placer_pos.z
172 param2 = minetest.dir_to_facedir(dir)
175 if p0.y-1 == p1.y then
176 param2 = param2 + 20
177 if param2 == 21 then
178 param2 = 23
179 elseif param2 == 23 then
180 param2 = 21
184 return minetest.item_place(itemstack, placer, pointed_thing, param2)
185 end,
188 minetest.register_craft({
189 output = 'stairs:stair_in_' .. subname .. ' 6',
190 recipe = {
191 {"", recipeitem, ""},
192 {recipeitem, "", recipeitem},
193 {recipeitem, recipeitem, recipeitem},
198 -- Node will be called stairs:slab_<subname>
199 function stairs.register_slab(subname, recipeitem, groups, images, description, sounds)
200 minetest.register_node(":stairs:slab_" .. subname, {
201 description = description,
202 drawtype = "nodebox",
203 tiles = images,
204 paramtype = "light",
205 paramtype2 = "facedir",
206 is_ground_content = false,
207 groups = groups,
208 sounds = sounds,
209 node_box = {
210 type = "fixed",
211 fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
213 on_place = function(itemstack, placer, pointed_thing)
214 if pointed_thing.type ~= "node" then
215 return itemstack
218 -- If it's being placed on an another similar one, replace it with
219 -- a full block
220 local slabpos = nil
221 local slabnode = nil
222 local p0 = pointed_thing.under
223 local p1 = pointed_thing.above
224 local n0 = minetest.get_node(p0)
225 local n1 = minetest.get_node(p1)
226 local param2 = 0
228 local n0_is_upside_down = (n0.name == "stairs:slab_" .. subname and
229 n0.param2 >= 20)
231 if n0.name == "stairs:slab_" .. subname and not n0_is_upside_down and p0.y+1 == p1.y then
232 slabpos = p0
233 slabnode = n0
234 elseif n1.name == "stairs:slab_" .. subname then
235 slabpos = p1
236 slabnode = n1
238 if slabpos then
239 -- Remove the slab at slabpos
240 minetest.remove_node(slabpos)
241 -- Make a fake stack of a single item and try to place it
242 local fakestack = ItemStack(recipeitem)
243 fakestack:set_count(itemstack:get_count())
245 pointed_thing.above = slabpos
246 local success
247 fakestack, success = minetest.item_place(fakestack, placer, pointed_thing)
248 -- If the item was taken from the fake stack, decrement original
249 if success then
250 itemstack:set_count(fakestack:get_count())
251 -- Else put old node back
252 else
253 minetest.set_node(slabpos, slabnode)
255 return itemstack
258 -- Upside down slabs
259 if p0.y-1 == p1.y then
260 -- Turn into full block if pointing at a existing slab
261 if n0_is_upside_down then
262 -- Remove the slab at the position of the slab
263 minetest.remove_node(p0)
264 -- Make a fake stack of a single item and try to place it
265 local fakestack = ItemStack(recipeitem)
266 fakestack:set_count(itemstack:get_count())
268 pointed_thing.above = p0
269 local success
270 fakestack, success = minetest.item_place(fakestack, placer, pointed_thing)
271 -- If the item was taken from the fake stack, decrement original
272 if success then
273 itemstack:set_count(fakestack:get_count())
274 -- Else put old node back
275 else
276 minetest.set_node(p0, n0)
278 return itemstack
281 -- Place upside down slab
282 param2 = 20
285 -- If pointing at the side of a upside down slab
286 if n0_is_upside_down and p0.y+1 ~= p1.y then
287 param2 = 20
290 return minetest.item_place(itemstack, placer, pointed_thing, param2)
291 end,
294 minetest.register_craft({
295 output = 'stairs:slab_' .. subname .. ' 6',
296 recipe = {
297 {recipeitem, recipeitem, recipeitem},
302 -- Nodes will be called stairs:{stair,slab}_<subname>
303 function stairs.register_stair_and_slab(subname, recipeitem, groups, images, desc_stair, desc_stair_out, desc_stair_in, desc_slab, sounds)
304 stairs.register_stair(subname, recipeitem, groups, images, desc_stair, sounds)
305 stairs.register_stair_out(subname, recipeitem, groups, images, desc_stair_out, sounds)
306 stairs.register_stair_in(subname, recipeitem, groups, images, desc_stair_in, sounds)
307 stairs.register_slab(subname, recipeitem, groups, images, desc_slab, sounds)
310 stairs.register_stair_and_slab("wood", "hades_trees:wood",
311 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
312 {"default_wood.png"},
313 S("Common Wood Stair"),
314 S("Outer Common Wood Stair"),
315 S("Inner Common Wood Stair"),
316 S("Common Wood Slab"),
317 hades_sounds.node_sound_wood_defaults())
319 stairs.register_stair_and_slab("pale_wood", "hades_trees:pale_wood",
320 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
321 {"hades_trees_pale_wood.png"},
322 S("Pale Wood Stair"),
323 S("Outer Pale Wood Stair"),
324 S("Inner Pale Wood Stair"),
325 S("Pale Wood Slab"),
326 hades_sounds.node_sound_wood_defaults())
328 stairs.register_stair_and_slab("birch_wood", "hades_trees:birch_wood",
329 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
330 {"default_birchwood.png"},
331 S("Birch Wood Stair"),
332 S("Outer Birch Wood Stair"),
333 S("Inner Birch Wood Stair"),
334 S("Birch Wood Slab"),
335 hades_sounds.node_sound_wood_defaults())
337 -- Barks
339 stairs.register_stair_and_slab("bark", "hades_trees:bark",
340 {choppy=3,oddly_breakable_by_hand=1,flammable=3},
341 {"default_tree.png"},
342 S("Common Bark Stair"),
343 S("Outer Common Bark Stair"),
344 S("Inner Common Bark Stair"),
345 S("Common Bark Slab"),
346 hades_sounds.node_sound_wood_defaults())
348 stairs.register_stair_and_slab("jungle_bark", "hades_trees:jungle_bark",
349 {choppy=3,oddly_breakable_by_hand=1,flammable=3},
350 {"default_jungletree.png"},
351 S("Jungle Bark Stair"),
352 S("Outer Jungle Bark Stair"),
353 S("Inner Jungle Bark Stair"),
354 S("Jungle Bark Slab"),
355 hades_sounds.node_sound_wood_defaults())
357 stairs.register_stair_and_slab("pale_bark", "hades_trees:pale_bark",
358 {choppy=3,oddly_breakable_by_hand=1,flammable=3},
359 {"hades_trees_pale_tree.png"},
360 S("Pale Bark Stair"),
361 S("Outer Pale Bark Stair"),
362 S("Inner Pale Bark Stair"),
363 S("Pale Bark Slab"),
364 hades_sounds.node_sound_wood_defaults())
366 stairs.register_stair_and_slab("birch_bark", "hades_trees:birch_bark",
367 {choppy=3,oddly_breakable_by_hand=1,flammable=3},
368 {"default_tree_birch.png"},
369 S("Birch Bark Stair"),
370 S("Outer Birch Bark Stair"),
371 S("Inner Birch Bark Stair"),
372 S("Birch Bark Slab"),
373 hades_sounds.node_sound_wood_defaults())
375 -- Colored Woods
377 stairs.register_stair_and_slab("colwood_black", "hades_trees:colwood_black",
378 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
379 {"hades_trees_colwood_black.png"},
380 S("Black Wood Stair"),
381 S("Outer Black Wood Stair"),
382 S("Inner Black Wood Stair"),
383 S("Black Wood Slab"),
384 hades_sounds.node_sound_wood_defaults())
386 stairs.register_stair_and_slab("colwood_blue", "hades_trees:colwood_blue",
387 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
388 {"hades_trees_colwood_blue.png"},
389 S("Blue Wood Stair"),
390 S("Outer Blue Wood Stair"),
391 S("Inner Blue Wood Stair"),
392 S("Blue Wood Slab"),
393 hades_sounds.node_sound_wood_defaults())
395 stairs.register_stair_and_slab("colwood_brown", "hades_trees:colwood_brown",
396 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
397 {"hades_trees_colwood_brown.png"},
398 S("Brown Wood Stair"),
399 S("Outer Brown Wood Stair"),
400 S("Inner Brown Wood Stair"),
401 S("Brown Wood Slab"),
402 hades_sounds.node_sound_wood_defaults())
404 stairs.register_stair_and_slab("colwood_cyan", "hades_trees:colwood_cyan",
405 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
406 {"hades_trees_colwood_cyan.png"},
407 S("Cyan Wood Stair"),
408 S("Outer Cyan Wood Stair"),
409 S("Inner Cyan Wood Stair"),
410 S("Cyan Wood Slab"),
411 hades_sounds.node_sound_wood_defaults())
413 stairs.register_stair_and_slab("colwood_dark_green", "hades_trees:colwood_dark_green",
414 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
415 {"hades_trees_colwood_dark_green.png"},
416 S("Dark Green Wood Stair"),
417 S("Outer Dark Green Wood Stair"),
418 S("Inner Dark Green Wood Stair"),
419 S("Dark Green Wood Slab"),
420 hades_sounds.node_sound_wood_defaults())
422 stairs.register_stair_and_slab("colwood_dark_grey", "hades_trees:colwood_dark_grey",
423 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
424 {"hades_trees_colwood_dark_grey.png"},
425 S("Dark Grey Wood Stair"),
426 S("Outer Dark Grey Wood Stair"),
427 S("Inner Dark Grey Wood Stair"),
428 S("Dark Grey Wood Slab"),
429 hades_sounds.node_sound_wood_defaults())
431 stairs.register_stair_and_slab("colwood_green", "hades_trees:colwood_green",
432 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
433 {"hades_trees_colwood_green.png"},
434 S("Green Wood Stair"),
435 S("Outer Green Wood Stair"),
436 S("Inner Green Wood Stair"),
437 S("Green Wood Slab"),
438 hades_sounds.node_sound_wood_defaults())
440 stairs.register_stair_and_slab("colwood_grey", "hades_trees:colwood_grey",
441 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
442 {"hades_trees_colwood_grey.png"},
443 S("Grey Wood Stair"),
444 S("Outer Grey Wood Stair"),
445 S("Inner Grey Wood Stair"),
446 S("Grey Wood Slab"),
447 hades_sounds.node_sound_wood_defaults())
449 stairs.register_stair_and_slab("colwood_magenta", "hades_trees:colwood_magenta",
450 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
451 {"hades_trees_colwood_magenta.png"},
452 S("Magenta Wood Stair"),
453 S("Outer Magenta Wood Stair"),
454 S("Inner Magenta Wood Stair"),
455 S("Magenta Wood Slab"),
456 hades_sounds.node_sound_wood_defaults())
458 stairs.register_stair_and_slab("colwood_orange", "hades_trees:colwood_orange",
459 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
460 {"hades_trees_colwood_orange.png"},
461 S("Orange Wood Stair"),
462 S("Outer Orange Wood Stair"),
463 S("Inner Orange Wood Stair"),
464 S("Orange Wood Slab"),
465 hades_sounds.node_sound_wood_defaults())
467 stairs.register_stair_and_slab("colwood_pink", "hades_trees:colwood_pink",
468 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
469 {"hades_trees_colwood_pink.png"},
470 S("Pink Wood Stair"),
471 S("Outer Pink Wood Stair"),
472 S("Inner Pink Wood Stair"),
473 S("Pink Wood Slab"),
474 hades_sounds.node_sound_wood_defaults())
476 stairs.register_stair_and_slab("colwood_red", "hades_trees:colwood_red",
477 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
478 {"hades_trees_colwood_red.png"},
479 S("Red Wood Stair"),
480 S("Outer Red Wood Stair"),
481 S("Inner Red Wood Stair"),
482 S("Red Wood Slab"),
483 hades_sounds.node_sound_wood_defaults())
485 stairs.register_stair_and_slab("colwood_violet", "hades_trees:colwood_violet",
486 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
487 {"hades_trees_colwood_violet.png"},
488 S("Violet Wood Stair"),
489 S("Outer Violet Wood Stair"),
490 S("Inner Violet Wood Stair"),
491 S("Violet Wood Slab"),
492 hades_sounds.node_sound_wood_defaults())
494 stairs.register_stair_and_slab("colwood_white", "hades_trees:colwood_white",
495 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
496 {"hades_trees_colwood_white.png"},
497 S("White Wood Stair"),
498 S("Outer White Wood Stair"),
499 S("Inner White Wood Stair"),
500 S("White Wood Slab"),
501 hades_sounds.node_sound_wood_defaults())
503 stairs.register_stair_and_slab("colwood_yellow", "hades_trees:colwood_yellow",
504 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
505 {"hades_trees_colwood_yellow.png"},
506 S("Yellow Wood Stair"),
507 S("Outer Yellow Wood Stair"),
508 S("Inner Yellow Wood Stair"),
509 S("Yellow Wood Slab"),
510 hades_sounds.node_sound_wood_defaults())
513 stairs.register_stair_and_slab("steelblock", "hades_core:steelblock",
514 {cracky=1,level=2},
515 {"default_steel_block.png"},
516 S("Steel Block Stair"),
517 S("Outer Steel Block Stair"),
518 S("Inner Steel Block Stair"),
519 S("Steel Block Slab"),
520 hades_sounds.node_sound_metal_defaults())
522 stairs.register_stair_and_slab("copperblock", "hades_core:copperblock",
523 {cracky=1,level=2},
524 {"default_copper_block.png"},
525 S("Copper Block Stair"),
526 S("Outer Copper Block Stair"),
527 S("Inner Copper Block Stair"),
528 S("Copper Block Slab"),
529 hades_sounds.node_sound_metal_defaults())
531 stairs.register_stair_and_slab("bronzeblock", "hades_core:bronzeblock",
532 {cracky=1,level=2},
533 {"default_bronze_block.png"},
534 S("Bronze Block Stair"),
535 S("Outer Bronze Block Stair"),
536 S("Inner Bronze Block Stair"),
537 S("Bronze Block Slab"),
538 hades_sounds.node_sound_metal_defaults())
540 stairs.register_stair_and_slab("goldblock", "hades_core:goldblock",
541 {cracky=1},
542 {"default_gold_block.png"},
543 S("Gold Block Stair"),
544 S("Outer Gold Block Stair"),
545 S("Inner Gold Block Stair"),
546 S("Gold Block Slab"),
547 hades_sounds.node_sound_metal_defaults())
549 stairs.register_stair_and_slab("stone", "hades_core:stone",
550 {cracky=3},
551 {"default_stone.png"},
552 S("Stone Stair"),
553 S("Outer Stone Stair"),
554 S("Inner Stone Stair"),
555 S("Stone Slab"),
556 hades_sounds.node_sound_stone_defaults())
558 stairs.register_stair_and_slab("stonebrick_baked", "hades_core:stonebrick_baked",
559 {cracky=3},
560 {"default_stone_brick_baked.png"},
561 S("Burned Stone Brick Stair"),
562 S("Outer Burned Stone Brick Stair"),
563 S("Inner Burned Stone Brick Stair"),
564 S("Burned Stone Brick Slab"),
565 hades_sounds.node_sound_stone_defaults())
567 stairs.register_stair_and_slab("stone_baked", "hades_core:stone_baked",
568 {cracky=3},
569 {"default_stone_baked.png"},
570 S("Burned Stone Stair"),
571 S("Outer Burned Stone Stair"),
572 S("Inner Burned Stone Stair"),
573 S("Burned Stone Slab"),
574 hades_sounds.node_sound_stone_defaults())
576 stairs.register_stair_and_slab("cobble", "hades_core:cobble",
577 {cracky=3},
578 {"default_cobble.png"},
579 S("Cobblestone Stair"),
580 S("Outer Cobblestone Stair"),
581 S("Inner Cobblestone Stair"),
582 S("Cobblestone Slab"),
583 hades_sounds.node_sound_stone_defaults())
585 stairs.register_stair_and_slab("cobble_baked", "hades_core:cobble_baked",
586 {cracky=3},
587 {"default_cobble_baked.png"},
588 S("Burned Cobblestone Stair"),
589 S("Outer Burned Cobblestone Stair"),
590 S("Inner Burned Cobblestone Stair"),
591 S("Burned Cobblestone Slab"),
592 hades_sounds.node_sound_stone_defaults())
594 stairs.register_stair_and_slab("brick", "hades_core:brick",
595 {cracky=3},
596 {"default_brick.png"},
597 S("Uncolored Brick Stair"),
598 S("Outer Uncolored Brick Stair"),
599 S("Inner Uncolored Brick Stair"),
600 S("Uncolored Brick Slab"),
601 hades_sounds.node_sound_stone_defaults())
603 -- Colors... too mutch ColOrs... EvErYwhere
605 stairs.register_stair_and_slab("brick_black", "hades_core:brick_black",
606 {cracky=3},
607 {"default_brick_black.png"},
608 S("Black Brick Stair"),
609 S("Outer Black Brick Stair"),
610 S("Inner Black Brick Stair"),
611 S("Black Brick Slab"),
612 hades_sounds.node_sound_stone_defaults())
614 stairs.register_stair_and_slab("brick_blue", "hades_core:brick_blue",
615 {cracky=3},
616 {"default_brick_blue.png"},
617 S("Blue Brick Stair"),
618 S("Outer Blue Brick Stair"),
619 S("Inner Blue Brick Stair"),
620 S("Blue Brick Slab"),
621 hades_sounds.node_sound_stone_defaults())
623 stairs.register_stair_and_slab("brick_brown", "hades_core:brick_brown",
624 {cracky=3},
625 {"default_brick_brown.png"},
626 S("Brown Brick Stair"),
627 S("Outer Brown Brick Stair"),
628 S("Inner Brown Brick Stair"),
629 S("Brown Brick Slab"),
630 hades_sounds.node_sound_stone_defaults())
632 stairs.register_stair_and_slab("brick_cyan", "hades_core:brick_cyan",
633 {cracky=3},
634 {"default_brick_cyan.png"},
635 S("Cyan Brick Stair"),
636 S("Outer Cyan Brick Stair"),
637 S("Inner Cyan Brick Stair"),
638 S("Cyan Brick Slab"),
639 hades_sounds.node_sound_stone_defaults())
641 stairs.register_stair_and_slab("brick_dark_green", "hades_core:brick_dark_green",
642 {cracky=3},
643 {"default_brick_dark_green.png"},
644 S("Dark Green Brick Stair"),
645 S("Outer Dark Green Brick Stair"),
646 S("Inner Dark Green Brick Stair"),
647 S("Dark Green Brick Slab"),
648 hades_sounds.node_sound_stone_defaults())
650 stairs.register_stair_and_slab("brick_dark_grey", "hades_core:brick_dark_grey",
651 {cracky=3},
652 {"default_brick_dark_grey.png"},
653 S("Dark Grey Brick Stair"),
654 S("Outer Dark Grey Brick Stair"),
655 S("Inner Dark Grey Brick Stair"),
656 S("Dark Grey Brick Slab"),
657 hades_sounds.node_sound_stone_defaults())
659 stairs.register_stair_and_slab("brick_green", "hades_core:brick_green",
660 {cracky=3},
661 {"default_brick_green.png"},
662 S("Green Brick Stair"),
663 S("Outer Green Brick Stair"),
664 S("Inner Green Brick Stair"),
665 S("Green Brick Slab"),
666 hades_sounds.node_sound_stone_defaults())
668 stairs.register_stair_and_slab("brick_grey", "hades_core:brick_grey",
669 {cracky=3},
670 {"default_brick_grey.png"},
671 S("Grey Brick Stair"),
672 S("Outer Grey Brick Stair"),
673 S("Inner Grey Brick Stair"),
674 S("Grey Brick Slab"),
675 hades_sounds.node_sound_stone_defaults())
677 stairs.register_stair_and_slab("brick_magenta", "hades_core:brick_magenta",
678 {cracky=3},
679 {"default_brick_magenta.png"},
680 S("Magenta Brick Stair"),
681 S("Outer Magenta Brick Stair"),
682 S("Inner Magenta Brick Stair"),
683 S("Magenta Brick Slab"),
684 hades_sounds.node_sound_stone_defaults())
686 stairs.register_stair_and_slab("brick_orange", "hades_core:brick_orange",
687 {cracky=3},
688 {"default_brick_orange.png"},
689 S("Orange Brick Stair"),
690 S("Outer Orange Brick Stair"),
691 S("Inner Orange Brick Stair"),
692 S("Orange Brick Slab"),
693 hades_sounds.node_sound_stone_defaults())
695 stairs.register_stair_and_slab("brick_pink", "hades_core:brick_pink",
696 {cracky=3},
697 {"default_brick_pink.png"},
698 S("Pink Brick Stair"),
699 S("Outer Pink Brick Stair"),
700 S("Inner Pink Brick Stair"),
701 S("Pink Brick Slab"),
702 hades_sounds.node_sound_stone_defaults())
704 stairs.register_stair_and_slab("brick_red", "hades_core:brick_red",
705 {cracky=3},
706 {"default_brick_red.png"},
707 S("Red Brick Stair"),
708 S("Outer Red Brick Stair"),
709 S("Inner Red Brick Stair"),
710 S("Red Brick Slab"),
711 hades_sounds.node_sound_stone_defaults())
713 stairs.register_stair_and_slab("brick_violet", "hades_core:brick_violet",
714 {cracky=3},
715 {"default_brick_violet.png"},
716 S("Violet Brick Stair"),
717 S("Outer Violet Brick Stair"),
718 S("Inner Violet Brick Stair"),
719 S("Violet Brick Slab"),
720 hades_sounds.node_sound_stone_defaults())
722 stairs.register_stair_and_slab("brick_white", "hades_core:brick_white",
723 {cracky=3},
724 {"default_brick_white.png"},
725 S("White Brick Stair"),
726 S("Outer White Brick Stair"),
727 S("Inner White Brick Stair"),
728 S("White Brick Slab"),
729 hades_sounds.node_sound_stone_defaults())
731 stairs.register_stair_and_slab("brick_yellow", "hades_core:brick_yellow",
732 {cracky=3},
733 {"default_brick_yellow.png"},
734 S("Yellow Brick Stair"),
735 S("Outer Yellow Brick Stair"),
736 S("Inner Yellow Brick Stair"),
737 S("Yellow Brick Slab"),
738 hades_sounds.node_sound_stone_defaults())
741 stairs.register_stair_and_slab("sandstone", "hades_core:sandstone",
742 {crumbly=2,cracky=2},
743 {"default_sandstone.png"},
744 S("Sandstone Stair"),
745 S("Outer Sandstone Stair"),
746 S("Inner Sandstone Stair"),
747 S("Sandstone Slab"),
748 hades_sounds.node_sound_stone_defaults())
750 stairs.register_stair_and_slab("sandstonebrick", "hades_core:sandstonebrick",
751 {crumbly=2,cracky=2},
752 {"default_sandstone_brick.png"},
753 S("Sandstone Brick Stair"),
754 S("Outer Sandstone Brick Stair"),
755 S("Inner Sandstone Brick Stair"),
756 S("Sandstone Brick Slab"),
757 hades_sounds.node_sound_stone_defaults())
759 stairs.register_stair_and_slab("jungle_wood", "hades_trees:jungle_wood",
760 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
761 {"default_junglewood.png"},
762 S("Jungle Wood Stair"),
763 S("Outer Jungle Wood Stair"),
764 S("Innter Jungle Wood Stair"),
765 S("Jungle Wood Slab"),
766 hades_sounds.node_sound_wood_defaults())
768 stairs.register_stair_and_slab("stonebrick", "hades_core:stonebrick",
769 {cracky=3},
770 {"default_stone_brick.png"},
771 S("Stone Brick Stair"),
772 S("Outer Stone Brick Stair"),
773 S("Inner Stone Brick Stair"),
774 S("Stone Brick Slab"),
775 hades_sounds.node_sound_stone_defaults())
777 stairs.register_stair_and_slab("chondrite_brick", "hades_core:chondrite_brick",
778 {cracky=2},
779 {"default_chondrite_brick.png"},
780 S("Chondrite Brick Stair"),
781 S("Outer Chondrite Brick Stair"),
782 S("Inner Chondrite Brick Stair"),
783 S("Chondrite Brick Slab"),
784 hades_sounds.node_sound_stone_defaults())
786 stairs.register_stair_and_slab("chondrite", "hades_core:chondrite",
787 {cracky=2},
788 {"default_chondrite.png"},
789 S("Chondrite Stair"),
790 S("Outer Chondrite Stair"),
791 S("Inner Chondrite Stair"),
792 S("Chondrite Slab"),
793 hades_sounds.node_sound_stone_defaults())
795 stairs.register_stair_and_slab("marble_brick", "hades_core:marble_brick",
796 {cracky=3},
797 {"default_marble_brick.png"},
798 S("Marble Brick Stair"),
799 S("Outer Marble Brick Stair"),
800 S("Inner Marble Brick Stair"),
801 S("Marble Brick Slab"),
802 hades_sounds.node_sound_stone_defaults())
804 stairs.register_stair_and_slab("marble", "hades_core:marble",
805 {cracky=3},
806 {"default_marble.png"},
807 S("Marble Stair"),
808 S("Outer Marble Stair"),
809 S("Inner Marble Stair"),
810 S("Marble Slab"),
811 hades_sounds.node_sound_stone_defaults())
813 stairs.register_stair_and_slab("tuff_brick", "hades_core:tuff_brick",
814 {cracky=3},
815 {"default_tuff_brick.png"},
816 S("Tuff Brick Stair"),
817 S("Outer Tuff Brick Stair"),
818 S("Inner Tuff Brick Stair"),
819 S("Tuff Brick Slab"),
820 hades_sounds.node_sound_stone_defaults())
822 stairs.register_stair_and_slab("tuff", "hades_core:tuff",
823 {cracky=3},
824 {"default_tuff.png"},
825 S("Tuff Stair"),
826 S("Outer Tuff Stair"),
827 S("Inner Tuff Stair"),
828 S("Tuff Slab"),
829 hades_sounds.node_sound_stone_defaults())
831 stairs.register_stair_and_slab("tuff_baked_brick", "hades_core:tuff_baked_brick",
832 {cracky=3},
833 {"default_tuff_baked_brick.png"},
834 S("Burned Tuff Brick Stair"),
835 S("Outer Burned Tuff Brick Stair"),
836 S("Inner Burned Tuff Brick Stair"),
837 S("Burned Tuff Brick Slab"),
838 hades_sounds.node_sound_stone_defaults())
840 stairs.register_stair_and_slab("tuff_baked", "hades_core:tuff_baked",
841 {cracky=3},
842 {"default_tuff_baked.png"},
843 S("Burned Tuff Stair"),
844 S("Outer Burned Tuff Stair"),
845 S("Inner Burned Tuff Stair"),
846 S("Burned Tuff Slab"),
847 hades_sounds.node_sound_stone_defaults())
849 stairs.register_stair_and_slab("essexite_brick", "hades_core:essexite_brick",
850 {cracky=1},
851 {"default_essexite_brick.png"},
852 S("Essexite Brick Stair"),
853 S("Outer Essexite Brick Stair"),
854 S("Inner Essexite Brick Stair"),
855 S("Essexite Brick Slab"),
856 hades_sounds.node_sound_stone_defaults())
858 stairs.register_stair_and_slab("essexite", "hades_core:essexite",
859 {cracky=1},
860 {"default_essexite.png"},
861 S("Essexite Stair"),
862 S("Outer Essexite Stair"),
863 S("Inner Essexite Stair"),
864 S("Essexite Slab"),
865 hades_sounds.node_sound_stone_defaults())
867 stairs.register_stair_and_slab("rusty_block", "columnia:rusty_block",
868 {cracky=1},
869 {"columnia_rusty_block.png"},
870 S("Rusty Stair"),
871 S("Outer Rusty Stair"),
872 S("Inner Rusty Stair"),
873 S("Rusty Slab"),
874 hades_sounds.node_sound_metal_defaults())
876 stairs.register_stair_and_slab("cactus_brick", "hades_core:cactus_brick",
877 {cracky=1},
878 {"default_cactus_brick.png"},
879 S("Cactus Brick Stair"),
880 S("Outer Cactus Brick Stair"),
881 S("Inner Cactus Brick Stair"),
882 S("Cactus Brick Slab"),
883 hades_sounds.node_sound_wood_defaults())
885 stairs.register_stair_and_slab("obsidianbrick", "hades_core:obsidianbrick",
886 {cracky=1},
887 {"default_obsidian_brick.png"},
888 S("Obsidian Brick Stair"),
889 S("Outer Obsidian Brick Stair"),
890 S("Inner Obsidian Brick Stair"),
891 S("Obsidian Brick Slab"),
892 hades_sounds.node_sound_stone_defaults())
894 stairs.register_stair_and_slab("straw", "farming:straw",
895 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
896 {"farming_straw.png"},
897 S("Straw Stair"),
898 S("Outer Straw Stair"),
899 S("Inner Straw Stair"),
900 S("Straw Slab"),
901 hades_sounds.node_sound_leaves_defaults())
903 --wool
905 stairs.register_stair_and_slab("white", "wool:white",
906 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
907 {"wool_white.png"},
908 S("White Wool Stair"),
909 S("Outer White Wool Stair"),
910 S("Inner White Wool Stair"),
911 S("White Wool Slab"),
912 hades_sounds.node_sound_leaves_defaults())
914 stairs.register_stair_and_slab("grey", "wool:grey",
915 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
916 {"wool_grey.png"},
917 S("Grey Wool Stair"),
918 S("Outer Grey Wool Stair"),
919 S("Inner Grey Wool Stair"),
920 S("Grey Wool Slab"),
921 hades_sounds.node_sound_leaves_defaults())
923 stairs.register_stair_and_slab("black", "wool:black",
924 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
925 {"wool_black.png"},
926 S("Black Wool Stair"),
927 S("Outer Black Wool Stair"),
928 S("Inner Black Wool Stair"),
929 S("Black Wool Slab"),
930 hades_sounds.node_sound_leaves_defaults())
932 stairs.register_stair_and_slab("red", "wool:red",
933 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
934 {"wool_red.png"},
935 S("Red Wool Stair"),
936 S("Outer Red Wool Stair"),
937 S("Inner Red Wool Stair"),
938 S("Red Wool Slab"),
939 hades_sounds.node_sound_leaves_defaults())
941 stairs.register_stair_and_slab("yellow", "wool:yellow",
942 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
943 {"wool_yellow.png"},
944 S("Yellow Wool Stair"),
945 S("Outer Yellow Wool Stair"),
946 S("Inner Yellow Wool Stair"),
947 S("Yellow Wool Slab"),
948 hades_sounds.node_sound_leaves_defaults())
950 stairs.register_stair_and_slab("green", "wool:green",
951 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
952 {"wool_green.png"},
953 S("Green Wool Stair"),
954 S("Outer Green Wool Stair"),
955 S("Inner Green Wool Stair"),
956 S("Green Wool Slab"),
957 hades_sounds.node_sound_leaves_defaults())
959 stairs.register_stair_and_slab("cyan", "wool:cyan",
960 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
961 {"wool_cyan.png"},
962 S("Cyan Wool Stair"),
963 S("Outer Cyan Wool Stair"),
964 S("Inner Cyan Wool Stair"),
965 S("Cyan Wool Slab"),
966 hades_sounds.node_sound_leaves_defaults())
968 stairs.register_stair_and_slab("blue", "wool:blue",
969 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
970 {"wool_blue.png"},
971 S("Blue Wool Stair"),
972 S("Outer Blue Wool Stair"),
973 S("Inner Blue Wool Stair"),
974 S("Blue Wool Slab"),
975 hades_sounds.node_sound_leaves_defaults())
977 stairs.register_stair_and_slab("magenta", "wool:magenta",
978 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
979 {"wool_magenta.png"},
980 S("Magenta Wool Stair"),
981 S("Outer Magenta Wool Stair"),
982 S("Inner Magenta Wool Stair"),
983 S("Magenta Wool Slab"),
984 hades_sounds.node_sound_leaves_defaults())
986 stairs.register_stair_and_slab("orange", "wool:orange",
987 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
988 {"wool_orange.png"},
989 S("Orange Wool Stair"),
990 S("Outer Orange Wool Stair"),
991 S("Inner Orange Wool Stair"),
992 S("Orange Wool Slab"),
993 hades_sounds.node_sound_leaves_defaults())
995 stairs.register_stair_and_slab("violet", "wool:violet",
996 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
997 {"wool_violet.png"},
998 S("Violet Wool Stair"),
999 S("Outer Violet Wool Stair"),
1000 S("Inner Violet Wool Stair"),
1001 S("Violet Wool Slab"),
1002 hades_sounds.node_sound_leaves_defaults())
1004 stairs.register_stair_and_slab("brown", "wool:brown",
1005 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
1006 {"wool_brown.png"},
1007 S("Brown Wool Stair"),
1008 S("Outer Brown Wool Stair"),
1009 S("Inner Brown Wool Stair"),
1010 S("Brown Wool Slab"),
1011 hades_sounds.node_sound_leaves_defaults())
1013 stairs.register_stair_and_slab("pink", "wool:pink",
1014 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
1015 {"wool_pink.png"},
1016 S("Pink Wool Stair"),
1017 S("Outer Pink Wool Stair"),
1018 S("Inner Pink Wool Stair"),
1019 S("Pink Wool Slab"),
1020 hades_sounds.node_sound_leaves_defaults())
1022 stairs.register_stair_and_slab("dark_grey", "wool:dark_grey",
1023 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
1024 {"wool_dark_grey.png"},
1025 S("Dark Grey Wool Stair"),
1026 S("Outer Dark Grey Wool Stair"),
1027 S("Inner Dark Grey Wool Stair"),
1028 S("Dark Grey Wool Slab"),
1029 hades_sounds.node_sound_leaves_defaults())
1031 stairs.register_stair_and_slab("dark_green", "wool:dark_green",
1032 {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
1033 {"wool_dark_green.png"},
1034 S("Dark Green Wool Stair"),
1035 S("Outer Dark Green Wool Stair"),
1036 S("S(Inner Dark Green Wool Stair"),
1037 S("Dark Green Wool Slab"),
1038 hades_sounds.node_sound_leaves_defaults())
1041 -- Glowing crystal
1043 -- Node will be called stairs:stair_<subname>
1045 minetest.register_node("stairs:stair_glowcrystal_block", {
1046 description = S("Glowing Stair"),
1047 drawtype = "nodebox",
1048 tiles = {"glowcrystals_block_glowcrystal.png"},
1049 paramtype = "light",
1050 paramtype2 = "facedir",
1051 sunlight_propagates = true,
1052 light_source = 14,
1053 is_ground_content = false,
1054 groups = {crumbly=2,cracky=2, glowing=1},
1055 sounds = hades_sounds.node_sound_stone_defaults(),
1056 node_box = {
1057 type = "fixed",
1058 fixed = {
1059 {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
1060 {-0.5, 0, 0, 0.5, 0.5, 0.5},
1063 on_place = function(itemstack, placer, pointed_thing)
1064 if pointed_thing.type ~= "node" then
1065 return itemstack
1068 local p0 = pointed_thing.under
1069 local p1 = pointed_thing.above
1070 local param2 = 0
1072 local placer_pos = placer:get_pos()
1073 if placer_pos then
1074 local dir = {
1075 x = p1.x - placer_pos.x,
1076 y = p1.y - placer_pos.y,
1077 z = p1.z - placer_pos.z
1079 param2 = minetest.dir_to_facedir(dir)
1082 if p0.y-1 == p1.y then
1083 param2 = param2 + 20
1084 if param2 == 21 then
1085 param2 = 23
1086 elseif param2 == 23 then
1087 param2 = 21
1091 return minetest.item_place(itemstack, placer, pointed_thing, param2)
1092 end,
1095 minetest.register_craft({
1096 output = 'stairs:stair_glowcrystal_block 8',
1097 recipe = {
1098 {"glowcrystals:glowcrystal_block", "", ""},
1099 {"glowcrystals:glowcrystal_block", "glowcrystals:glowcrystal_block", ""},
1100 {"glowcrystals:glowcrystal_block", "glowcrystals:glowcrystal_block", "glowcrystals:glowcrystal_block"},
1103 -- Flipped recipe
1104 minetest.register_craft({
1105 output = 'stairs:stair_glowcrystal_block 8',
1106 recipe = {
1107 {"", "", "glowcrystals:glowcrystal_block"},
1108 {"", "glowcrystals:glowcrystal_block", "glowcrystals:glowcrystal_block"},
1109 {"glowcrystals:glowcrystal_block", "glowcrystals:glowcrystal_block", "glowcrystals:glowcrystal_block"},
1114 -- Node will be called stairs:stair_out_<subname>
1115 minetest.register_node("stairs:stair_out_glowcrystal_block", {
1116 description = S("Outer Glowing Stair"),
1117 drawtype = "nodebox",
1118 tiles = {"glowcrystals_block_glowcrystal.png"},
1119 paramtype = "light",
1120 paramtype2 = "facedir",
1121 sunlight_propagates = true,
1122 light_source = 14,
1123 is_ground_content = false,
1124 groups = {crumbly=2,cracky=2, glowing=1},
1125 sounds = hades_sounds.node_sound_stone_defaults(),
1126 node_box = {
1127 type = "fixed",
1128 fixed = {
1129 {-0.5, -0.5, -0.5, 0.5, 0, 0},
1130 {-0.5, -0.5, 0, 0, 0.5, 0.5},
1131 {0, -0.5, 0, 0.5, 0, 0.5},
1134 on_place = function(itemstack, placer, pointed_thing)
1135 if pointed_thing.type ~= "node" then
1136 return itemstack
1139 local p0 = pointed_thing.under
1140 local p1 = pointed_thing.above
1141 local param2 = 0
1143 local placer_pos = placer:get_pos()
1144 if placer_pos then
1145 local dir = {
1146 x = p1.x - placer_pos.x,
1147 y = p1.y - placer_pos.y,
1148 z = p1.z - placer_pos.z
1150 param2 = minetest.dir_to_facedir(dir)
1153 if p0.y-1 == p1.y then
1154 param2 = param2 + 20
1155 if param2 == 21 then
1156 param2 = 23
1157 elseif param2 == 23 then
1158 param2 = 21
1162 return minetest.item_place(itemstack, placer, pointed_thing, param2)
1163 end,
1166 minetest.register_craft({
1167 output = 'stairs:stair_out_glowcrystal_block 4',
1168 recipe = {
1169 {"", "glowcrystals:glowcrystal_block", ""},
1170 {"glowcrystals:glowcrystal_block", "glowcrystals:glowcrystal_block", "glowcrystals:glowcrystal_block"},
1174 -- Node will be called stairs:stair_in_<subname>
1175 minetest.register_node("stairs:stair_in_glowcrystal_block", {
1176 description = S("Inner Glowing Stair"),
1177 drawtype = "nodebox",
1178 tiles = {"glowcrystals_block_glowcrystal.png"},
1179 paramtype = "light",
1180 paramtype2 = "facedir",
1181 sunlight_propagates = true,
1182 light_source = 14,
1183 is_ground_content = false,
1184 groups = {crumbly=2,cracky=2, glowing=1},
1185 sounds = hades_sounds.node_sound_stone_defaults(),
1186 node_box = {
1187 type = "fixed",
1188 fixed = {
1189 {-0.5, -0.5, 0, 0.5, 0.5, 0.5},
1190 {-0.5, -0.5, -0.5, 0, 0.5, 0},
1191 {0, -0.5, -0.5, 0.5, 0, 0},
1194 on_place = function(itemstack, placer, pointed_thing)
1195 if pointed_thing.type ~= "node" then
1196 return itemstack
1199 local p0 = pointed_thing.under
1200 local p1 = pointed_thing.above
1201 local param2 = 0
1203 local placer_pos = placer:get_pos()
1204 if placer_pos then
1205 local dir = {
1206 x = p1.x - placer_pos.x,
1207 y = p1.y - placer_pos.y,
1208 z = p1.z - placer_pos.z
1210 param2 = minetest.dir_to_facedir(dir)
1213 if p0.y-1 == p1.y then
1214 param2 = param2 + 20
1215 if param2 == 21 then
1216 param2 = 23
1217 elseif param2 == 23 then
1218 param2 = 21
1222 return minetest.item_place(itemstack, placer, pointed_thing, param2)
1223 end,
1226 minetest.register_craft({
1227 output = 'stairs:stair_in_glowcrystal_block 6',
1228 recipe = {
1229 {"", "glowcrystals:glowcrystal_block", ""},
1230 {"glowcrystals:glowcrystal_block", "", "glowcrystals:glowcrystal_block"},
1231 {"glowcrystals:glowcrystal_block", "glowcrystals:glowcrystal_block", "glowcrystals:glowcrystal_block"},
1236 -- Node will be called stairs:slab_<subname>
1238 minetest.register_node("stairs:slab_glowcrystal_block", {
1239 description = S("Glowing Slab"),
1240 drawtype = "nodebox",
1241 tiles = {"glowcrystals_block_glowcrystal.png"},
1242 paramtype = "light",
1243 paramtype2 = "facedir",
1244 sunlight_propagates = true,
1245 light_source = 14,
1246 is_ground_content = false,
1247 groups = {crumbly=2,cracky=2, glowing=1},
1248 sounds = hades_sounds.node_sound_stone_defaults(),
1249 node_box = {
1250 type = "fixed",
1251 fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
1253 on_place = function(itemstack, placer, pointed_thing)
1254 if pointed_thing.type ~= "node" then
1255 return itemstack
1258 -- If it's being placed on an another similar one, replace it with
1259 -- a full block
1260 local slabpos = nil
1261 local slabnode = nil
1262 local p0 = pointed_thing.under
1263 local p1 = pointed_thing.above
1264 local n0 = minetest.get_node(p0)
1265 local n1 = minetest.get_node(p1)
1266 local param2 = 0
1268 local n0_is_upside_down = (n0.name == "stairs:slab_glowcrystal_block" and
1269 n0.param2 >= 20)
1271 if n0.name == "stairs:slab_glowcrystal_block" and not n0_is_upside_down and p0.y+1 == p1.y then
1272 slabpos = p0
1273 slabnode = n0
1274 elseif n1.name == "stairs:slab_glowcrystal_block" then
1275 slabpos = p1
1276 slabnode = n1
1278 if slabpos then
1279 -- Remove the slab at slabpos
1280 minetest.remove_node(slabpos)
1281 -- Make a fake stack of a single item and try to place it
1282 local fakestack = ItemStack(recipeitem)
1283 fakestack:set_count(itemstack:get_count())
1285 pointed_thing.above = slabpos
1286 local success
1287 fakestack, success = minetest.item_place(fakestack, placer, pointed_thing)
1288 -- If the item was taken from the fake stack, decrement original
1289 if success then
1290 itemstack:set_count(fakestack:get_count())
1291 -- Else put old node back
1292 else
1293 minetest.set_node(slabpos, slabnode)
1295 return itemstack
1298 -- Upside down slabs
1299 if p0.y-1 == p1.y then
1300 -- Turn into full block if pointing at a existing slab
1301 if n0_is_upside_down then
1302 -- Remove the slab at the position of the slab
1303 minetest.remove_node(p0)
1304 -- Make a fake stack of a single item and try to place it
1305 local fakestack = ItemStack("glowcrystals:glowcrystal_block")
1306 fakestack:set_count(itemstack:get_count())
1308 pointed_thing.above = p0
1309 local success
1310 fakestack, success = minetest.item_place(fakestack, placer, pointed_thing)
1311 -- If the item was taken from the fake stack, decrement original
1312 if success then
1313 itemstack:set_count(fakestack:get_count())
1314 -- Else put old node back
1315 else
1316 minetest.set_node(p0, n0)
1318 return itemstack
1321 -- Place upside down slab
1322 param2 = 20
1325 -- If pointing at the side of a upside down slab
1326 if n0_is_upside_down and p0.y+1 ~= p1.y then
1327 param2 = 20
1330 return minetest.item_place(itemstack, placer, pointed_thing, param2)
1331 end,
1334 minetest.register_craft({
1335 output = 'stairs:slab_glowcrystal_block 6',
1336 recipe = {
1337 {"glowcrystals:glowcrystal_block", "glowcrystals:glowcrystal_block", "glowcrystals:glowcrystal_block"},