Use Biome API to turn floating sand to sandstone
This commit is contained in:
parent
5d3323d094
commit
b1065b2247
|
@ -1165,22 +1165,6 @@ local function register_biomelike_ores()
|
||||||
biomes = { "mesa_plateau_f_grasstop" },
|
biomes = { "mesa_plateau_f_grasstop" },
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Red sandstone in mesa biomes
|
|
||||||
-- TODO: Should generate at cave entrances only
|
|
||||||
minetest.register_ore({
|
|
||||||
ore_type = "blob",
|
|
||||||
ore = "mcl_core:redsandstone",
|
|
||||||
wherein = {"mcl_core:redsand"},
|
|
||||||
clust_scarcity = 1000,
|
|
||||||
clust_num_ores = 12,
|
|
||||||
clust_size = 4,
|
|
||||||
y_min = 8,
|
|
||||||
y_max = mcl_vars.mg_overworld_max,
|
|
||||||
noise_threshold = 0.0,
|
|
||||||
noise_params = {offset=0, scale=5, spread={x=250, y=250, z=250}, seed=64, octaves=3, persist=0.60},
|
|
||||||
biomes = { "mesa_sandlevel", "mesa_plateau_f_sandlevel" },
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Small dirt patches in Extreme Hills M
|
-- Small dirt patches in Extreme Hills M
|
||||||
minetest.register_ore({
|
minetest.register_ore({
|
||||||
ore_type = "blob",
|
ore_type = "blob",
|
||||||
|
|
|
@ -1371,6 +1371,9 @@ local c_dirt = minetest.get_content_id("mcl_core:dirt")
|
||||||
local c_dirt_with_grass = minetest.get_content_id("mcl_core:dirt_with_grass")
|
local c_dirt_with_grass = minetest.get_content_id("mcl_core:dirt_with_grass")
|
||||||
local c_dirt_with_grass_snow = minetest.get_content_id("mcl_core:dirt_with_grass_snow")
|
local c_dirt_with_grass_snow = minetest.get_content_id("mcl_core:dirt_with_grass_snow")
|
||||||
local c_sand = minetest.get_content_id("mcl_core:sand")
|
local c_sand = minetest.get_content_id("mcl_core:sand")
|
||||||
|
local c_sandstone = minetest.get_content_id("mcl_core:sandstone")
|
||||||
|
local c_redsand = minetest.get_content_id("mcl_core:redsand")
|
||||||
|
local c_redsandstone = minetest.get_content_id("mcl_core:redsandstone")
|
||||||
local c_void = minetest.get_content_id("mcl_core:void")
|
local c_void = minetest.get_content_id("mcl_core:void")
|
||||||
local c_lava = minetest.get_content_id("mcl_core:lava_source")
|
local c_lava = minetest.get_content_id("mcl_core:lava_source")
|
||||||
local c_water = minetest.get_content_id("mcl_core:water_source")
|
local c_water = minetest.get_content_id("mcl_core:water_source")
|
||||||
|
@ -1496,7 +1499,8 @@ minetest.register_on_generated(function(minp, maxp)
|
||||||
----- Interactive block fixing section -----
|
----- Interactive block fixing section -----
|
||||||
----- The section to perform basic block overrides of the core mapgen generated world. -----
|
----- The section to perform basic block overrides of the core mapgen generated world. -----
|
||||||
|
|
||||||
-- Snow fixes. This code implements snow consistency.
|
-- Snow and sand fixes. This code implements snow consistency
|
||||||
|
-- and fixes floating sand.
|
||||||
-- A snowy grass block must be below a top snow or snow block at all times.
|
-- A snowy grass block must be below a top snow or snow block at all times.
|
||||||
if minp.y <= mcl_vars.mg_overworld_max and maxp.y >= mcl_vars.mg_overworld_min then
|
if minp.y <= mcl_vars.mg_overworld_max and maxp.y >= mcl_vars.mg_overworld_min then
|
||||||
-- v6 mapgen:
|
-- v6 mapgen:
|
||||||
|
@ -1517,14 +1521,26 @@ minetest.register_on_generated(function(minp, maxp)
|
||||||
|
|
||||||
-- Non-v6 mapgens:
|
-- Non-v6 mapgens:
|
||||||
-- Clear snowy grass blocks without snow above to ensure consistency.
|
-- Clear snowy grass blocks without snow above to ensure consistency.
|
||||||
|
-- Solidify floating sand to sandstone (both colors).
|
||||||
else
|
else
|
||||||
local nodes = minetest.find_nodes_in_area(minp, maxp, "mcl_core:dirt_with_grass_snow")
|
--local nodes = minetest.find_nodes_in_area(minp, maxp, {"mcl_core:dirt_with_grass_snow"})
|
||||||
|
local nodes = minetest.find_nodes_in_area(minp, maxp, {"mcl_core:dirt_with_grass_snow", "mcl_core:sand", "mcl_core:redsand"})
|
||||||
for n=1, #nodes do
|
for n=1, #nodes do
|
||||||
local p_pos = area:index(nodes[n].x, nodes[n].y, nodes[n].z)
|
local p_pos = area:index(nodes[n].x, nodes[n].y, nodes[n].z)
|
||||||
local p_pos_above = area:index(nodes[n].x, nodes[n].y+1, nodes[n].z)
|
local p_pos_above = area:index(nodes[n].x, nodes[n].y+1, nodes[n].z)
|
||||||
if p_pos_above and data[p_pos_above] ~= c_top_snow and data[p_pos_above] ~= c_snow_block then
|
local p_pos_below = area:index(nodes[n].x, nodes[n].y-1, nodes[n].z)
|
||||||
|
if data[p_pos] == c_dirt_with_grass_snow and p_pos_above and data[p_pos_above] ~= c_top_snow and data[p_pos_above] ~= c_snow_block then
|
||||||
data[p_pos] = c_dirt_with_grass
|
data[p_pos] = c_dirt_with_grass
|
||||||
lvm_used = true
|
lvm_used = true
|
||||||
|
elseif p_pos_below and data[p_pos_below] == c_air or data[p_pos_below] == c_water then
|
||||||
|
if data[p_pos] == c_sand then
|
||||||
|
data[p_pos] = c_sandstone
|
||||||
|
lvm_used = true
|
||||||
|
elseif data[p_pos] == c_redsand then
|
||||||
|
-- Note: This is the only place in which red sandstone is generatd
|
||||||
|
data[p_pos] = c_redsandstone
|
||||||
|
lvm_used = true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue