1 local S
= minetest
.get_translator("stairs")
3 -- Minetest 0.4 mod: stairs
4 -- See README.txt for licensing and other information.
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
,
15 paramtype2
= "facedir",
16 is_ground_content
= false,
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
31 local p0
= pointed_thing
.under
32 local p1
= pointed_thing
.above
35 local placer_pos
= placer
:get_pos()
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
)
45 if p0
.y
-1 == p1
.y
then
49 elseif param2
== 23 then
54 return minetest
.item_place(itemstack
, placer
, pointed_thing
, param2
)
58 minetest
.register_craft({
59 output
= 'stairs:stair_' .. subname
.. ' 8',
62 {recipeitem
, recipeitem
, ""},
63 {recipeitem
, recipeitem
, recipeitem
},
67 minetest
.register_craft({
68 output
= 'stairs:stair_' .. subname
.. ' 8',
71 {"", recipeitem
, recipeitem
},
72 {recipeitem
, recipeitem
, recipeitem
},
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
,
84 paramtype2
= "facedir",
85 is_ground_content
= false,
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
101 local p0
= pointed_thing
.under
102 local p1
= pointed_thing
.above
105 local placer_pos
= placer
:get_pos()
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
119 elseif param2
== 23 then
124 return minetest
.item_place(itemstack
, placer
, pointed_thing
, param2
)
128 minetest
.register_craft({
129 output
= 'stairs:stair_out_' .. subname
.. ' 4',
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",
144 paramtype2
= "facedir",
145 is_ground_content
= false,
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
161 local p0
= pointed_thing
.under
162 local p1
= pointed_thing
.above
165 local placer_pos
= placer
:get_pos()
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
179 elseif param2
== 23 then
184 return minetest
.item_place(itemstack
, placer
, pointed_thing
, param2
)
188 minetest
.register_craft({
189 output
= 'stairs:stair_in_' .. subname
.. ' 6',
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",
205 paramtype2
= "facedir",
206 is_ground_content
= false,
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
218 -- If it's being placed on an another similar one, replace it with
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
)
228 local n0_is_upside_down
= (n0
.name
== "stairs:slab_" .. subname
and
231 if n0
.name
== "stairs:slab_" .. subname
and not n0_is_upside_down
and p0
.y
+1 == p1
.y
then
234 elseif n1
.name
== "stairs:slab_" .. subname
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
247 fakestack
, success
= minetest
.item_place(fakestack
, placer
, pointed_thing
)
248 -- If the item was taken from the fake stack, decrement original
250 itemstack
:set_count(fakestack
:get_count())
251 -- Else put old node back
253 minetest
.set_node(slabpos
, slabnode
)
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
270 fakestack
, success
= minetest
.item_place(fakestack
, placer
, pointed_thing
)
271 -- If the item was taken from the fake stack, decrement original
273 itemstack
:set_count(fakestack
:get_count())
274 -- Else put old node back
276 minetest
.set_node(p0
, n0
)
281 -- Place upside down slab
285 -- If pointing at the side of a upside down slab
286 if n0_is_upside_down
and p0
.y
+1 ~= p1
.y
then
290 return minetest
.item_place(itemstack
, placer
, pointed_thing
, param2
)
294 minetest
.register_craft({
295 output
= 'stairs:slab_' .. subname
.. ' 6',
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"),
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())
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"),
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())
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"),
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"),
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"),
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"),
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"},
480 S("Outer Red Wood Stair"),
481 S("Inner Red Wood Stair"),
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",
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",
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",
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",
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",
551 {"default_stone.png"},
553 S("Outer Stone Stair"),
554 S("Inner Stone Stair"),
556 hades_sounds
.node_sound_stone_defaults())
558 stairs
.register_stair_and_slab("stonebrick_baked", "hades_core:stonebrick_baked",
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",
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",
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",
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",
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",
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",
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",
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",
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",
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",
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",
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",
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",
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",
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",
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",
706 {"default_brick_red.png"},
707 S("Red Brick Stair"),
708 S("Outer Red Brick Stair"),
709 S("Inner Red Brick Stair"),
711 hades_sounds
.node_sound_stone_defaults())
713 stairs
.register_stair_and_slab("brick_violet", "hades_core:brick_violet",
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",
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",
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"),
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",
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",
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",
788 {"default_chondrite.png"},
789 S("Chondrite Stair"),
790 S("Outer Chondrite Stair"),
791 S("Inner Chondrite Stair"),
793 hades_sounds
.node_sound_stone_defaults())
795 stairs
.register_stair_and_slab("marble_brick", "hades_core:marble_brick",
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",
806 {"default_marble.png"},
808 S("Outer Marble Stair"),
809 S("Inner Marble Stair"),
811 hades_sounds
.node_sound_stone_defaults())
813 stairs
.register_stair_and_slab("tuff_brick", "hades_core:tuff_brick",
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",
824 {"default_tuff.png"},
826 S("Outer Tuff Stair"),
827 S("Inner Tuff Stair"),
829 hades_sounds
.node_sound_stone_defaults())
831 stairs
.register_stair_and_slab("tuff_baked_brick", "hades_core:tuff_baked_brick",
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",
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",
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",
860 {"default_essexite.png"},
862 S("Outer Essexite Stair"),
863 S("Inner Essexite Stair"),
865 hades_sounds
.node_sound_stone_defaults())
867 stairs
.register_stair_and_slab("rusty_block", "columnia:rusty_block",
869 {"columnia_rusty_block.png"},
871 S("Outer Rusty Stair"),
872 S("Inner Rusty Stair"),
874 hades_sounds
.node_sound_metal_defaults())
876 stairs
.register_stair_and_slab("cactus_brick", "hades_core:cactus_brick",
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",
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"},
898 S("Outer Straw Stair"),
899 S("Inner Straw Stair"),
901 hades_sounds
.node_sound_leaves_defaults())
905 stairs
.register_stair_and_slab("white", "wool:white",
906 {snappy
=2,choppy
=2,oddly_breakable_by_hand
=2,flammable
=3},
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},
917 S("Grey Wool Stair"),
918 S("Outer Grey Wool Stair"),
919 S("Inner Grey Wool Stair"),
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},
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},
936 S("Outer Red Wool Stair"),
937 S("Inner Red Wool Stair"),
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},
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},
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},
962 S("Cyan Wool Stair"),
963 S("Outer Cyan Wool Stair"),
964 S("Inner Cyan Wool Stair"),
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},
971 S("Blue Wool Stair"),
972 S("Outer Blue Wool Stair"),
973 S("Inner Blue Wool Stair"),
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},
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},
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},
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},
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())
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,
1053 is_ground_content
= false,
1054 groups
= {crumbly
=2,cracky
=2, glowing
=1},
1055 sounds
= hades_sounds
.node_sound_stone_defaults(),
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
1068 local p0
= pointed_thing
.under
1069 local p1
= pointed_thing
.above
1072 local placer_pos
= placer
:get_pos()
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
1086 elseif param2
== 23 then
1091 return minetest
.item_place(itemstack
, placer
, pointed_thing
, param2
)
1095 minetest
.register_craft({
1096 output
= 'stairs:stair_glowcrystal_block 8',
1098 {"glowcrystals:glowcrystal_block", "", ""},
1099 {"glowcrystals:glowcrystal_block", "glowcrystals:glowcrystal_block", ""},
1100 {"glowcrystals:glowcrystal_block", "glowcrystals:glowcrystal_block", "glowcrystals:glowcrystal_block"},
1104 minetest
.register_craft({
1105 output
= 'stairs:stair_glowcrystal_block 8',
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,
1123 is_ground_content
= false,
1124 groups
= {crumbly
=2,cracky
=2, glowing
=1},
1125 sounds
= hades_sounds
.node_sound_stone_defaults(),
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
1139 local p0
= pointed_thing
.under
1140 local p1
= pointed_thing
.above
1143 local placer_pos
= placer
:get_pos()
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
1157 elseif param2
== 23 then
1162 return minetest
.item_place(itemstack
, placer
, pointed_thing
, param2
)
1166 minetest
.register_craft({
1167 output
= 'stairs:stair_out_glowcrystal_block 4',
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,
1183 is_ground_content
= false,
1184 groups
= {crumbly
=2,cracky
=2, glowing
=1},
1185 sounds
= hades_sounds
.node_sound_stone_defaults(),
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
1199 local p0
= pointed_thing
.under
1200 local p1
= pointed_thing
.above
1203 local placer_pos
= placer
:get_pos()
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
1217 elseif param2
== 23 then
1222 return minetest
.item_place(itemstack
, placer
, pointed_thing
, param2
)
1226 minetest
.register_craft({
1227 output
= 'stairs:stair_in_glowcrystal_block 6',
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,
1246 is_ground_content
= false,
1247 groups
= {crumbly
=2,cracky
=2, glowing
=1},
1248 sounds
= hades_sounds
.node_sound_stone_defaults(),
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
1258 -- If it's being placed on an another similar one, replace it with
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
)
1268 local n0_is_upside_down
= (n0
.name
== "stairs:slab_glowcrystal_block" and
1271 if n0
.name
== "stairs:slab_glowcrystal_block" and not n0_is_upside_down
and p0
.y
+1 == p1
.y
then
1274 elseif n1
.name
== "stairs:slab_glowcrystal_block" 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
1287 fakestack
, success
= minetest
.item_place(fakestack
, placer
, pointed_thing
)
1288 -- If the item was taken from the fake stack, decrement original
1290 itemstack
:set_count(fakestack
:get_count())
1291 -- Else put old node back
1293 minetest
.set_node(slabpos
, slabnode
)
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
1310 fakestack
, success
= minetest
.item_place(fakestack
, placer
, pointed_thing
)
1311 -- If the item was taken from the fake stack, decrement original
1313 itemstack
:set_count(fakestack
:get_count())
1314 -- Else put old node back
1316 minetest
.set_node(p0
, n0
)
1321 -- Place upside down slab
1325 -- If pointing at the side of a upside down slab
1326 if n0_is_upside_down
and p0
.y
+1 ~= p1
.y
then
1330 return minetest
.item_place(itemstack
, placer
, pointed_thing
, param2
)
1334 minetest
.register_craft({
1335 output
= 'stairs:slab_glowcrystal_block 6',
1337 {"glowcrystals:glowcrystal_block", "glowcrystals:glowcrystal_block", "glowcrystals:glowcrystal_block"},