mirror of
https://github.com/minetest/minetest_game.git
synced 2024-12-22 23:10:17 +01:00
Switch dungeon type detection to biome name
see #2400, also removed a now unused alias
This commit is contained in:
parent
bfb84da39c
commit
37710866f0
@ -35,7 +35,6 @@ minetest.register_alias("mapgen_cobble", "default:cobble")
|
|||||||
minetest.register_alias("mapgen_stair_cobble", "stairs:stair_cobble")
|
minetest.register_alias("mapgen_stair_cobble", "stairs:stair_cobble")
|
||||||
minetest.register_alias("mapgen_mossycobble", "default:mossycobble")
|
minetest.register_alias("mapgen_mossycobble", "default:mossycobble")
|
||||||
minetest.register_alias("mapgen_stair_desert_stone", "stairs:stair_desert_stone")
|
minetest.register_alias("mapgen_stair_desert_stone", "stairs:stair_desert_stone")
|
||||||
minetest.register_alias("mapgen_sandstonebrick", "default:sandstonebrick")
|
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
|
@ -15,12 +15,8 @@ local function random_sample(rand, list, count)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function find_walls(cpos)
|
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)
|
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
|
end
|
||||||
|
|
||||||
local dirs = {{x=1, z=0}, {x=-1, z=0}, {x=0, z=1}, {x=0, z=-1}}
|
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 ret = {}
|
||||||
local mindist = {x=0, z=0}
|
local mindist = {x=0, z=0}
|
||||||
local min = function(a, b) return a ~= 0 and math.min(a, b) or b end
|
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 _, dir in ipairs(dirs) do
|
||||||
for i = 1, 9 do -- 9 = max room size / 2
|
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})
|
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
|
else
|
||||||
mindist.z = min(mindist.z, i-1)
|
mindist.z = min(mindist.z, i-1)
|
||||||
end
|
end
|
||||||
wallnode = node.name
|
|
||||||
end
|
end
|
||||||
-- abort even if it wasn't a wall cause something is in the way
|
-- abort even if it wasn't a wall cause something is in the way
|
||||||
break
|
break
|
||||||
@ -58,14 +52,19 @@ local function find_walls(cpos)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local mapping = {
|
local biome = minetest.get_biome_data(cpos)
|
||||||
[wall_ss] = "sandstone",
|
local biome = biome and minetest.get_biome_name(biome.biome) or ""
|
||||||
[wall_ds] = "desert"
|
local type = "normal"
|
||||||
}
|
if biome:find("desert") == 1 then
|
||||||
|
type = "desert"
|
||||||
|
elseif biome:find("sandstone_desert") == 1 then
|
||||||
|
type = "sandstone"
|
||||||
|
end
|
||||||
|
|
||||||
return {
|
return {
|
||||||
walls = ret,
|
walls = ret,
|
||||||
size = {x=mindist.x*2, z=mindist.z*2},
|
size = {x=mindist.x*2, z=mindist.z*2},
|
||||||
type = mapping[wallnode] or "normal"
|
type = type,
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user