Skip to content

Commit 5b3b609

Browse files
authoredOct 3, 2018
Stairs: Add field to determine world-aligned textures (#2219)
All stair/slab nodes with parent nodes that are rotatable (wood and bricks) are reverted to not having world-aligned textures, to fix the breakage of rotated stair/slab appearence in worlds. Update, and add missing documentation to, game_api.txt.
1 parent 24900f7 commit 5b3b609

File tree

3 files changed

+144
-68
lines changed

3 files changed

+144
-68
lines changed
 

Diff for: ‎game_api.txt

+40-16
Original file line numberDiff line numberDiff line change
@@ -672,31 +672,55 @@ Stairs API
672672
The stairs API lets you register stairs and slabs and ensures that they are registered the same way as those
673673
delivered with Minetest Game, to keep them compatible with other mods.
674674

675-
`stairs.register_stair(subname, recipeitem, groups, images, description, sounds)`
675+
`stairs.register_stair(subname, recipeitem, groups, images, description, sounds, worldaligntex)`
676676

677-
* Registers a stair.
677+
* Registers a stair
678678
* `subname`: Basically the material name (e.g. cobble) used for the stair name. Nodename pattern: "stairs:stair_subname"
679679
* `recipeitem`: Item used in the craft recipe, e.g. "default:cobble", may be `nil`
680-
* `groups`: see [Known damage and digging time defining groups]
681-
* `images`: see [Tile definition]
682-
* `description`: used for the description field in the stair's definition
683-
* `sounds`: see [#Default sounds]
680+
* `groups`: See [Known damage and digging time defining groups]
681+
* `images`: See [Tile definition]
682+
* `description`: Used for the description field in the stair's definition
683+
* `sounds`: See [#Default sounds]
684+
* `worldaligntex`: A bool to set all textures world-aligned. Default false. See [Tile definition]
684685

685-
`stairs.register_slab(subname, recipeitem, groups, images, description, sounds)`
686+
`stairs.register_slab(subname, recipeitem, groups, images, description, sounds, worldaligntex)`
686687

687-
* Registers a slabs
688-
* `subname`: Basically the material name (e.g. cobble) used for the stair name. Nodename pattern: "stairs:stair_subname"
688+
* Registers a slab
689+
* `subname`: Basically the material name (e.g. cobble) used for the slab name. Nodename pattern: "stairs:slab_subname"
689690
* `recipeitem`: Item used in the craft recipe, e.g. "default:cobble"
690-
* `groups`: see [Known damage and digging time defining groups]
691-
* `images`: see [Tile definition]
692-
* `description`: used for the description field in the stair's definition
693-
* `sounds`: see [#Default sounds]
691+
* `groups`: See [Known damage and digging time defining groups]
692+
* `images`: See [Tile definition]
693+
* `description`: Used for the description field in the slab's definition
694+
* `sounds`: See [#Default sounds]
695+
* `worldaligntex`: A bool to set all textures world-aligned. Default false. See [Tile definition]
696+
697+
`stairs.register_stair_inner(subname, recipeitem, groups, images, description, sounds, worldaligntex)`
698+
699+
* Registers an inner corner stair
700+
* `subname`: Basically the material name (e.g. cobble) used for the stair name. Nodename pattern: "stairs:stair_inner_subname"
701+
* `recipeitem`: Item used in the craft recipe, e.g. "default:cobble", may be `nil`
702+
* `groups`: See [Known damage and digging time defining groups]
703+
* `images`: See [Tile definition]
704+
* `description`: Used for the description field in the stair's definition
705+
* `sounds`: See [#Default sounds]
706+
* `worldaligntex`: A bool to set all textures world-aligned. Default false. See [Tile definition]
707+
708+
`stairs.register_stair_outer(subname, recipeitem, groups, images, description, sounds, worldaligntex)`
709+
710+
* Registers an outer corner stair
711+
* `subname`: Basically the material name (e.g. cobble) used for the stair name. Nodename pattern: "stairs:stair_outer_subname"
712+
* `recipeitem`: Item used in the craft recipe, e.g. "default:cobble", may be `nil`
713+
* `groups`: See [Known damage and digging time defining groups]
714+
* `images`: See [Tile definition]
715+
* `description`: Used for the description field in the stair's definition
716+
* `sounds`: See [#Default sounds]
717+
* `worldaligntex`: A bool to set all textures world-aligned. Default false. See [Tile definition]
694718

695-
`stairs.register_stair_and_slab(subname, recipeitem, groups, images, desc_stair, desc_slab, sounds)`
719+
`stairs.register_stair_and_slab(subname, recipeitem, groups, images, desc_stair, desc_slab, sounds, worldaligntex)`
696720

697-
* A wrapper for stairs.register_stair and stairs.register_slab
721+
* A wrapper for stairs.register_stair, stairs.register_slab, stairs.register_stair_inner, stairs.register_stair_outer
698722
* Uses almost the same arguments as stairs.register_stair
699-
* `desc_stair`: Description for stair node
723+
* `desc_stair`: Description for stair nodes. For corner stairs 'Inner' or 'Outer' will be prefixed
700724
* `desc_slab`: Description for slab node
701725

702726

Diff for: ‎mods/farming/nodes.lua

+2-1
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,8 @@ stairs.register_stair_and_slab(
113113
{"farming_straw.png"},
114114
"Straw Stair",
115115
"Straw Slab",
116-
default.node_sound_leaves_defaults()
116+
default.node_sound_leaves_defaults(),
117+
true
117118
)
118119

119120
minetest.register_abm({

Diff for: ‎mods/stairs/init.lua

+102-51
Original file line numberDiff line numberDiff line change
@@ -48,22 +48,25 @@ end
4848
-- Register stair
4949
-- Node will be called stairs:stair_<subname>
5050

51-
function stairs.register_stair(subname, recipeitem, groups, images, description, sounds)
51+
function stairs.register_stair(subname, recipeitem, groups, images, description,
52+
sounds, worldaligntex)
5253
-- Set backface culling and world-aligned textures
5354
local stair_images = {}
5455
for i, image in ipairs(images) do
5556
if type(image) == "string" then
5657
stair_images[i] = {
5758
name = image,
5859
backface_culling = true,
59-
align_style = "world",
6060
}
61+
if worldaligntex then
62+
stair_images[i].align_style = "world"
63+
end
6164
else
6265
stair_images[i] = table.copy(image)
6366
if stair_images[i].backface_culling == nil then
6467
stair_images[i].backface_culling = true
6568
end
66-
if stair_images[i].align_style == nil then
69+
if worldaligntex and stair_images[i].align_style == nil then
6770
stair_images[i].align_style = "world"
6871
end
6972
end
@@ -147,18 +150,21 @@ local slab_trans_dir = {[0] = 8, 0, 2, 1, 3, 4}
147150
-- Register slab
148151
-- Node will be called stairs:slab_<subname>
149152

150-
function stairs.register_slab(subname, recipeitem, groups, images, description, sounds)
153+
function stairs.register_slab(subname, recipeitem, groups, images, description,
154+
sounds, worldaligntex)
151155
-- Set world-aligned textures
152156
local slab_images = {}
153157
for i, image in ipairs(images) do
154158
if type(image) == "string" then
155159
slab_images[i] = {
156160
name = image,
157-
align_style = "world",
158161
}
162+
if worldaligntex then
163+
slab_images[i].align_style = "world"
164+
end
159165
else
160166
slab_images[i] = table.copy(image)
161-
if image.align_style == nil then
167+
if worldaligntex and image.align_style == nil then
162168
slab_images[i].align_style = "world"
163169
end
164170
end
@@ -300,22 +306,25 @@ end
300306
-- Register inner stair
301307
-- Node will be called stairs:stair_inner_<subname>
302308

303-
function stairs.register_stair_inner(subname, recipeitem, groups, images, description, sounds)
309+
function stairs.register_stair_inner(subname, recipeitem, groups, images,
310+
description, sounds, worldaligntex)
304311
-- Set backface culling and world-aligned textures
305312
local stair_images = {}
306313
for i, image in ipairs(images) do
307314
if type(image) == "string" then
308315
stair_images[i] = {
309316
name = image,
310317
backface_culling = true,
311-
align_style = "world",
312318
}
319+
if worldaligntex then
320+
stair_images[i].align_style = "world"
321+
end
313322
else
314323
stair_images[i] = table.copy(image)
315324
if stair_images[i].backface_culling == nil then
316325
stair_images[i].backface_culling = true
317326
end
318-
if stair_images[i].align_style == nil then
327+
if worldaligntex and stair_images[i].align_style == nil then
319328
stair_images[i].align_style = "world"
320329
end
321330
end
@@ -378,22 +387,25 @@ end
378387
-- Register outer stair
379388
-- Node will be called stairs:stair_outer_<subname>
380389

381-
function stairs.register_stair_outer(subname, recipeitem, groups, images, description, sounds)
390+
function stairs.register_stair_outer(subname, recipeitem, groups, images,
391+
description, sounds, worldaligntex)
382392
-- Set backface culling and world-aligned textures
383393
local stair_images = {}
384394
for i, image in ipairs(images) do
385395
if type(image) == "string" then
386396
stair_images[i] = {
387397
name = image,
388398
backface_culling = true,
389-
align_style = "world",
390399
}
400+
if worldaligntex then
401+
stair_images[i].align_style = "world"
402+
end
391403
else
392404
stair_images[i] = table.copy(image)
393405
if stair_images[i].backface_culling == nil then
394406
stair_images[i].backface_culling = true
395407
end
396-
if stair_images[i].align_style == nil then
408+
if worldaligntex and stair_images[i].align_style == nil then
397409
stair_images[i].align_style = "world"
398410
end
399411
end
@@ -455,11 +467,16 @@ end
455467
-- Stair/slab registration function.
456468
-- Nodes will be called stairs:{stair,slab}_<subname>
457469

458-
function stairs.register_stair_and_slab(subname, recipeitem, groups, images, desc_stair, desc_slab, sounds)
459-
stairs.register_stair(subname, recipeitem, groups, images, desc_stair, sounds)
460-
stairs.register_stair_inner(subname, recipeitem, groups, images, desc_stair, sounds)
461-
stairs.register_stair_outer(subname, recipeitem, groups, images, desc_stair, sounds)
462-
stairs.register_slab(subname, recipeitem, groups, images, desc_slab, sounds)
470+
function stairs.register_stair_and_slab(subname, recipeitem, groups, images,
471+
desc_stair, desc_slab, sounds, worldaligntex)
472+
stairs.register_stair(subname, recipeitem, groups, images, desc_stair,
473+
sounds, worldaligntex)
474+
stairs.register_stair_inner(subname, recipeitem, groups, images, desc_stair,
475+
sounds, worldaligntex)
476+
stairs.register_stair_outer(subname, recipeitem, groups, images, desc_stair,
477+
sounds, worldaligntex)
478+
stairs.register_slab(subname, recipeitem, groups, images, desc_slab,
479+
sounds, worldaligntex)
463480
end
464481

465482

@@ -472,7 +489,8 @@ stairs.register_stair_and_slab(
472489
{"default_wood.png"},
473490
"Wooden Stair",
474491
"Wooden Slab",
475-
default.node_sound_wood_defaults()
492+
default.node_sound_wood_defaults(),
493+
false
476494
)
477495

478496
stairs.register_stair_and_slab(
@@ -482,7 +500,8 @@ stairs.register_stair_and_slab(
482500
{"default_junglewood.png"},
483501
"Jungle Wood Stair",
484502
"Jungle Wood Slab",
485-
default.node_sound_wood_defaults()
503+
default.node_sound_wood_defaults(),
504+
false
486505
)
487506

488507
stairs.register_stair_and_slab(
@@ -492,7 +511,8 @@ stairs.register_stair_and_slab(
492511
{"default_pine_wood.png"},
493512
"Pine Wood Stair",
494513
"Pine Wood Slab",
495-
default.node_sound_wood_defaults()
514+
default.node_sound_wood_defaults(),
515+
false
496516
)
497517

498518
stairs.register_stair_and_slab(
@@ -502,7 +522,8 @@ stairs.register_stair_and_slab(
502522
{"default_acacia_wood.png"},
503523
"Acacia Wood Stair",
504524
"Acacia Wood Slab",
505-
default.node_sound_wood_defaults()
525+
default.node_sound_wood_defaults(),
526+
false
506527
)
507528

508529
stairs.register_stair_and_slab(
@@ -512,7 +533,8 @@ stairs.register_stair_and_slab(
512533
{"default_aspen_wood.png"},
513534
"Aspen Wood Stair",
514535
"Aspen Wood Slab",
515-
default.node_sound_wood_defaults()
536+
default.node_sound_wood_defaults(),
537+
false
516538
)
517539

518540
stairs.register_stair_and_slab(
@@ -522,7 +544,8 @@ stairs.register_stair_and_slab(
522544
{"default_stone.png"},
523545
"Stone Stair",
524546
"Stone Slab",
525-
default.node_sound_stone_defaults()
547+
default.node_sound_stone_defaults(),
548+
true
526549
)
527550

528551
stairs.register_stair_and_slab(
@@ -532,7 +555,8 @@ stairs.register_stair_and_slab(
532555
{"default_cobble.png"},
533556
"Cobblestone Stair",
534557
"Cobblestone Slab",
535-
default.node_sound_stone_defaults()
558+
default.node_sound_stone_defaults(),
559+
true
536560
)
537561

538562
stairs.register_stair_and_slab(
@@ -542,7 +566,8 @@ stairs.register_stair_and_slab(
542566
{"default_mossycobble.png"},
543567
"Mossy Cobblestone Stair",
544568
"Mossy Cobblestone Slab",
545-
default.node_sound_stone_defaults()
569+
default.node_sound_stone_defaults(),
570+
true
546571
)
547572

548573
stairs.register_stair_and_slab(
@@ -552,7 +577,8 @@ stairs.register_stair_and_slab(
552577
{"default_stone_brick.png"},
553578
"Stone Brick Stair",
554579
"Stone Brick Slab",
555-
default.node_sound_stone_defaults()
580+
default.node_sound_stone_defaults(),
581+
false
556582
)
557583

558584
stairs.register_stair_and_slab(
@@ -562,7 +588,8 @@ stairs.register_stair_and_slab(
562588
{"default_stone_block.png"},
563589
"Stone Block Stair",
564590
"Stone Block Slab",
565-
default.node_sound_stone_defaults()
591+
default.node_sound_stone_defaults(),
592+
true
566593
)
567594

568595
stairs.register_stair_and_slab(
@@ -572,7 +599,8 @@ stairs.register_stair_and_slab(
572599
{"default_desert_stone.png"},
573600
"Desert Stone Stair",
574601
"Desert Stone Slab",
575-
default.node_sound_stone_defaults()
602+
default.node_sound_stone_defaults(),
603+
true
576604
)
577605

578606
stairs.register_stair_and_slab(
@@ -582,7 +610,8 @@ stairs.register_stair_and_slab(
582610
{"default_desert_cobble.png"},
583611
"Desert Cobblestone Stair",
584612
"Desert Cobblestone Slab",
585-
default.node_sound_stone_defaults()
613+
default.node_sound_stone_defaults(),
614+
true
586615
)
587616

588617
stairs.register_stair_and_slab(
@@ -592,7 +621,8 @@ stairs.register_stair_and_slab(
592621
{"default_desert_stone_brick.png"},
593622
"Desert Stone Brick Stair",
594623
"Desert Stone Brick Slab",
595-
default.node_sound_stone_defaults()
624+
default.node_sound_stone_defaults(),
625+
false
596626
)
597627

598628
stairs.register_stair_and_slab(
@@ -602,7 +632,8 @@ stairs.register_stair_and_slab(
602632
{"default_desert_stone_block.png"},
603633
"Desert Stone Block Stair",
604634
"Desert Stone Block Slab",
605-
default.node_sound_stone_defaults()
635+
default.node_sound_stone_defaults(),
636+
true
606637
)
607638

608639
stairs.register_stair_and_slab(
@@ -612,7 +643,8 @@ stairs.register_stair_and_slab(
612643
{"default_sandstone.png"},
613644
"Sandstone Stair",
614645
"Sandstone Slab",
615-
default.node_sound_stone_defaults()
646+
default.node_sound_stone_defaults(),
647+
true
616648
)
617649

618650
stairs.register_stair_and_slab(
@@ -622,7 +654,8 @@ stairs.register_stair_and_slab(
622654
{"default_sandstone_brick.png"},
623655
"Sandstone Brick Stair",
624656
"Sandstone Brick Slab",
625-
default.node_sound_stone_defaults()
657+
default.node_sound_stone_defaults(),
658+
false
626659
)
627660

628661
stairs.register_stair_and_slab(
@@ -632,7 +665,8 @@ stairs.register_stair_and_slab(
632665
{"default_sandstone_block.png"},
633666
"Sandstone Block Stair",
634667
"Sandstone Block Slab",
635-
default.node_sound_stone_defaults()
668+
default.node_sound_stone_defaults(),
669+
true
636670
)
637671

638672
stairs.register_stair_and_slab(
@@ -642,7 +676,8 @@ stairs.register_stair_and_slab(
642676
{"default_desert_sandstone.png"},
643677
"Desert Sandstone Stair",
644678
"Desert Sandstone Slab",
645-
default.node_sound_stone_defaults()
679+
default.node_sound_stone_defaults(),
680+
true
646681
)
647682

648683
stairs.register_stair_and_slab(
@@ -652,7 +687,8 @@ stairs.register_stair_and_slab(
652687
{"default_desert_sandstone_brick.png"},
653688
"Desert Sandstone Brick Stair",
654689
"Desert Sandstone Brick Slab",
655-
default.node_sound_stone_defaults()
690+
default.node_sound_stone_defaults(),
691+
false
656692
)
657693

658694
stairs.register_stair_and_slab(
@@ -662,7 +698,8 @@ stairs.register_stair_and_slab(
662698
{"default_desert_sandstone_block.png"},
663699
"Desert Sandstone Block Stair",
664700
"Desert Sandstone Block Slab",
665-
default.node_sound_stone_defaults()
701+
default.node_sound_stone_defaults(),
702+
true
666703
)
667704

668705
stairs.register_stair_and_slab(
@@ -672,7 +709,8 @@ stairs.register_stair_and_slab(
672709
{"default_silver_sandstone.png"},
673710
"Silver Sandstone Stair",
674711
"Silver Sandstone Slab",
675-
default.node_sound_stone_defaults()
712+
default.node_sound_stone_defaults(),
713+
true
676714
)
677715

678716
stairs.register_stair_and_slab(
@@ -682,7 +720,8 @@ stairs.register_stair_and_slab(
682720
{"default_silver_sandstone_brick.png"},
683721
"Silver Sandstone Brick Stair",
684722
"Silver Sandstone Brick Slab",
685-
default.node_sound_stone_defaults()
723+
default.node_sound_stone_defaults(),
724+
false
686725
)
687726

688727
stairs.register_stair_and_slab(
@@ -692,7 +731,8 @@ stairs.register_stair_and_slab(
692731
{"default_silver_sandstone_block.png"},
693732
"Silver Sandstone Block Stair",
694733
"Silver Sandstone Block Slab",
695-
default.node_sound_stone_defaults()
734+
default.node_sound_stone_defaults(),
735+
true
696736
)
697737

698738
stairs.register_stair_and_slab(
@@ -702,7 +742,8 @@ stairs.register_stair_and_slab(
702742
{"default_obsidian.png"},
703743
"Obsidian Stair",
704744
"Obsidian Slab",
705-
default.node_sound_stone_defaults()
745+
default.node_sound_stone_defaults(),
746+
true
706747
)
707748

708749
stairs.register_stair_and_slab(
@@ -712,7 +753,8 @@ stairs.register_stair_and_slab(
712753
{"default_obsidian_brick.png"},
713754
"Obsidian Brick Stair",
714755
"Obsidian Brick Slab",
715-
default.node_sound_stone_defaults()
756+
default.node_sound_stone_defaults(),
757+
false
716758
)
717759

718760
stairs.register_stair_and_slab(
@@ -722,7 +764,8 @@ stairs.register_stair_and_slab(
722764
{"default_obsidian_block.png"},
723765
"Obsidian Block Stair",
724766
"Obsidian Block Slab",
725-
default.node_sound_stone_defaults()
767+
default.node_sound_stone_defaults(),
768+
true
726769
)
727770

728771
stairs.register_stair_and_slab(
@@ -732,7 +775,8 @@ stairs.register_stair_and_slab(
732775
{"default_brick.png"},
733776
"Brick Stair",
734777
"Brick Slab",
735-
default.node_sound_stone_defaults()
778+
default.node_sound_stone_defaults(),
779+
false
736780
)
737781

738782
stairs.register_stair_and_slab(
@@ -742,7 +786,8 @@ stairs.register_stair_and_slab(
742786
{"default_steel_block.png"},
743787
"Steel Block Stair",
744788
"Steel Block Slab",
745-
default.node_sound_metal_defaults()
789+
default.node_sound_metal_defaults(),
790+
true
746791
)
747792

748793
stairs.register_stair_and_slab(
@@ -752,7 +797,8 @@ stairs.register_stair_and_slab(
752797
{"default_tin_block.png"},
753798
"Tin Block Stair",
754799
"Tin Block Slab",
755-
default.node_sound_metal_defaults()
800+
default.node_sound_metal_defaults(),
801+
true
756802
)
757803

758804
stairs.register_stair_and_slab(
@@ -762,7 +808,8 @@ stairs.register_stair_and_slab(
762808
{"default_copper_block.png"},
763809
"Copper Block Stair",
764810
"Copper Block Slab",
765-
default.node_sound_metal_defaults()
811+
default.node_sound_metal_defaults(),
812+
true
766813
)
767814

768815
stairs.register_stair_and_slab(
@@ -772,7 +819,8 @@ stairs.register_stair_and_slab(
772819
{"default_bronze_block.png"},
773820
"Bronze Block Stair",
774821
"Bronze Block Slab",
775-
default.node_sound_metal_defaults()
822+
default.node_sound_metal_defaults(),
823+
true
776824
)
777825

778826
stairs.register_stair_and_slab(
@@ -782,7 +830,8 @@ stairs.register_stair_and_slab(
782830
{"default_gold_block.png"},
783831
"Gold Block Stair",
784832
"Gold Block Slab",
785-
default.node_sound_metal_defaults()
833+
default.node_sound_metal_defaults(),
834+
true
786835
)
787836

788837
stairs.register_stair_and_slab(
@@ -792,7 +841,8 @@ stairs.register_stair_and_slab(
792841
{"default_ice.png"},
793842
"Ice Stair",
794843
"Ice Slab",
795-
default.node_sound_glass_defaults()
844+
default.node_sound_glass_defaults(),
845+
true
796846
)
797847

798848
stairs.register_stair_and_slab(
@@ -802,5 +852,6 @@ stairs.register_stair_and_slab(
802852
{"default_snow.png"},
803853
"Snow Block Stair",
804854
"Snow Block Slab",
805-
default.node_sound_snow_defaults()
855+
default.node_sound_snow_defaults(),
856+
true
806857
)

0 commit comments

Comments
 (0)
Please sign in to comment.