merge upstream

This commit is contained in:
Milan 2019-02-07 13:17:18 +01:00
commit 2e451bd11e
236 changed files with 7780 additions and 2577 deletions

View file

@ -4,15 +4,24 @@ See license.txt for license information.
Authors of source code
----------------------
Originally by Kahrl <kahrl@gmx.net> (LGPL 2.1) and
celeron55, Perttu Ahola <celeron55@gmail.com> (LGPL 2.1)
Various Minetest developers and contributors (LGPL 2.1)
Originally by Kahrl <kahrl@gmx.net> (LGPLv2.1+) and
celeron55, Perttu Ahola <celeron55@gmail.com> (LGPLv2.1+)
Various Minetest developers and contributors (LGPLv2.1+)
Authors of media (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
Authors of media (textures)
---------------------------
Textures
--------
Copyright (c) 2018 Shara RedCat (CC BY-SA 3.0):
Derived from a texture by PilzAdam (CC BY-SA 3.0):
stairs_obsidian_glass_outer_stairside.png
stairs_obsidian_glass_stairside.png
Copyright (c) 2018 TumeniNodes (CC BY-SA 3.0):
Derived from a texture by celeron55 (CC BY-SA 3.0) and
converted to bright white by Krock (CC BY-SA 3.0):
stairs_glass_stairside.png
stairs_glass_split.png
Derived from a texture by PilzAdam (CC BY-SA 3.0):
stairs_obsidian_glass_split.png

View file

@ -25,30 +25,35 @@ local function rotate_and_place(itemstack, placer, pointed_thing)
local p1 = pointed_thing.above
local param2 = 0
local placer_pos = placer:getpos()
if placer_pos then
param2 = minetest.dir_to_facedir(vector.subtract(p1, placer_pos))
end
if placer then
local placer_pos = placer:get_pos()
if placer_pos then
param2 = minetest.dir_to_facedir(vector.subtract(p1, placer_pos))
end
local finepos = minetest.pointed_thing_to_face_pos(placer, pointed_thing)
local fpos = finepos.y % 1
local finepos = minetest.pointed_thing_to_face_pos(placer, pointed_thing)
local fpos = finepos.y % 1
if p0.y - 1 == p1.y or (fpos > 0 and fpos < 0.5)
or (fpos < -0.5 and fpos > -0.999999999) then
param2 = param2 + 20
if param2 == 21 then
param2 = 23
elseif param2 == 23 then
param2 = 21
if p0.y - 1 == p1.y or (fpos > 0 and fpos < 0.5)
or (fpos < -0.5 and fpos > -0.999999999) then
param2 = param2 + 20
if param2 == 21 then
param2 = 23
elseif param2 == 23 then
param2 = 21
end
end
end
return minetest.item_place(itemstack, placer, pointed_thing, param2)
end
-- Register stairs.
-- Register stair
-- Node will be called stairs:stair_<subname>
function stairs.register_stair(subname, recipeitem, groups, images, description, sounds)
function stairs.register_stair(subname, recipeitem, groups, images, description,
sounds, worldaligntex)
-- Set backface culling and world-aligned textures
local stair_images = {}
for i, image in ipairs(images) do
if type(image) == "string" then
@ -56,34 +61,35 @@ function stairs.register_stair(subname, recipeitem, groups, images, description,
name = image,
backface_culling = true,
}
elseif image.backface_culling == nil then -- override using any other value
if worldaligntex then
stair_images[i].align_style = "world"
end
else
stair_images[i] = table.copy(image)
stair_images[i].backface_culling = true
if stair_images[i].backface_culling == nil then
stair_images[i].backface_culling = true
end
if worldaligntex and stair_images[i].align_style == nil then
stair_images[i].align_style = "world"
end
end
end
groups.stair = 1
local new_groups = table.copy(groups)
new_groups.stair = 1
minetest.register_node(":stairs:stair_" .. subname, {
description = description,
drawtype = "mesh",
mesh = "stairs_stair.obj",
drawtype = "nodebox",
tiles = stair_images,
paramtype = "light",
paramtype2 = "facedir",
is_ground_content = false,
groups = groups,
groups = new_groups,
sounds = sounds,
selection_box = {
node_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},
},
},
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.5, -0.5, 0.5, 0.0, 0.5},
{-0.5, 0.0, 0.0, 0.5, 0.5, 0.5},
},
},
on_place = function(itemstack, placer, pointed_thing)
@ -140,22 +146,38 @@ function stairs.register_stair(subname, recipeitem, groups, images, description,
end
-- Slab facedir to placement 6d matching table
local slab_trans_dir = {[0] = 8, 0, 2, 1, 3, 4}
-- Register slabs.
-- Register slab
-- Node will be called stairs:slab_<subname>
function stairs.register_slab(subname, recipeitem, groups, images, description, sounds)
groups.slab = 1
function stairs.register_slab(subname, recipeitem, groups, images, description,
sounds, worldaligntex)
-- Set world-aligned textures
local slab_images = {}
for i, image in ipairs(images) do
if type(image) == "string" then
slab_images[i] = {
name = image,
}
if worldaligntex then
slab_images[i].align_style = "world"
end
else
slab_images[i] = table.copy(image)
if worldaligntex and image.align_style == nil then
slab_images[i].align_style = "world"
end
end
end
local new_groups = table.copy(groups)
new_groups.slab = 1
minetest.register_node(":stairs:slab_" .. subname, {
description = description,
drawtype = "nodebox",
tiles = images,
tiles = slab_images,
paramtype = "light",
paramtype2 = "facedir",
is_ground_content = false,
groups = groups,
groups = new_groups,
sounds = sounds,
node_box = {
type = "fixed",
@ -164,37 +186,17 @@ function stairs.register_slab(subname, recipeitem, groups, images, description,
on_place = function(itemstack, placer, pointed_thing)
local under = minetest.get_node(pointed_thing.under)
local wield_item = itemstack:get_name()
local player_name = placer and placer:get_player_name() or ""
local creative_enabled = (creative and creative.is_enabled_for
and creative.is_enabled_for(placer:get_player_name()))
and creative.is_enabled_for(player_name))
if under and under.name:find("stairs:slab_") then
if under and under.name:find("^stairs:slab_") then
-- place slab using under node orientation
local dir = minetest.dir_to_facedir(vector.subtract(
pointed_thing.above, pointed_thing.under), true)
local p2 = under.param2
-- combine two slabs if possible
if slab_trans_dir[math.floor(p2 / 4)] == dir
and wield_item == under.name then
if not recipeitem then
return itemstack
end
local player_name = placer:get_player_name()
if minetest.is_protected(pointed_thing.under, player_name) and not
minetest.check_player_privs(placer, "protection_bypass") then
minetest.record_protection_violation(pointed_thing.under,
player_name)
return
end
minetest.set_node(pointed_thing.under, {name = recipeitem, param2 = p2})
if not creative_enabled then
itemstack:take_item()
end
return itemstack
end
-- Placing a slab on an upside down slab should make it right-side up.
if p2 >= 20 and dir == 8 then
p2 = p2 - 20
@ -279,10 +281,13 @@ if replace then
})
end
-- Register stairs.
-- Register inner stair
-- Node will be called stairs:stair_inner_<subname>
function stairs.register_stair_inner(subname, recipeitem, groups, images, description, sounds)
function stairs.register_stair_inner(subname, recipeitem, groups, images,
description, sounds, worldaligntex)
-- Set backface culling and world-aligned textures
local stair_images = {}
for i, image in ipairs(images) do
if type(image) == "string" then
@ -290,36 +295,36 @@ function stairs.register_stair_inner(subname, recipeitem, groups, images, descri
name = image,
backface_culling = true,
}
elseif image.backface_culling == nil then -- override using any other value
if worldaligntex then
stair_images[i].align_style = "world"
end
else
stair_images[i] = table.copy(image)
stair_images[i].backface_culling = true
if stair_images[i].backface_culling == nil then
stair_images[i].backface_culling = true
end
if worldaligntex and stair_images[i].align_style == nil then
stair_images[i].align_style = "world"
end
end
end
groups.stair = 1
local new_groups = table.copy(groups)
new_groups.stair = 1
minetest.register_node(":stairs:stair_inner_" .. subname, {
description = description .. " Inner",
drawtype = "mesh",
mesh = "stairs_stair_inner.obj",
description = "Inner " .. description,
drawtype = "nodebox",
tiles = stair_images,
paramtype = "light",
paramtype2 = "facedir",
is_ground_content = false,
groups = groups,
groups = new_groups,
sounds = sounds,
selection_box = {
node_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},
{-0.5, -0.5, -0.5, 0.5, 0.0, 0.5},
{-0.5, 0.0, 0.0, 0.5, 0.5, 0.5},
{-0.5, 0.0, -0.5, 0.0, 0.5, 0.0},
},
},
on_place = function(itemstack, placer, pointed_thing)
@ -335,8 +340,8 @@ function stairs.register_stair_inner(subname, recipeitem, groups, images, descri
minetest.register_craft({
output = 'stairs:stair_inner_' .. subname .. ' 7',
recipe = {
{ "", recipeitem, ""},
{ recipeitem, "", recipeitem},
{"", recipeitem, ""},
{recipeitem, "", recipeitem},
{recipeitem, recipeitem, recipeitem},
},
})
@ -357,10 +362,13 @@ function stairs.register_stair_inner(subname, recipeitem, groups, images, descri
end
end
-- Register stairs.
-- Register outer stair
-- Node will be called stairs:stair_outer_<subname>
function stairs.register_stair_outer(subname, recipeitem, groups, images, description, sounds)
function stairs.register_stair_outer(subname, recipeitem, groups, images,
description, sounds, worldaligntex)
-- Set backface culling and world-aligned textures
local stair_images = {}
for i, image in ipairs(images) do
if type(image) == "string" then
@ -368,34 +376,35 @@ function stairs.register_stair_outer(subname, recipeitem, groups, images, descri
name = image,
backface_culling = true,
}
elseif image.backface_culling == nil then -- override using any other value
if worldaligntex then
stair_images[i].align_style = "world"
end
else
stair_images[i] = table.copy(image)
stair_images[i].backface_culling = true
if stair_images[i].backface_culling == nil then
stair_images[i].backface_culling = true
end
if worldaligntex and stair_images[i].align_style == nil then
stair_images[i].align_style = "world"
end
end
end
groups.stair = 1
local new_groups = table.copy(groups)
new_groups.stair = 1
minetest.register_node(":stairs:stair_outer_" .. subname, {
description = description .. " Outer",
drawtype = "mesh",
mesh = "stairs_stair_outer.obj",
description = "Outer " .. description,
drawtype = "nodebox",
tiles = stair_images,
paramtype = "light",
paramtype2 = "facedir",
is_ground_content = false,
groups = groups,
groups = new_groups,
sounds = sounds,
selection_box = {
node_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},
{-0.5, -0.5, -0.5, 0.5, 0.0, 0.5},
{-0.5, 0.0, 0.0, 0.0, 0.5, 0.5},
},
},
on_place = function(itemstack, placer, pointed_thing)
@ -411,8 +420,7 @@ function stairs.register_stair_outer(subname, recipeitem, groups, images, descri
minetest.register_craft({
output = 'stairs:stair_outer_' .. subname .. ' 6',
recipe = {
{ "", "", ""},
{ "", recipeitem, ""},
{"", recipeitem, ""},
{recipeitem, recipeitem, recipeitem},
},
})
@ -433,16 +441,23 @@ function stairs.register_stair_outer(subname, recipeitem, groups, images, descri
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)
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)
function stairs.register_stair_and_slab(subname, recipeitem, groups, images,
desc_stair, desc_slab, sounds, worldaligntex)
stairs.register_stair(subname, recipeitem, groups, images, desc_stair,
sounds, worldaligntex)
stairs.register_stair_inner(subname, recipeitem, groups, images, desc_stair,
sounds, worldaligntex)
stairs.register_stair_outer(subname, recipeitem, groups, images, desc_stair,
sounds, worldaligntex)
stairs.register_slab(subname, recipeitem, groups, images, desc_slab,
sounds, worldaligntex)
end
-- Register default stairs and slabs
stairs.register_stair_and_slab(
@ -452,7 +467,8 @@ stairs.register_stair_and_slab(
{"default_wood.png"},
"Wooden Stair",
"Wooden Slab",
default.node_sound_wood_defaults()
default.node_sound_wood_defaults(),
false
)
stairs.register_stair_and_slab(
@ -462,7 +478,8 @@ stairs.register_stair_and_slab(
{"default_junglewood.png"},
"Jungle Wood Stair",
"Jungle Wood Slab",
default.node_sound_wood_defaults()
default.node_sound_wood_defaults(),
false
)
stairs.register_stair_and_slab(
@ -472,7 +489,8 @@ stairs.register_stair_and_slab(
{"default_pine_wood.png"},
"Pine Wood Stair",
"Pine Wood Slab",
default.node_sound_wood_defaults()
default.node_sound_wood_defaults(),
false
)
stairs.register_stair_and_slab(
@ -482,7 +500,8 @@ stairs.register_stair_and_slab(
{"default_acacia_wood.png"},
"Acacia Wood Stair",
"Acacia Wood Slab",
default.node_sound_wood_defaults()
default.node_sound_wood_defaults(),
false
)
stairs.register_stair_and_slab(
@ -492,7 +511,8 @@ stairs.register_stair_and_slab(
{"default_aspen_wood.png"},
"Aspen Wood Stair",
"Aspen Wood Slab",
default.node_sound_wood_defaults()
default.node_sound_wood_defaults(),
false
)
stairs.register_stair_and_slab(
@ -502,7 +522,8 @@ stairs.register_stair_and_slab(
{"default_stone.png"},
"Stone Stair",
"Stone Slab",
default.node_sound_stone_defaults()
default.node_sound_stone_defaults(),
true
)
stairs.register_stair_and_slab(
@ -512,7 +533,8 @@ stairs.register_stair_and_slab(
{"default_cobble.png"},
"Cobblestone Stair",
"Cobblestone Slab",
default.node_sound_stone_defaults()
default.node_sound_stone_defaults(),
true
)
stairs.register_stair_and_slab(
@ -522,7 +544,8 @@ stairs.register_stair_and_slab(
{"default_mossycobble.png"},
"Mossy Cobblestone Stair",
"Mossy Cobblestone Slab",
default.node_sound_stone_defaults()
default.node_sound_stone_defaults(),
true
)
stairs.register_stair_and_slab(
@ -532,7 +555,8 @@ stairs.register_stair_and_slab(
{"default_stone_brick.png"},
"Stone Brick Stair",
"Stone Brick Slab",
default.node_sound_stone_defaults()
default.node_sound_stone_defaults(),
false
)
stairs.register_stair_and_slab(
@ -542,7 +566,8 @@ stairs.register_stair_and_slab(
{"default_stone_block.png"},
"Stone Block Stair",
"Stone Block Slab",
default.node_sound_stone_defaults()
default.node_sound_stone_defaults(),
true
)
stairs.register_stair_and_slab(
@ -552,7 +577,8 @@ stairs.register_stair_and_slab(
{"default_desert_stone.png"},
"Desert Stone Stair",
"Desert Stone Slab",
default.node_sound_stone_defaults()
default.node_sound_stone_defaults(),
true
)
stairs.register_stair_and_slab(
@ -562,7 +588,8 @@ stairs.register_stair_and_slab(
{"default_desert_cobble.png"},
"Desert Cobblestone Stair",
"Desert Cobblestone Slab",
default.node_sound_stone_defaults()
default.node_sound_stone_defaults(),
true
)
stairs.register_stair_and_slab(
@ -572,7 +599,8 @@ stairs.register_stair_and_slab(
{"default_desert_stone_brick.png"},
"Desert Stone Brick Stair",
"Desert Stone Brick Slab",
default.node_sound_stone_defaults()
default.node_sound_stone_defaults(),
false
)
stairs.register_stair_and_slab(
@ -582,7 +610,8 @@ stairs.register_stair_and_slab(
{"default_desert_stone_block.png"},
"Desert Stone Block Stair",
"Desert Stone Block Slab",
default.node_sound_stone_defaults()
default.node_sound_stone_defaults(),
true
)
stairs.register_stair_and_slab(
@ -592,7 +621,8 @@ stairs.register_stair_and_slab(
{"default_sandstone.png"},
"Sandstone Stair",
"Sandstone Slab",
default.node_sound_stone_defaults()
default.node_sound_stone_defaults(),
true
)
stairs.register_stair_and_slab(
@ -602,7 +632,8 @@ stairs.register_stair_and_slab(
{"default_sandstone_brick.png"},
"Sandstone Brick Stair",
"Sandstone Brick Slab",
default.node_sound_stone_defaults()
default.node_sound_stone_defaults(),
false
)
stairs.register_stair_and_slab(
@ -612,7 +643,8 @@ stairs.register_stair_and_slab(
{"default_sandstone_block.png"},
"Sandstone Block Stair",
"Sandstone Block Slab",
default.node_sound_stone_defaults()
default.node_sound_stone_defaults(),
true
)
stairs.register_stair_and_slab(
@ -622,7 +654,8 @@ stairs.register_stair_and_slab(
{"default_desert_sandstone.png"},
"Desert Sandstone Stair",
"Desert Sandstone Slab",
default.node_sound_stone_defaults()
default.node_sound_stone_defaults(),
true
)
stairs.register_stair_and_slab(
@ -632,7 +665,8 @@ stairs.register_stair_and_slab(
{"default_desert_sandstone_brick.png"},
"Desert Sandstone Brick Stair",
"Desert Sandstone Brick Slab",
default.node_sound_stone_defaults()
default.node_sound_stone_defaults(),
false
)
stairs.register_stair_and_slab(
@ -642,7 +676,8 @@ stairs.register_stair_and_slab(
{"default_desert_sandstone_block.png"},
"Desert Sandstone Block Stair",
"Desert Sandstone Block Slab",
default.node_sound_stone_defaults()
default.node_sound_stone_defaults(),
true
)
stairs.register_stair_and_slab(
@ -652,7 +687,8 @@ stairs.register_stair_and_slab(
{"default_silver_sandstone.png"},
"Silver Sandstone Stair",
"Silver Sandstone Slab",
default.node_sound_stone_defaults()
default.node_sound_stone_defaults(),
true
)
stairs.register_stair_and_slab(
@ -662,7 +698,8 @@ stairs.register_stair_and_slab(
{"default_silver_sandstone_brick.png"},
"Silver Sandstone Brick Stair",
"Silver Sandstone Brick Slab",
default.node_sound_stone_defaults()
default.node_sound_stone_defaults(),
false
)
stairs.register_stair_and_slab(
@ -672,7 +709,8 @@ stairs.register_stair_and_slab(
{"default_silver_sandstone_block.png"},
"Silver Sandstone Block Stair",
"Silver Sandstone Block Slab",
default.node_sound_stone_defaults()
default.node_sound_stone_defaults(),
true
)
stairs.register_stair_and_slab(
@ -682,7 +720,8 @@ stairs.register_stair_and_slab(
{"default_obsidian.png"},
"Obsidian Stair",
"Obsidian Slab",
default.node_sound_stone_defaults()
default.node_sound_stone_defaults(),
true
)
stairs.register_stair_and_slab(
@ -692,7 +731,8 @@ stairs.register_stair_and_slab(
{"default_obsidian_brick.png"},
"Obsidian Brick Stair",
"Obsidian Brick Slab",
default.node_sound_stone_defaults()
default.node_sound_stone_defaults(),
false
)
stairs.register_stair_and_slab(
@ -702,7 +742,8 @@ stairs.register_stair_and_slab(
{"default_obsidian_block.png"},
"Obsidian Block Stair",
"Obsidian Block Slab",
default.node_sound_stone_defaults()
default.node_sound_stone_defaults(),
true
)
stairs.register_stair_and_slab(
@ -712,7 +753,8 @@ stairs.register_stair_and_slab(
{"default_brick.png"},
"Brick Stair",
"Brick Slab",
default.node_sound_stone_defaults()
default.node_sound_stone_defaults(),
false
)
stairs.register_stair_and_slab(
@ -722,7 +764,8 @@ stairs.register_stair_and_slab(
{"default_steel_block.png"},
"Steel Block Stair",
"Steel Block Slab",
default.node_sound_metal_defaults()
default.node_sound_metal_defaults(),
true
)
stairs.register_stair_and_slab(
@ -732,7 +775,8 @@ stairs.register_stair_and_slab(
{"default_tin_block.png"},
"Tin Block Stair",
"Tin Block Slab",
default.node_sound_metal_defaults()
default.node_sound_metal_defaults(),
true
)
stairs.register_stair_and_slab(
@ -742,7 +786,8 @@ stairs.register_stair_and_slab(
{"default_copper_block.png"},
"Copper Block Stair",
"Copper Block Slab",
default.node_sound_metal_defaults()
default.node_sound_metal_defaults(),
true
)
stairs.register_stair_and_slab(
@ -752,7 +797,8 @@ stairs.register_stair_and_slab(
{"default_bronze_block.png"},
"Bronze Block Stair",
"Bronze Block Slab",
default.node_sound_metal_defaults()
default.node_sound_metal_defaults(),
true
)
stairs.register_stair_and_slab(
@ -762,29 +808,122 @@ stairs.register_stair_and_slab(
{"default_gold_block.png"},
"Gold Block Stair",
"Gold Block Slab",
default.node_sound_metal_defaults()
default.node_sound_metal_defaults(),
true
)
stairs.register_stair_and_slab(
"ice",
"default:ice",
{cracky = 3, puts_out_fire = 1, cools_lava = 1},
{cracky = 3, cools_lava = 1, slippery = 3},
{"default_ice.png"},
"Ice Stair",
"Ice Slab",
default.node_sound_glass_defaults()
default.node_sound_glass_defaults(),
true
)
stairs.register_stair_and_slab(
"snowblock",
"default:snowblock",
{crumbly = 3, puts_out_fire = 1, cools_lava = 1, snowy = 1},
{crumbly = 3, cools_lava = 1, snowy = 1},
{"default_snow.png"},
"Snow Block Stair",
"Snow Block Slab",
default.node_sound_dirt_defaults({
footstep = {name = "default_snow_footstep", gain = 0.15},
dug = {name = "default_snow_footstep", gain = 0.2},
dig = {name = "default_snow_footstep", gain = 0.2}
})
default.node_sound_snow_defaults(),
true
)
-- Glass stair nodes need to be registered individually to utilize specialized textures.
stairs.register_stair(
"glass",
"default:glass",
{cracky = 3},
{"stairs_glass_split.png", "default_glass.png",
"stairs_glass_stairside.png^[transformFX", "stairs_glass_stairside.png",
"default_glass.png", "stairs_glass_split.png"},
"Glass Stair",
default.node_sound_glass_defaults(),
false
)
stairs.register_slab(
"glass",
"default:glass",
{cracky = 3},
{"default_glass.png", "default_glass.png", "stairs_glass_split.png"},
"Glass Slab",
default.node_sound_glass_defaults(),
false
)
stairs.register_stair_inner(
"glass",
"default:glass",
{cracky = 3},
{"stairs_glass_stairside.png^[transformR270", "default_glass.png",
"stairs_glass_stairside.png^[transformFX", "default_glass.png",
"default_glass.png", "stairs_glass_stairside.png"},
"Glass Stair",
default.node_sound_glass_defaults(),
false
)
stairs.register_stair_outer(
"glass",
"default:glass",
{cracky = 3},
{"stairs_glass_stairside.png^[transformR90", "default_glass.png",
"stairs_glass_outer_stairside.png", "stairs_glass_stairside.png",
"stairs_glass_stairside.png^[transformR90","stairs_glass_outer_stairside.png"},
"Glass Stair",
default.node_sound_glass_defaults(),
false
)
stairs.register_stair(
"obsidian_glass",
"default:obsidian_glass",
{cracky = 3},
{"stairs_obsidian_glass_split.png", "default_obsidian_glass.png",
"stairs_obsidian_glass_stairside.png^[transformFX", "stairs_obsidian_glass_stairside.png",
"default_obsidian_glass.png", "stairs_obsidian_glass_split.png"},
"Obsidian Glass Stair",
default.node_sound_glass_defaults(),
false
)
stairs.register_slab(
"obsidian_glass",
"default:obsidian_glass",
{cracky = 3},
{"default_obsidian_glass.png", "default_obsidian_glass.png", "stairs_obsidian_glass_split.png"},
"Obsidian Glass Slab",
default.node_sound_glass_defaults(),
false
)
stairs.register_stair_inner(
"obsidian_glass",
"default:obsidian_glass",
{cracky = 3},
{"stairs_obsidian_glass_stairside.png^[transformR270", "default_obsidian_glass.png",
"stairs_obsidian_glass_stairside.png^[transformFX", "default_obsidian_glass.png",
"default_obsidian_glass.png", "stairs_obsidian_glass_stairside.png"},
"Obsidian Glass Stair",
default.node_sound_glass_defaults(),
false
)
stairs.register_stair_outer(
"obsidian_glass",
"default:obsidian_glass",
{cracky = 3},
{"stairs_obsidian_glass_stairside.png^[transformR90", "default_obsidian_glass.png",
"stairs_obsidian_glass_outer_stairside.png", "stairs_obsidian_glass_stairside.png",
"stairs_obsidian_glass_stairside.png^[transformR90","stairs_obsidian_glass_outer_stairside.png"},
"Obsidian Glass Stair",
default.node_sound_glass_defaults(),
false
)

View file

@ -2,9 +2,9 @@ License of source code
----------------------
GNU Lesser General Public License, version 2.1
Copyright (C) 2011-2016 Kahrl <kahrl@gmx.net>
Copyright (C) 2011-2016 celeron55, Perttu Ahola <celeron55@gmail.com>
Copyright (C) 2012-2016 Various Minetest developers and contributors
Copyright (C) 2011-2017 Kahrl <kahrl@gmx.net>
Copyright (C) 2011-2017 celeron55, Perttu Ahola <celeron55@gmail.com>
Copyright (C) 2012-2017 Various Minetest developers and contributors
This program is free software; you can redistribute it and/or modify it under the terms
of the GNU Lesser General Public License as published by the Free Software Foundation;
@ -14,39 +14,3 @@ This program is distributed in the hope that it will be useful, but WITHOUT ANY
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU Lesser General Public License for more details:
https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
Licenses of media (models)
--------------------------
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.
Adapt — remix, transform, and build upon the material for any purpose, even commercially.
The licensor cannot revoke these freedoms as long as you follow the license terms.
Under the following terms:
Attribution — You must give appropriate credit, provide a link to the license, and
indicate if changes were made. You may do so in any reasonable manner, but not in any way
that suggests the licensor endorses you or your use.
ShareAlike — If you remix, transform, or build upon the material, you must distribute
your contributions under the same license as the original.
No additional restrictions — You may not apply legal terms or technological measures that
legally restrict others from doing anything the license permits.
Notices:
You do not have to comply with the license for elements of the material in the public
domain or where your use is permitted by an applicable exception or limitation.
No warranties are given. The license may not give you all of the permissions necessary
for your intended use. For example, other rights such as publicity, privacy, or moral
rights may limit how you use the material.
For more details:
http://creativecommons.org/licenses/by-sa/3.0/

View file

@ -1,115 +0,0 @@
# Blender v2.72 (sub 0) OBJ File: ''
# www.blender.org
mtllib stairs.mtl
o stairs_top
v -0.500000 0.000000 -0.500000
v -0.500000 0.000000 0.000000
v 0.500000 0.000000 0.000000
v 0.500000 0.000000 -0.500000
v -0.500000 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
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 0.500000
vt 0.000000 0.500000
vt 1.000000 1.000000
vt 0.000000 1.000000
vn 0.000000 1.000000 0.000000
g stairs_top
usemtl None
s off
f 4/1/1 1/2/1 2/3/1 3/4/1
f 7/5/1 8/6/1 6/4/1 5/3/1
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.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vn 0.000000 -1.000000 -0.000000
g stairs_bottom
usemtl None
s off
f 11/7/2 9/8/2 10/9/2 12/10/2
o stairs_right
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.000000 0.500000
vt 0.000000 0.000000
vt 0.500000 0.500000
vt 1.000000 1.000000
vt 0.500000 1.000000
vt 1.000000 0.000000
vn -1.000000 0.000000 0.000000
g stairs_right
usemtl None
s off
f 13/11/3 14/12/3 15/13/3
f 15/13/3 18/14/3 17/15/3
f 14/12/3 16/16/3 15/13/3
f 16/16/3 18/14/3 15/13/3
o 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.500000
v 0.500000 0.500000 0.000000
v 0.500000 0.500000 0.500000
vt 0.500000 0.500000
vt 1.000000 0.000000
vt 1.000000 0.500000
vt 0.500000 1.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vn 1.000000 0.000000 0.000000
g stairs_left
usemtl None
s off
f 19/17/4 20/18/4 21/19/4
f 19/17/4 23/20/4 24/21/4
f 20/18/4 19/17/4 22/22/4
f 19/17/4 24/21/4 22/22/4
o stairs_back
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.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vn 0.000000 -0.000000 1.000000
g stairs_back
usemtl None
s off
f 26/23/5 28/24/5 27/25/5 25/26/5
o stairs_front
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.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.000000
vt 1.000000 0.000000
vt 1.000000 0.500000
vt 0.000000 0.500000
vt 0.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vn 0.000000 0.000000 -1.000000
g stairs_front
usemtl None
s off
f 30/27/6 29/28/6 34/29/6 33/30/6
f 31/28/6 35/31/6 36/32/6 32/29/6

View file

@ -1,161 +0,0 @@
# 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

View file

@ -1,136 +0,0 @@
# 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 B