From 9aeafe60531cf6b6cfd1a79db220b7ebcf8c5aa4 Mon Sep 17 00:00:00 2001 From: ancientmarinerdev Date: Sun, 22 Jan 2023 20:27:57 +0000 Subject: [PATCH 1/7] Fix mapgen issue for mcl5 to mcl2 conversion --- mods/MAPGEN/mcl_villages/utils.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mods/MAPGEN/mcl_villages/utils.lua b/mods/MAPGEN/mcl_villages/utils.lua index 3b882af0c7..32ae04c1fc 100644 --- a/mods/MAPGEN/mcl_villages/utils.lua +++ b/mods/MAPGEN/mcl_villages/utils.lua @@ -198,6 +198,9 @@ end ------------------------------------------------------------------------------- function settlements.evaluate_heightmap() local heightmap = minetest.get_mapgen_object("heightmap") + + if not heightmap then return max_height_difference + 1 end + -- max height and min height, initialize with impossible values for easier first time setting local max_y = -50000 local min_y = 50000 From ace6f8db435d78b7f90731f860ee7568cbe3e339 Mon Sep 17 00:00:00 2001 From: ancientmarinerdev Date: Fri, 3 Feb 2023 22:03:49 +0000 Subject: [PATCH 2/7] Ensure index for heightmap entry is within bounds --- mods/MAPGEN/mcl_villages/init.lua | 15 ++++++++--- mods/MAPGEN/mcl_villages/utils.lua | 43 +++++++++++++++++++++++------- 2 files changed, 46 insertions(+), 12 deletions(-) diff --git a/mods/MAPGEN/mcl_villages/init.lua b/mods/MAPGEN/mcl_villages/init.lua index 7ada9bbcb3..0cb0712b56 100644 --- a/mods/MAPGEN/mcl_villages/init.lua +++ b/mods/MAPGEN/mcl_villages/init.lua @@ -80,20 +80,29 @@ end local mg_name = minetest.get_mapgen_setting("mg_name") if mg_name ~= "singlenode" then mcl_mapgen_core.register_generator("villages", nil, function(minp, maxp, blockseed) - -- don't build settlement underground if maxp.y < 0 then return end + -- randomly try to build settlements if blockseed % 77 ~= 17 then return end + --minetest.log("Rng good. Generate attempt") + -- needed for manual and automated settlement building -- don't build settlements on (too) uneven terrain local n=minetest.get_node_or_nil(minp) if n and n.name == "mcl_villages:structblock" then return end + --minetest.log("No existing village attempt here") + if villagegen[minetest.pos_to_string(minp)] ~= nil then return end + + --minetest.log("Not in village gen. Put down placeholder: " .. minetest.pos_to_string(minp) .. " || " .. minetest.pos_to_string(maxp)) minetest.set_node(minp,{name="mcl_villages:structblock"}) local height_difference = settlements.evaluate_heightmap() - if height_difference > max_height_difference then return end - + if not height_difference or height_difference > max_height_difference then + minetest.log("action", "Do not spawn village here as heightmap not good") + return + end + --minetest.log("Build me a village: " .. minetest.pos_to_string(minp) .. " || " .. minetest.pos_to_string(maxp)) villagegen[minetest.pos_to_string(minp)]={minp=vector.new(minp), maxp=vector.new(maxp), blockseed=blockseed} end) end diff --git a/mods/MAPGEN/mcl_villages/utils.lua b/mods/MAPGEN/mcl_villages/utils.lua index 32ae04c1fc..5ed3cbbe09 100644 --- a/mods/MAPGEN/mcl_villages/utils.lua +++ b/mods/MAPGEN/mcl_villages/utils.lua @@ -199,7 +199,12 @@ end function settlements.evaluate_heightmap() local heightmap = minetest.get_mapgen_object("heightmap") - if not heightmap then return max_height_difference + 1 end + if not heightmap then + minetest.log("action", "No heightmap. That should not happen") + return max_height_difference + 1 + end + + --minetest.log("action", "heightmap size: " .. tostring(#heightmap)) -- max height and min height, initialize with impossible values for easier first time setting local max_y = -50000 @@ -208,16 +213,32 @@ function settlements.evaluate_heightmap() local square_start = 1621 local square_end = 1661 for j = 1 , 40, 1 do + if square_start >= #heightmap then + --minetest.log("action", "Heightmap size reached. Go no further outside") + break + end for i = square_start, square_end, 1 do - -- skip buggy heightmaps, return high value - if heightmap[i] == -31000 or heightmap[i] == 31000 then - return max_height_difference + 1 + --minetest.log("action", "current hm index: " .. tostring(i) .. "current hm entry: " .. tostring(heightmap[i])) + + if i >= #heightmap then + --minetest.log("action", "Heightmap size reached. Go no further") + break end - if heightmap[i] < min_y then - min_y = heightmap[i] - end - if heightmap[i] > max_y then - max_y = heightmap[i] + local current_hm_entry = heightmap[i] + if current_hm_entry then + -- skip buggy heightmaps, return high value. Converted mcl5 maps can be -31007 + if current_hm_entry == -31000 or heightmap[i] == 31000 then + --minetest.log("action", "incorrect heighmap values. abandon") + return max_height_difference + 1 + end + if current_hm_entry < min_y then + min_y = current_hm_entry + end + if current_hm_entry > max_y then + max_y = current_hm_entry + end + else + --minetest.log("action", "Failed to get hm index: " .. tostring(i) .. "and ... " .. tostring(#heightmap)) end end -- set next line @@ -226,10 +247,14 @@ function settlements.evaluate_heightmap() end -- return the difference between highest and lowest pos in chunk local height_diff = max_y - min_y + + --minetest.log("action", "height_diff = " .. tostring(height_diff)) + -- filter buggy heightmaps if height_diff <= 1 then return max_height_difference + 1 end + --minetest.log("action", "return heigh diff = " .. tostring(height_diff)) -- debug info settlements.debug("heightdiff ".. height_diff) return height_diff From 156d096a78d76ac73672b62158a31686261ed9f6 Mon Sep 17 00:00:00 2001 From: SmokeyDope Date: Sun, 5 Feb 2023 23:30:41 +0000 Subject: [PATCH 3/7] Add compostability to warped fungus and crimson fungus --- mods/ITEMS/mcl_crimson/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_crimson/init.lua b/mods/ITEMS/mcl_crimson/init.lua index 0c61f3cee6..5f763ea74a 100644 --- a/mods/ITEMS/mcl_crimson/init.lua +++ b/mods/ITEMS/mcl_crimson/init.lua @@ -74,7 +74,7 @@ minetest.register_node("mcl_crimson:warped_fungus", { sunlight_propagates = true, paramtype = "light", walkable = false, - groups = {dig_immediate=3,mushroom=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,enderman_takable=1,deco_block=1}, + groups = {dig_immediate=3,mushroom=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,enderman_takable=1,deco_block=1,compostability=65}, light_source = 1, sounds = mcl_sounds.node_sound_leaves_defaults(), node_placement_prediction = "", @@ -458,7 +458,7 @@ minetest.register_node("mcl_crimson:crimson_fungus", { sunlight_propagates = true, paramtype = "light", walkable = false, - groups = {dig_immediate=3,mushroom=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,enderman_takable=1,deco_block=1}, + groups = {dig_immediate=3,mushroom=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,enderman_takable=1,deco_block=1,compostability=65}, light_source = 1, sounds = mcl_sounds.node_sound_leaves_defaults(), selection_box = { From cac6e15736c8a9d934d9e476536dced6375a9294 Mon Sep 17 00:00:00 2001 From: SmokeyDope Date: Sun, 5 Feb 2023 23:40:12 +0000 Subject: [PATCH 4/7] Add compostability to twisting vines and weeping vines --- mods/ITEMS/mcl_crimson/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_crimson/init.lua b/mods/ITEMS/mcl_crimson/init.lua index 5f763ea74a..05f43d0aee 100644 --- a/mods/ITEMS/mcl_crimson/init.lua +++ b/mods/ITEMS/mcl_crimson/init.lua @@ -109,7 +109,7 @@ minetest.register_node("mcl_crimson:twisting_vines", { walkable = false, climbable = true, buildable_to = true, - groups = {dig_immediate=3, shearsy=1, vines=1, dig_by_water=1, destroy_by_lava_flow=1, dig_by_piston=1, deco_block=1}, + groups = {dig_immediate=3, shearsy=1, vines=1, dig_by_water=1, destroy_by_lava_flow=1, dig_by_piston=1, deco_block=1, compostability=50}, sounds = mcl_sounds.node_sound_leaves_defaults(), selection_box = { type = "fixed", @@ -184,7 +184,7 @@ minetest.register_node("mcl_crimson:weeping_vines", { walkable = false, climbable = true, buildable_to = true, - groups = {dig_immediate=3, shearsy=1, vines=1, dig_by_water=1, destroy_by_lava_flow=1, dig_by_piston=1, deco_block=1}, + groups = {dig_immediate=3, shearsy=1, vines=1, dig_by_water=1, destroy_by_lava_flow=1, dig_by_piston=1, deco_block=1, compostability=50}, sounds = mcl_sounds.node_sound_leaves_defaults(), selection_box = { type = "fixed", From 1401652015450d110140e13968d8c102c5946aa2 Mon Sep 17 00:00:00 2001 From: SmokeyDope Date: Sun, 5 Feb 2023 23:45:37 +0000 Subject: [PATCH 5/7] Add compostability to warped roots and crimson roots --- mods/ITEMS/mcl_crimson/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_crimson/init.lua b/mods/ITEMS/mcl_crimson/init.lua index 05f43d0aee..f5b23b3fce 100644 --- a/mods/ITEMS/mcl_crimson/init.lua +++ b/mods/ITEMS/mcl_crimson/init.lua @@ -280,7 +280,7 @@ minetest.register_node("mcl_crimson:warped_roots", { paramtype = "light", walkable = false, buildable_to = true, - groups = {dig_immediate=3,vines=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1, shearsy = 1}, + groups = {dig_immediate=3,vines=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1,shearsy = 1,compostability=65}, sounds = mcl_sounds.node_sound_leaves_defaults(), selection_box = { type = "fixed", @@ -496,7 +496,7 @@ minetest.register_node("mcl_crimson:crimson_roots", { paramtype = "light", walkable = false, buildable_to = true, - groups = {dig_immediate=3,vines=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1, shearsy = 1}, + groups = {dig_immediate=3,vines=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1,shearsy = 1,compostability=65}, sounds = mcl_sounds.node_sound_leaves_defaults(), selection_box = { type = "fixed", From 88cf3a590093e420d3f11f101f59d47c1f76e6ec Mon Sep 17 00:00:00 2001 From: SmokeyDope Date: Sun, 5 Feb 2023 23:48:50 +0000 Subject: [PATCH 6/7] Add compostability to nether sprouts --- mods/ITEMS/mcl_crimson/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_crimson/init.lua b/mods/ITEMS/mcl_crimson/init.lua index f5b23b3fce..2132373519 100644 --- a/mods/ITEMS/mcl_crimson/init.lua +++ b/mods/ITEMS/mcl_crimson/init.lua @@ -258,7 +258,7 @@ minetest.register_node("mcl_crimson:nether_sprouts", { paramtype = "light", walkable = false, buildable_to = true, - groups = {dig_immediate=3,vines=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1, shearsy = 1}, + groups = {dig_immediate=3,vines=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1,shearsy=1,compostability=50}, sounds = mcl_sounds.node_sound_leaves_defaults(), selection_box = { type = "fixed", From 48eb934d64b9584b8b13b6f91e534fcd81b60472 Mon Sep 17 00:00:00 2001 From: SmokeyDope Date: Mon, 6 Feb 2023 00:01:10 +0000 Subject: [PATCH 7/7] Add compostability to warped wart blocks and shroomlight --- mods/ITEMS/mcl_crimson/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_crimson/init.lua b/mods/ITEMS/mcl_crimson/init.lua index 2132373519..039268c131 100644 --- a/mods/ITEMS/mcl_crimson/init.lua +++ b/mods/ITEMS/mcl_crimson/init.lua @@ -301,7 +301,7 @@ mcl_flowerpots.register_potted_flower("mcl_crimson:warped_roots", { minetest.register_node("mcl_crimson:warped_wart_block", { description = S("Warped Wart Block"), tiles = {"warped_wart_block.png"}, - groups = {handy = 1, hoey = 7, swordy = 1, deco_block = 1}, + groups = {handy = 1, hoey = 7, swordy = 1, deco_block = 1, compostability = 85}, _mcl_hardness = 1, sounds = mcl_sounds.node_sound_leaves_defaults({ footstep={name="default_dirt_footstep", gain=0.7}, @@ -312,7 +312,7 @@ minetest.register_node("mcl_crimson:warped_wart_block", { minetest.register_node("mcl_crimson:shroomlight", { description = S("Shroomlight"), tiles = {"shroomlight.png"}, - groups = {handy = 1, hoey = 7, swordy = 1, deco_block = 1}, + groups = {handy = 1, hoey = 7, swordy = 1, deco_block = 1, compostability = 65}, light_source = minetest.LIGHT_MAX, _mcl_hardness = 1, sounds = mcl_sounds.node_sound_leaves_defaults({