With thanks to MarkuBu for the original PR and GreenXenith for the stair models.
-------------------------
Jean-Patrick G. (kilbith) <jeanpatrick.guerrero@gmail.com> (CC BY-SA 3.0):
stairs_stair.obj
+GreenXenith (CC BY-SA 3.0)
+ stairs_stair_inner.obj stairs_stair_outer.obj
})
end
+-- Register stairs.
+-- Node will be called stairs:stair_inner_<subname>
+
+function stairs.register_stair_inner(subname, recipeitem, groups, images, description, sounds)
+ local stair_images = {}
+ for i, image in ipairs(images) do
+ if type(image) == "string" then
+ stair_images[i] = {
+ name = image,
+ backface_culling = true,
+ }
+ elseif image.backface_culling == nil then -- override using any other value
+ stair_images[i] = table.copy(image)
+ stair_images[i].backface_culling = true
+ end
+ end
+ groups.stair = 1
+ minetest.register_node(":stairs:stair_inner_" .. subname, {
+ description = description .. " Inner",
+ drawtype = "mesh",
+ mesh = "stairs_stair_inner.obj",
+ tiles = stair_images,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ is_ground_content = false,
+ groups = groups,
+ sounds = sounds,
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
+ {-0.5, 0, 0, 0.5, 0.5, 0.5},
+ {-0.5, 0, -0.5, 0, 0.5, 0},
+ },
+ },
+ collision_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
+ {-0.5, 0, 0, 0.5, 0.5, 0.5},
+ {-0.5, 0, -0.5, 0, 0.5, 0},
+ },
+ },
+ on_place = function(itemstack, placer, pointed_thing)
+ if pointed_thing.type ~= "node" then
+ return itemstack
+ end
+
+ return rotate_and_place(itemstack, placer, pointed_thing)
+ end,
+ })
+
+ if recipeitem then
+ minetest.register_craft({
+ output = 'stairs:stair_inner_' .. subname .. ' 7',
+ recipe = {
+ { "", recipeitem, ""},
+ { recipeitem, "", recipeitem},
+ {recipeitem, recipeitem, recipeitem},
+ },
+ })
+
+ -- Fuel
+ local baseburntime = minetest.get_craft_result({
+ method = "fuel",
+ width = 1,
+ items = {recipeitem}
+ }).time
+ if baseburntime > 0 then
+ minetest.register_craft({
+ type = "fuel",
+ recipe = 'stairs:stair_inner_' .. subname,
+ burntime = math.floor(baseburntime * 0.875),
+ })
+ end
+ end
+end
+
+-- Register stairs.
+-- Node will be called stairs:stair_outer_<subname>
+
+function stairs.register_stair_outer(subname, recipeitem, groups, images, description, sounds)
+ local stair_images = {}
+ for i, image in ipairs(images) do
+ if type(image) == "string" then
+ stair_images[i] = {
+ name = image,
+ backface_culling = true,
+ }
+ elseif image.backface_culling == nil then -- override using any other value
+ stair_images[i] = table.copy(image)
+ stair_images[i].backface_culling = true
+ end
+ end
+ groups.stair = 1
+ minetest.register_node(":stairs:stair_outer_" .. subname, {
+ description = description .. " Outer",
+ drawtype = "mesh",
+ mesh = "stairs_stair_outer.obj",
+ tiles = stair_images,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ is_ground_content = false,
+ groups = groups,
+ sounds = sounds,
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
+ {-0.5, 0, 0, 0, 0.5, 0.5},
+ },
+ },
+ collision_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
+ {-0.5, 0, 0, 0, 0.5, 0.5},
+ },
+ },
+ on_place = function(itemstack, placer, pointed_thing)
+ if pointed_thing.type ~= "node" then
+ return itemstack
+ end
+
+ return rotate_and_place(itemstack, placer, pointed_thing)
+ end,
+ })
+
+ if recipeitem then
+ minetest.register_craft({
+ output = 'stairs:stair_outer_' .. subname .. ' 6',
+ recipe = {
+ { "", "", ""},
+ { "", recipeitem, ""},
+ {recipeitem, recipeitem, recipeitem},
+ },
+ })
+
+ -- Fuel
+ local baseburntime = minetest.get_craft_result({
+ method = "fuel",
+ width = 1,
+ items = {recipeitem}
+ }).time
+ if baseburntime > 0 then
+ minetest.register_craft({
+ type = "fuel",
+ recipe = 'stairs:stair_outer_' .. subname,
+ burntime = math.floor(baseburntime * 0.625),
+ })
+ end
+ end
+end
-- Stair/slab registration function.
-- Nodes will be called stairs:{stair,slab}_<subname>
-function stairs.register_stair_and_slab(subname, recipeitem,
- groups, images, desc_stair, desc_slab, sounds)
+function stairs.register_stair_and_slab(subname, recipeitem, groups, images, desc_stair, desc_slab, sounds)
stairs.register_stair(subname, recipeitem, groups, images, desc_stair, sounds)
+ stairs.register_stair_inner(subname, recipeitem, groups, images, desc_stair, sounds)
+ stairs.register_stair_outer(subname, recipeitem, groups, images, desc_stair, sounds)
stairs.register_slab(subname, recipeitem, groups, images, desc_slab, sounds)
end
-
-- Register default stairs and slabs
stairs.register_stair_and_slab(
Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
Copyright (C) 2015-2016 Jean-Patrick G. (kilbith) <jeanpatrick.guerrero@gmail.com>
+Copyright (C) 2017 GreenXenith
You are free to:
Share — copy and redistribute the material in any medium or format.
--- /dev/null
+# Blender v2.78 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib stairs_inner_stair.mtl
+o stairs_back_right_stairs_back.001
+v 0.500000 -0.500000 0.500000
+v 0.500000 0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vn 0.0000 -0.0000 1.0000
+usemtl None.001
+s 1
+f 1/1/1 2/2/1 3/3/1 4/4/1
+o stairs_front_right_stairs_back.003
+v 0.000000 0.000000 -0.500000
+v 0.000000 0.000000 0.000000
+v 0.000000 0.500000 0.000000
+v 0.000000 0.500000 -0.500000
+v -0.500000 0.000000 -0.500000
+v -0.500000 -0.500000 -0.500000
+v -0.500000 0.000000 0.000000
+v -0.500000 0.500000 0.500000
+v -0.500000 0.500000 0.000000
+v -0.500000 -0.500000 0.500000
+vt 0.0000 0.5000
+vt 0.5000 0.5000
+vt 0.5000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.5000
+vt 0.0000 0.0000
+vt 0.5000 0.5000
+vt 1.0000 1.0000
+vt 0.5000 1.0000
+vt 1.0000 0.0000
+vn -1.0000 0.0000 0.0000
+usemtl None
+s 1
+f 5/5/2 6/6/2 7/7/2 8/8/2
+f 9/9/2 10/10/2 11/11/2
+f 11/11/2 12/12/2 13/13/2
+f 10/10/2 14/14/2 11/11/2
+f 14/14/2 12/12/2 11/11/2
+o stairs_bottom
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 0.500000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vn 0.0000 -1.0000 -0.0000
+usemtl None
+s 1
+f 15/15/3 16/16/3 17/17/3 18/18/3
+o stairs_front_left_stairs_front.002
+v -0.500000 0.000000 0.000000
+v -0.500000 0.500000 0.000000
+v 0.000000 0.500000 0.000000
+v 0.000000 0.000000 0.000000
+v -0.500000 -0.500000 -0.500000
+v -0.500000 0.000000 -0.500000
+v 0.500000 0.000000 -0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.000000 0.000000 -0.500000
+v 0.000000 0.500000 -0.500000
+v 0.500000 0.500000 -0.500000
+v 0.500000 0.000000 -0.500000
+vt 1.0000 0.5000
+vt 1.0000 1.0000
+vt 0.5000 1.0000
+vt 0.5000 0.5000
+vt 1.0000 0.0000
+vt 1.0000 0.5000
+vt 0.0000 0.5000
+vt 0.0000 0.0000
+vt 0.5000 0.5000
+vt 0.5000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.5000
+vn 0.0000 0.0000 -1.0000
+usemtl None
+s 1
+f 19/19/4 20/20/4 21/21/4 22/22/4
+f 23/23/4 24/24/4 25/25/4 26/26/4
+f 27/27/4 28/28/4 29/29/4 30/30/4
+o stairs_top_stairs_top.001
+v 0.000000 0.000000 -0.500000
+v -0.500000 0.000000 -0.500000
+v -0.500000 0.000000 0.000000
+v 0.000000 0.000000 0.000000
+v 0.500000 0.500000 -0.500000
+v 0.000000 0.500000 -0.500000
+v 0.000000 0.500000 0.000000
+v 0.500000 0.500000 0.000000
+v -0.500000 0.500000 0.500000
+v 0.500000 0.500000 0.500000
+v 0.500000 0.500000 0.000000
+v -0.500000 0.500000 0.000000
+vt 0.5000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.5000
+vt 0.5000 0.5000
+vt 1.0000 1.0000
+vt 0.5000 1.0000
+vt 0.5000 0.5000
+vt 1.0000 0.5000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 0.5000
+vt 0.0000 0.5000
+vn 0.0000 1.0000 0.0000
+usemtl None
+s 1
+f 31/31/5 32/32/5 33/33/5 34/34/5
+f 35/35/5 36/36/5 37/37/5 38/38/5
+f 39/39/5 40/40/5 41/41/5 42/42/5
+o stairs_back_left_stairs_back.005
+v 0.500000 0.000000 -0.500000
+v 0.500000 0.500000 -0.500000
+v 0.500000 0.500000 0.000000
+v 0.500000 0.000000 0.000000
+v 0.500000 0.000000 0.000000
+v 0.500000 0.500000 0.000000
+v 0.500000 0.500000 0.500000
+v 0.500000 -0.000000 0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 0.000000 -0.500000
+v 0.500000 0.000000 0.000000
+v 0.500000 -0.500000 -0.000000
+v 0.500000 -0.500000 -0.000000
+v 0.500000 0.000000 0.000000
+v 0.500000 -0.000000 0.500000
+v 0.500000 -0.500000 0.500000
+vt 0.5000 0.5000
+vt 0.5000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.5000
+vt 1.0000 0.0000
+vt 1.0000 0.5000
+vt 0.5000 0.5000
+vt 0.5000 0.0000
+vt 0.5000 0.0000
+vt 0.5000 0.5000
+vt 0.0000 0.5000
+vt 0.0000 0.0000
+vt 1.0000 0.5000
+vt 1.0000 1.0000
+vt 0.5000 1.0000
+vt 0.5000 0.5000
+vn 1.0000 0.0000 0.0000
+usemtl None
+s 1
+f 47/43/6 48/44/6 49/45/6 50/46/6
+f 51/47/6 52/48/6 53/49/6 54/50/6
+f 55/51/6 56/52/6 57/53/6 58/54/6
+usemtl None.002
+f 43/55/6 44/56/6 45/57/6 46/58/6
--- /dev/null
+# Blender v2.78 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib stairs_outer_stair.mtl
+o stairs_bottom
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 0.500000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vn 0.0000 -1.0000 -0.0000
+usemtl None
+s 1
+f 1/1/1 2/2/1 3/3/1 4/4/1
+o stairs_back_left_stairs_left
+v 0.500000 0.000000 0.000000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 0.000000 -0.500000
+v 0.500000 0.500000 0.000000
+v 0.500000 0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+vt 0.5000 0.5000
+vt 1.0000 0.0000
+vt 1.0000 0.5000
+vt 0.5000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vn 1.0000 0.0000 0.0000
+usemtl None
+s 1
+f 5/5/2 6/6/2 7/7/2
+f 5/5/2 8/8/2 9/9/2
+f 6/6/2 5/5/2 10/10/2
+f 5/5/2 9/9/2 10/10/2
+o stairs_back_right_stairs_back
+v 0.000000 -0.500000 0.500000
+v 0.000000 -0.000000 0.500000
+v -0.500000 -0.000000 0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v 0.500000 -0.000000 0.500000
+v 0.500000 0.500000 0.500000
+v 0.000000 0.500000 0.500000
+vt 0.5000 0.0000
+vt 0.5000 0.5000
+vt 0.0000 0.5000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 0.5000
+vt 1.0000 1.0000
+vt 0.5000 1.0000
+vn 0.0000 -0.0000 1.0000
+usemtl None
+s 1
+f 11/11/3 12/12/3 13/13/3 14/14/3
+f 15/15/3 16/16/3 12/12/3 11/11/3
+f 16/16/3 17/17/3 18/18/3 12/12/3
+o stairs_top_stairs_top.001
+v 0.000000 0.500000 0.500000
+v 0.501689 0.500000 0.500000
+v 0.501689 0.500000 0.000000
+v 0.000000 0.500000 0.000000
+v -0.500000 -0.000000 0.500000
+v 0.001689 -0.000000 0.500000
+v 0.001689 0.000000 0.000000
+v -0.500000 0.000000 0.000000
+v 0.500000 0.000000 -0.500000
+v -0.500000 0.000000 -0.500000
+v -0.500000 0.000000 0.000000
+v 0.500000 0.000000 0.000000
+vt 0.5000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 0.5000
+vt 0.5000 0.5000
+vt 0.0000 0.0000
+vt 0.5000 0.0000
+vt 0.5000 0.5000
+vt 0.0000 0.5000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.5000
+vt 1.0000 0.5000
+vn 0.0000 1.0000 0.0000
+usemtl None
+s 1
+f 19/19/4 20/20/4 21/21/4 22/22/4
+usemtl None.004
+f 23/23/4 24/24/4 25/25/4 26/26/4
+f 27/27/4 28/28/4 29/29/4 30/30/4
+o stairs_front_left_stairs_front.000
+v -0.500000 -0.500000 -0.500000
+v -0.500000 0.000000 -0.500000
+v 0.500000 0.000000 -0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 0.500000 0.000000
+v 0.500000 0.000000 0.000000
+v 0.000000 0.000000 0.000000
+v 0.000000 0.500000 0.000000
+vt 1.0000 0.0000
+vt 1.0000 0.5000
+vt -0.0000 0.5000
+vt -0.0000 0.0000
+vt 0.5000 0.5000
+vt 0.5000 1.0000
+vt -0.0000 1.0000
+vt -0.0000 0.5000
+vn 0.0000 0.0000 -1.0000
+usemtl None.001
+s 1
+f 31/31/5 32/32/5 33/33/5 34/34/5
+usemtl None.003
+f 37/35/5 38/36/5 35/37/5 36/38/5
+o stairs_front_right_stairs_right.001_stairs_front_left_stairs_front.002
+v -0.500000 -0.500000 0.500000
+v -0.500000 0.000000 0.500000
+v -0.500000 0.000000 -0.500000
+v -0.500000 -0.500000 -0.500000
+v 0.000000 0.000000 0.500000
+v 0.000000 0.500000 0.500000
+v 0.000000 0.500000 -0.000000
+v -0.000000 0.000000 0.000000
+vt 1.0000 0.0000
+vt 1.0000 0.5021
+vt -0.0000 0.5021
+vt -0.0000 0.0000
+vt 1.0000 0.5021
+vt 1.0000 1.0000
+vt 0.5000 1.0000
+vt 0.5000 0.5021
+vn -1.0000 0.0000 0.0000
+usemtl None.002
+s 1
+f 39/39/6 40/40/6 41/41/6 42/42/6
+f 43/43/6 44/44/6 45/45/6 46/46/6