From 816f0bf7ebf104c9409ecc60ea20696c84a0ee0a Mon Sep 17 00:00:00 2001 From: FaceDeer Date: Mon, 11 Nov 2019 13:12:46 -0700 Subject: [PATCH] more fixes for overgen support --- df_caverns/level1.lua | 5 +++-- df_caverns/level2.lua | 4 ++-- df_caverns/level3.lua | 26 ++++++++++++------------- df_caverns/shared.lua | 1 - df_caverns/sunless_sea.lua | 13 +++++++++---- df_primordial_items/jungle_mushroom.lua | 9 +++++---- 6 files changed, 32 insertions(+), 26 deletions(-) diff --git a/df_caverns/level1.lua b/df_caverns/level1.lua index be32ae2..c6b2138 100644 --- a/df_caverns/level1.lua +++ b/df_caverns/level1.lua @@ -96,8 +96,9 @@ local decorate_level_1 = function(minp, maxp, seed, vm, node_arrays, area, data) -- Partly fill flooded caverns and warrens if minp.y <= subsea_level then - for vi in area:iterp(minp, maxp) do - if data[vi] == c_air and area:get_y(vi) <= subsea_level and nvals_cave[vi] < -flooding_threshold then + for vi, x, y, z in area:iterp_yxz(area.MinEdge, area.MaxEdge) do + -- convert all air below sea level into water + if y <= subsea_level and data[vi] == c_air and nvals_cave[vi] < -flooding_threshold then data[vi] = c_water end end diff --git a/df_caverns/level2.lua b/df_caverns/level2.lua index ffcc6ae..f027fc1 100644 --- a/df_caverns/level2.lua +++ b/df_caverns/level2.lua @@ -138,7 +138,7 @@ local decorate_level_2 = function(minp, maxp, seed, vm, node_arrays, area, data) local vein_area -- Partly fill flooded caverns and warrens - for vi in area:iterp(minp, maxp) do + for vi, x, y, z in area:iterp_yxz(area.MinEdge, area.MaxEdge) do local cave_val = nvals_cave[vi] if cave_val < -flooding_threshold then @@ -156,7 +156,7 @@ local decorate_level_2 = function(minp, maxp, seed, vm, node_arrays, area, data) data[vi] = c_veinstone end end - if data[vi] == c_air and area:get_y(vi) <= subsea_level then + if data[vi] == c_air and y <= subsea_level then data[vi] = c_water -- otherwise, fill air with water when below sea level end end diff --git a/df_caverns/level3.lua b/df_caverns/level3.lua index f6facc2..6c6dd8d 100644 --- a/df_caverns/level3.lua +++ b/df_caverns/level3.lua @@ -207,25 +207,25 @@ local decorate_level_3 = function(minp, maxp, seed, vm, node_arrays, area, data) -- Partly fill flooded caverns and warrens if minp.y <= subsea_level then - for vi in area:iterp(minp, maxp) do - local y = area:get_y(vi) + for vi, x, y, z in area:iterp_yxz(area.MinEdge, area.MaxEdge) do if y <= subsea_level and nvals_cave[vi] < -flooding_threshold then if data[vi] == c_air and y <= subsea_level then data[vi] = c_water end - local index2d = mapgen_helper.index2di(minp, maxp, area, vi) - local biome_name = get_biome(heatmap[index2d], humiditymap[index2d]) - - if biome_name == "blackcap" then - -- oil slick - local cave = math.abs(nvals_cave[vi]) - if y == subsea_level and data[vi] == c_water and cave + nvals_cracks[index2d]*0.025 < cavern_def.cave_threshold + 0.1 then - data[vi] = c_oil + if (mapgen_helper.is_pos_within_box({x=x, y=y, z=z}, minp, maxp)) then + local index2d = mapgen_helper.index2di(minp, maxp, area, vi) + local biome_name = get_biome(heatmap[index2d], humiditymap[index2d]) + if biome_name == "blackcap" then + -- oil slick + local cave = math.abs(nvals_cave[vi]) + if y == subsea_level and data[vi] == c_water and cave + nvals_cracks[index2d]*0.025 < cavern_def.cave_threshold + 0.1 then + data[vi] = c_oil + end + elseif biome_name == "bloodnether" and y <= subsea_level and y > subsea_level - ice_thickness and data[vi] == c_water then + -- floating ice + data[vi] = c_ice end - elseif biome_name == "bloodnether" and y <= subsea_level and y > subsea_level - ice_thickness and data[vi] == c_water then - -- floating ice - data[vi] = c_ice end end end diff --git a/df_caverns/shared.lua b/df_caverns/shared.lua index 6ff42b6..af6a949 100644 --- a/df_caverns/shared.lua +++ b/df_caverns/shared.lua @@ -221,7 +221,6 @@ local dfcaverns_mods = { "df_underworld_items:", "ice_sprites:", "mine_gas:", - "default:water", } df_caverns.is_ground_content = function(c_node) if dfcaverns_nodes then diff --git a/df_caverns/sunless_sea.lua b/df_caverns/sunless_sea.lua index 5dd0162..c102862 100644 --- a/df_caverns/sunless_sea.lua +++ b/df_caverns/sunless_sea.lua @@ -223,15 +223,20 @@ local decorate_sunless_sea = function(minp, maxp, seed, vm, node_arrays, area, d data[vi] = c_obsidian end end - -- convert all air below sea level into water - if y <= sea_level and data[vi] == c_air then - data[vi] = c_water - end else skip_next = false end end + if minp.y <= sea_level then + for vi, x, y, z in area:iterp_yxz(area.MinEdge, area.MaxEdge) do + -- convert all air below sea level into water + if y <= sea_level and data[vi] == c_air then + data[vi] = c_water + end + end + end + --------------------------------------------------------- -- Cavern floors diff --git a/df_primordial_items/jungle_mushroom.lua b/df_primordial_items/jungle_mushroom.lua index 47ca8cb..5006c57 100644 --- a/df_primordial_items/jungle_mushroom.lua +++ b/df_primordial_items/jungle_mushroom.lua @@ -118,8 +118,9 @@ minetest.register_node("df_primordial_items:jungle_mushroom_sapling", { }) local c_stem = minetest.get_content_id("df_primordial_items:jungle_mushroom_trunk") -local c_cap_1 = minetest.get_content_id("df_primordial_items:jungle_mushroom_cap_1") -local c_cap_2 = minetest.get_content_id("df_primordial_items:jungle_mushroom_cap_2") +local c_cap_1 = minetest.get_content_id("df_primordial_items:jungle_mushroom_cap_1") +local c_cap_2 = minetest.get_content_id("df_primordial_items:jungle_mushroom_cap_2") +local c_air = minetest.get_content_id("air") df_primordial_items.spawn_jungle_mushroom = function(pos) local x, y, z = pos.x, pos.y, pos.z @@ -142,7 +143,7 @@ df_primordial_items.spawn_jungle_mushroom = function(pos) local area = VoxelArea:new({MinEdge = minp, MaxEdge = maxp}) local data = vm:get_data() - subterrane.giant_mushroom(area:indexp(pos), area, data, c_stem, c_cap, nil, stem_height, cap_radius) + subterrane.giant_mushroom(area:indexp(pos), area, data, c_stem, c_cap, c_air, stem_height, cap_radius) vm:set_data(data) vm:write_to_map() @@ -158,5 +159,5 @@ df_primordial_items.spawn_jungle_mushroom_vm = function(vi, area, data) else c_cap = c_cap_2 end - subterrane.giant_mushroom(vi, area, data, c_stem, c_cap, nil, stem_height, cap_radius) + subterrane.giant_mushroom(vi, area, data, c_stem, c_cap, c_air, stem_height, cap_radius) end \ No newline at end of file