Browse Source

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>
Yaman Qalieh 2 years ago
parent
commit
d775a9bdae
2 changed files with 33 additions and 8 deletions
  1. 6 0
      game_api.txt
  2. 27 8
      mods/stairs/init.lua

+ 6 - 0
game_api.txt

@@ -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
 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)`
 
  * Registers a stair

+ 27 - 8
mods/stairs/init.lua

@@ -57,13 +57,24 @@ local function warn_if_exists(nodename)
 	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
 -- Node will be called stairs:stair_<subname>
 
 function stairs.register_stair(subname, recipeitem, groups, images, description,
 		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
 	local stair_images = {}
@@ -93,7 +104,9 @@ function stairs.register_stair(subname, recipeitem, groups, images, description,
 		description = description,
 		drawtype = "nodebox",
 		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",
 		paramtype2 = "facedir",
 		is_ground_content = false,
@@ -165,7 +178,7 @@ end
 
 function stairs.register_slab(subname, recipeitem, groups, images, description,
 		sounds, worldaligntex)
-	local src_def = minetest.registered_nodes[recipeitem]
+	local light_source, texture_alpha, sunlight = get_node_vars(recipeitem)
 
 	-- Set world-aligned textures
 	local slab_images = {}
@@ -191,7 +204,9 @@ function stairs.register_slab(subname, recipeitem, groups, images, description,
 		description = description,
 		drawtype = "nodebox",
 		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",
 		paramtype2 = "facedir",
 		is_ground_content = false,
@@ -303,7 +318,7 @@ end
 
 function stairs.register_stair_inner(subname, recipeitem, groups, images,
 		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
 	local stair_images = {}
@@ -338,7 +353,9 @@ function stairs.register_stair_inner(subname, recipeitem, groups, images,
 		description = description,
 		drawtype = "nodebox",
 		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",
 		paramtype2 = "facedir",
 		is_ground_content = false,
@@ -393,7 +410,7 @@ end
 
 function stairs.register_stair_outer(subname, recipeitem, groups, images,
 		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
 	local stair_images = {}
@@ -428,7 +445,9 @@ function stairs.register_stair_outer(subname, recipeitem, groups, images,
 		description = description,
 		drawtype = "nodebox",
 		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",
 		paramtype2 = "facedir",
 		is_ground_content = false,