From 37710866f018db0abf71257806d0e33cbbe86ae8 Mon Sep 17 00:00:00 2001
From: sfan5 <sfan5@live.de>
Date: Tue, 16 Jul 2019 20:11:17 +0200
Subject: [PATCH] Switch dungeon type detection to biome name

see #2400, also removed a now unused alias
---
 mods/default/mapgen.lua      |  1 -
 mods/dungeon_loot/mapgen.lua | 23 +++++++++++------------
 2 files changed, 11 insertions(+), 13 deletions(-)

diff --git a/mods/default/mapgen.lua b/mods/default/mapgen.lua
index 2816efce..bec2a238 100644
--- a/mods/default/mapgen.lua
+++ b/mods/default/mapgen.lua
@@ -35,7 +35,6 @@ minetest.register_alias("mapgen_cobble", "default:cobble")
 minetest.register_alias("mapgen_stair_cobble", "stairs:stair_cobble")
 minetest.register_alias("mapgen_mossycobble", "default:mossycobble")
 minetest.register_alias("mapgen_stair_desert_stone", "stairs:stair_desert_stone")
-minetest.register_alias("mapgen_sandstonebrick", "default:sandstonebrick")
 
 
 --
diff --git a/mods/dungeon_loot/mapgen.lua b/mods/dungeon_loot/mapgen.lua
index 366d4ce4..12946d4c 100644
--- a/mods/dungeon_loot/mapgen.lua
+++ b/mods/dungeon_loot/mapgen.lua
@@ -15,12 +15,8 @@ local function random_sample(rand, list, count)
 end
 
 local function find_walls(cpos)
-	local wall = minetest.registered_aliases["mapgen_cobble"]
-	local wall_alt = minetest.registered_aliases["mapgen_mossycobble"]
-	local wall_ss = minetest.registered_aliases["mapgen_sandstonebrick"]
-	local wall_ds = minetest.registered_aliases["mapgen_desert_stone"]
 	local is_wall = function(node)
-		return table.indexof({wall, wall_alt, wall_ss, wall_ds}, node.name) ~= -1
+		return node.name ~= "air" and node.name ~= "ignore"
 	end
 
 	local dirs = {{x=1, z=0}, {x=-1, z=0}, {x=0, z=1}, {x=0, z=-1}}
@@ -29,7 +25,6 @@ local function find_walls(cpos)
 	local ret = {}
 	local mindist = {x=0, z=0}
 	local min = function(a, b) return a ~= 0 and math.min(a, b) or b end
-	local wallnode
 	for _, dir in ipairs(dirs) do
 		for i = 1, 9 do -- 9 = max room size / 2
 			local pos = vector.add(cpos, {x=dir.x*i, y=0, z=dir.z*i})
@@ -50,7 +45,6 @@ local function find_walls(cpos)
 					else
 						mindist.z = min(mindist.z, i-1)
 					end
-					wallnode = node.name
 				end
 				-- abort even if it wasn't a wall cause something is in the way
 				break
@@ -58,14 +52,19 @@ local function find_walls(cpos)
 		end
 	end
 
-	local mapping = {
-		[wall_ss] = "sandstone",
-		[wall_ds] = "desert"
-	}
+	local biome = minetest.get_biome_data(cpos)
+	local biome = biome and minetest.get_biome_name(biome.biome) or ""
+	local type = "normal"
+	if biome:find("desert") == 1 then
+		type = "desert"
+	elseif biome:find("sandstone_desert") == 1 then
+		type = "sandstone"
+	end
+
 	return {
 		walls = ret,
 		size = {x=mindist.x*2, z=mindist.z*2},
-		type = mapping[wallnode] or "normal"
+		type = type,
 	}
 end
 
-- 
GitLab