From b66a61a10fee30d3d2436ce777124c82f07623ee Mon Sep 17 00:00:00 2001 From: TumeniNodes Date: Wed, 5 Jul 2017 13:35:26 -0400 Subject: [PATCH] Stairs: Add inner and outer corner stairs With thanks to MarkuBu for the original PR and GreenXenith for the stair models. --- mods/stairs/README.txt | 2 + mods/stairs/init.lua | 159 ++++++++++++++++++++- mods/stairs/license.txt | 1 + mods/stairs/models/stairs_stair_inner.obj | 161 ++++++++++++++++++++++ mods/stairs/models/stairs_stair_outer.obj | 136 ++++++++++++++++++ 5 files changed, 456 insertions(+), 3 deletions(-) create mode 100644 mods/stairs/models/stairs_stair_inner.obj create mode 100644 mods/stairs/models/stairs_stair_outer.obj diff --git a/mods/stairs/README.txt b/mods/stairs/README.txt index d32cd71b..f2b5b74f 100644 --- a/mods/stairs/README.txt +++ b/mods/stairs/README.txt @@ -12,5 +12,7 @@ Authors of media (models) ------------------------- Jean-Patrick G. (kilbith) (CC BY-SA 3.0): stairs_stair.obj +GreenXenith (CC BY-SA 3.0) + stairs_stair_inner.obj stairs_stair_outer.obj diff --git a/mods/stairs/init.lua b/mods/stairs/init.lua index 787c04e0..99da619d 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -276,17 +276,170 @@ if replace then }) end +-- Register stairs. +-- Node will be called stairs:stair_inner_ + +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_ + +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}_ -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( diff --git a/mods/stairs/license.txt b/mods/stairs/license.txt index 8f16bbd7..411823ae 100644 --- a/mods/stairs/license.txt +++ b/mods/stairs/license.txt @@ -21,6 +21,7 @@ Licenses of media (models) Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) Copyright (C) 2015-2016 Jean-Patrick G. (kilbith) +Copyright (C) 2017 GreenXenith You are free to: Share — copy and redistribute the material in any medium or format. diff --git a/mods/stairs/models/stairs_stair_inner.obj b/mods/stairs/models/stairs_stair_inner.obj new file mode 100644 index 00000000..5e4968e8 --- /dev/null +++ b/mods/stairs/models/stairs_stair_inner.obj @@ -0,0 +1,161 @@ +# 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 diff --git a/mods/stairs/models/stairs_stair_outer.obj b/mods/stairs/models/stairs_stair_outer.obj new file mode 100644 index 00000000..cc1975b0 --- /dev/null +++ b/mods/stairs/models/stairs_stair_outer.obj @@ -0,0 +1,136 @@ +# 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