mirror of
git://repo.or.cz/rocks.git
synced 2024-11-18 00:08:35 +01:00
patch other mod's biomes with our sedimentary rocks.
using a overriden minetest.register_biome func.
This commit is contained in:
parent
091f2e0b57
commit
59c5eaf5b4
61
sed.lua
61
sed.lua
@ -10,24 +10,70 @@ minetest.register_node( "rocks:mudstone", {
|
|||||||
is_ground_content = true, sounds = default.node_sound_dirt_defaults(),
|
is_ground_content = true, sounds = default.node_sound_dirt_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
do -- Modify default grassland biome
|
local beach_max=4
|
||||||
|
local lowland_max=21
|
||||||
|
local highland_max=60
|
||||||
|
local beach_min=-7
|
||||||
|
local lowland_min=5
|
||||||
|
local highland_min=22
|
||||||
|
|
||||||
|
do
|
||||||
|
-- Modify default grassland biome
|
||||||
local grassland=minetest.registered_biomes["default:grassland"] or
|
local grassland=minetest.registered_biomes["default:grassland"] or
|
||||||
{
|
{ -- default biome, if no biome mod is installed
|
||||||
name = "rocks:grassland",
|
name = "rocks:grassland",
|
||||||
node_top = "default:dirt_with_grass",
|
node_top = "default:dirt_with_grass",
|
||||||
depth_top = 1,
|
depth_top = 1,
|
||||||
y_min = 5,
|
y_min = lowland_min,
|
||||||
y_max = 31000,
|
y_max = lowland_max,
|
||||||
heat_point = 50,
|
heat_point = 50,
|
||||||
humidity_point = 50,
|
humidity_point = 50,
|
||||||
}
|
}
|
||||||
grassland.node_filler="rocks:mudstone"
|
-- The biome layers are: dust, top, filler, stone
|
||||||
grassland.depth_filler=11
|
-- On beach: dust, shore_top, shore_filler, underwater
|
||||||
|
-- coastside: dust, top, filler, shore_filler, underwater, stone
|
||||||
|
if #minetest.registered_biomes > 1 then
|
||||||
|
minetest.log("error","Biomes registered before [rocks] discarded, please depend the mod on 'rocks' to fix this.")
|
||||||
|
-- can't just re-register them here, cause clear_biomes also clears decorations
|
||||||
|
end
|
||||||
minetest.clear_registered_biomes()
|
minetest.clear_registered_biomes()
|
||||||
|
-- hook to inject our sedimentary stone to new biomes
|
||||||
|
local old_register_biome=minetest.register_biome
|
||||||
|
minetest.register_biome=function(def)
|
||||||
|
print("[rocks] register_biome .name="..def.name)
|
||||||
|
for n,v in pairs(def) do
|
||||||
|
--if type(v)~="table" then print(" "..n.."="..v) end
|
||||||
|
end
|
||||||
|
local cor=false -- was the biomeheight patched?
|
||||||
|
local tl=3 -- tolerance in determining biome type based on y_min/max values
|
||||||
|
local btype -- biome type (:string)
|
||||||
|
if (def.y_max>3000) and (def.y_min<=highland_min) then
|
||||||
|
-- correct upper boundary of registered bimes
|
||||||
|
if (def.y_min<10) and (def.y_min>0) then def.y_max=lowland_max cor=true end
|
||||||
|
if (def.y_min<30) and (def.y_min>10) then def.y_max=highland_max cor=true end
|
||||||
|
minetest.log("action","/rocks correcting upper bound on biome "..def.name.." to "..def.y_max)
|
||||||
|
end
|
||||||
|
-- actual detection code
|
||||||
|
if def.node_stone=="default:desert_stone" then btype="desert"
|
||||||
|
elseif (def.y_min>beach_min-tl) and (def.y_max<beach_max+tl) then btype="beach"
|
||||||
|
elseif (def.y_min>0) and (def.y_max<lowland_max+tl) then btype="lowland"
|
||||||
|
elseif (def.y_min>highland_min-tl) and (def.y_max<highland_max+tl) then btype="highland"
|
||||||
|
elseif (def.y_min<-3000) and (def.y_max<lowland_min+tl) then btype="ocean"
|
||||||
|
else minetest.log("error", "/rocks could not guess elevation type for biome "..def.name) end
|
||||||
|
-- patch the new biomes with our rocks
|
||||||
|
if btype=="lowland" then
|
||||||
|
def.node_filler="rocks:mudstone"
|
||||||
|
def.depth_filler=11
|
||||||
|
end
|
||||||
|
-- and call the saved method to actually do the registration
|
||||||
|
old_register_biome(def)
|
||||||
|
end
|
||||||
|
--now register the default grassland
|
||||||
minetest.register_biome(grassland)
|
minetest.register_biome(grassland)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- more biomes
|
-- more biomes
|
||||||
|
-- todo: mountains, alps, volcanos
|
||||||
|
|
||||||
|
|
||||||
-- more rock defs
|
-- more rock defs
|
||||||
@ -60,8 +106,11 @@ local reg=function(name,param)
|
|||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- this does register a new sedimentary vein.
|
||||||
rocks.register_sedimentary=reg
|
rocks.register_sedimentary=reg
|
||||||
|
|
||||||
|
-- follows the only thing remaining from old ver :)
|
||||||
|
|
||||||
-- Sedimentary rock hardness and distribution
|
-- Sedimentary rock hardness and distribution
|
||||||
-- Rock Hard Distribution
|
-- Rock Hard Distribution
|
||||||
--Breccia Weak Localized continental, folded
|
--Breccia Weak Localized continental, folded
|
||||||
|
Loading…
Reference in New Issue
Block a user