Pull some parent node vars for stairs and slabs (#2911)

Fixes the sunlight propagation of glass stairs and slabs.

Co-authored-by: tenplus1 <tenplus1@users.noreply.github.com>
This commit is contained in:
Yaman Qalieh 2021-12-12 10:38:54 -05:00 committed by GitHub
parent 60389a1539
commit d775a9bdae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 8 deletions

View File

@ -723,6 +723,12 @@ Stairs API
The stairs API lets you register stairs and slabs and ensures that they are registered the same way as those The stairs API lets you register stairs and slabs and ensures that they are registered the same way as those
delivered with Minetest Game, to keep them compatible with other mods. delivered with Minetest Game, to keep them compatible with other mods.
The following node attributes are sourced from the recipeitem:
* use_texture_alpha
* sunlight_propagates
* light_source
* If the recipeitem is a fuel, the stair/slab is also registered as a fuel of proportionate burntime.
`stairs.register_stair(subname, recipeitem, groups, images, description, sounds, worldaligntex)` `stairs.register_stair(subname, recipeitem, groups, images, description, sounds, worldaligntex)`
* Registers a stair * Registers a stair

View File

@ -57,13 +57,24 @@ local function warn_if_exists(nodename)
end end
end end
-- get node settings to use for stairs
local function get_node_vars(nodename)
local def = minetest.registered_nodes[nodename]
if def then
return def.light_source, def.use_texture_alpha, def.sunlight_propagates
end
return nil, nil, nil
end
-- Register stair -- Register stair
-- Node will be called stairs:stair_<subname> -- Node will be called stairs:stair_<subname>
function stairs.register_stair(subname, recipeitem, groups, images, description, function stairs.register_stair(subname, recipeitem, groups, images, description,
sounds, worldaligntex) sounds, worldaligntex)
local src_def = minetest.registered_nodes[recipeitem] local light_source, texture_alpha, sunlight = get_node_vars(recipeitem)
-- Set backface culling and world-aligned textures -- Set backface culling and world-aligned textures
local stair_images = {} local stair_images = {}
@ -93,7 +104,9 @@ function stairs.register_stair(subname, recipeitem, groups, images, description,
description = description, description = description,
drawtype = "nodebox", drawtype = "nodebox",
tiles = stair_images, tiles = stair_images,
use_texture_alpha = src_def and src_def.use_texture_alpha, use_texture_alpha = texture_alpha,
sunlight_propagates = sunlight,
light_source = light_source,
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
is_ground_content = false, is_ground_content = false,
@ -165,7 +178,7 @@ end
function stairs.register_slab(subname, recipeitem, groups, images, description, function stairs.register_slab(subname, recipeitem, groups, images, description,
sounds, worldaligntex) sounds, worldaligntex)
local src_def = minetest.registered_nodes[recipeitem] local light_source, texture_alpha, sunlight = get_node_vars(recipeitem)
-- Set world-aligned textures -- Set world-aligned textures
local slab_images = {} local slab_images = {}
@ -191,7 +204,9 @@ function stairs.register_slab(subname, recipeitem, groups, images, description,
description = description, description = description,
drawtype = "nodebox", drawtype = "nodebox",
tiles = slab_images, tiles = slab_images,
use_texture_alpha = src_def and src_def.use_texture_alpha, use_texture_alpha = texture_alpha,
sunlight_propagates = sunlight,
light_source = light_source,
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
is_ground_content = false, is_ground_content = false,
@ -303,7 +318,7 @@ end
function stairs.register_stair_inner(subname, recipeitem, groups, images, function stairs.register_stair_inner(subname, recipeitem, groups, images,
description, sounds, worldaligntex, full_description) description, sounds, worldaligntex, full_description)
local src_def = minetest.registered_nodes[recipeitem] local light_source, texture_alpha, sunlight = get_node_vars(recipeitem)
-- Set backface culling and world-aligned textures -- Set backface culling and world-aligned textures
local stair_images = {} local stair_images = {}
@ -338,7 +353,9 @@ function stairs.register_stair_inner(subname, recipeitem, groups, images,
description = description, description = description,
drawtype = "nodebox", drawtype = "nodebox",
tiles = stair_images, tiles = stair_images,
use_texture_alpha = src_def and src_def.use_texture_alpha, use_texture_alpha = texture_alpha,
sunlight_propagates = sunlight,
light_source = light_source,
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
is_ground_content = false, is_ground_content = false,
@ -393,7 +410,7 @@ end
function stairs.register_stair_outer(subname, recipeitem, groups, images, function stairs.register_stair_outer(subname, recipeitem, groups, images,
description, sounds, worldaligntex, full_description) description, sounds, worldaligntex, full_description)
local src_def = minetest.registered_nodes[recipeitem] local light_source, texture_alpha, sunlight = get_node_vars(recipeitem)
-- Set backface culling and world-aligned textures -- Set backface culling and world-aligned textures
local stair_images = {} local stair_images = {}
@ -428,7 +445,9 @@ function stairs.register_stair_outer(subname, recipeitem, groups, images,
description = description, description = description,
drawtype = "nodebox", drawtype = "nodebox",
tiles = stair_images, tiles = stair_images,
use_texture_alpha = src_def and src_def.use_texture_alpha, use_texture_alpha = texture_alpha,
sunlight_propagates = sunlight,
light_source = light_source,
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
is_ground_content = false, is_ground_content = false,