forked from VoxeLibre/VoxeLibre
Merge branch 'master' into fix_dirt_dry_grass
This commit is contained in:
commit
0e000e6491
|
@ -74,7 +74,7 @@ minetest.register_node("mcl_crimson:warped_fungus", {
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
walkable = false,
|
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,
|
light_source = 1,
|
||||||
sounds = mcl_sounds.node_sound_leaves_defaults(),
|
sounds = mcl_sounds.node_sound_leaves_defaults(),
|
||||||
node_placement_prediction = "",
|
node_placement_prediction = "",
|
||||||
|
@ -109,7 +109,7 @@ minetest.register_node("mcl_crimson:twisting_vines", {
|
||||||
walkable = false,
|
walkable = false,
|
||||||
climbable = true,
|
climbable = true,
|
||||||
buildable_to = 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(),
|
sounds = mcl_sounds.node_sound_leaves_defaults(),
|
||||||
selection_box = {
|
selection_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
|
@ -184,7 +184,7 @@ minetest.register_node("mcl_crimson:weeping_vines", {
|
||||||
walkable = false,
|
walkable = false,
|
||||||
climbable = true,
|
climbable = true,
|
||||||
buildable_to = 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(),
|
sounds = mcl_sounds.node_sound_leaves_defaults(),
|
||||||
selection_box = {
|
selection_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
|
@ -258,7 +258,7 @@ minetest.register_node("mcl_crimson:nether_sprouts", {
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
walkable = false,
|
walkable = false,
|
||||||
buildable_to = true,
|
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(),
|
sounds = mcl_sounds.node_sound_leaves_defaults(),
|
||||||
selection_box = {
|
selection_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
|
@ -280,7 +280,7 @@ minetest.register_node("mcl_crimson:warped_roots", {
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
walkable = false,
|
walkable = false,
|
||||||
buildable_to = true,
|
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(),
|
sounds = mcl_sounds.node_sound_leaves_defaults(),
|
||||||
selection_box = {
|
selection_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
|
@ -301,7 +301,7 @@ mcl_flowerpots.register_potted_flower("mcl_crimson:warped_roots", {
|
||||||
minetest.register_node("mcl_crimson:warped_wart_block", {
|
minetest.register_node("mcl_crimson:warped_wart_block", {
|
||||||
description = S("Warped Wart Block"),
|
description = S("Warped Wart Block"),
|
||||||
tiles = {"warped_wart_block.png"},
|
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,
|
_mcl_hardness = 1,
|
||||||
sounds = mcl_sounds.node_sound_leaves_defaults({
|
sounds = mcl_sounds.node_sound_leaves_defaults({
|
||||||
footstep={name="default_dirt_footstep", gain=0.7},
|
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", {
|
minetest.register_node("mcl_crimson:shroomlight", {
|
||||||
description = S("Shroomlight"),
|
description = S("Shroomlight"),
|
||||||
tiles = {"shroomlight.png"},
|
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,
|
light_source = minetest.LIGHT_MAX,
|
||||||
_mcl_hardness = 1,
|
_mcl_hardness = 1,
|
||||||
sounds = mcl_sounds.node_sound_leaves_defaults({
|
sounds = mcl_sounds.node_sound_leaves_defaults({
|
||||||
|
@ -458,7 +458,7 @@ minetest.register_node("mcl_crimson:crimson_fungus", {
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
walkable = false,
|
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,
|
light_source = 1,
|
||||||
sounds = mcl_sounds.node_sound_leaves_defaults(),
|
sounds = mcl_sounds.node_sound_leaves_defaults(),
|
||||||
selection_box = {
|
selection_box = {
|
||||||
|
@ -496,7 +496,7 @@ minetest.register_node("mcl_crimson:crimson_roots", {
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
walkable = false,
|
walkable = false,
|
||||||
buildable_to = true,
|
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(),
|
sounds = mcl_sounds.node_sound_leaves_defaults(),
|
||||||
selection_box = {
|
selection_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
|
|
|
@ -80,20 +80,29 @@ end
|
||||||
local mg_name = minetest.get_mapgen_setting("mg_name")
|
local mg_name = minetest.get_mapgen_setting("mg_name")
|
||||||
if mg_name ~= "singlenode" then
|
if mg_name ~= "singlenode" then
|
||||||
mcl_mapgen_core.register_generator("villages", nil, function(minp, maxp, blockseed)
|
mcl_mapgen_core.register_generator("villages", nil, function(minp, maxp, blockseed)
|
||||||
-- don't build settlement underground
|
|
||||||
if maxp.y < 0 then return end
|
if maxp.y < 0 then return end
|
||||||
|
|
||||||
-- randomly try to build settlements
|
-- randomly try to build settlements
|
||||||
if blockseed % 77 ~= 17 then return end
|
if blockseed % 77 ~= 17 then return end
|
||||||
|
--minetest.log("Rng good. Generate attempt")
|
||||||
|
|
||||||
-- needed for manual and automated settlement building
|
-- needed for manual and automated settlement building
|
||||||
-- don't build settlements on (too) uneven terrain
|
-- don't build settlements on (too) uneven terrain
|
||||||
local n=minetest.get_node_or_nil(minp)
|
local n=minetest.get_node_or_nil(minp)
|
||||||
if n and n.name == "mcl_villages:structblock" then return end
|
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
|
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"})
|
minetest.set_node(minp,{name="mcl_villages:structblock"})
|
||||||
|
|
||||||
local height_difference = settlements.evaluate_heightmap()
|
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}
|
villagegen[minetest.pos_to_string(minp)]={minp=vector.new(minp), maxp=vector.new(maxp), blockseed=blockseed}
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
|
@ -198,6 +198,14 @@ end
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
function settlements.evaluate_heightmap()
|
function settlements.evaluate_heightmap()
|
||||||
local heightmap = minetest.get_mapgen_object("heightmap")
|
local heightmap = minetest.get_mapgen_object("heightmap")
|
||||||
|
|
||||||
|
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
|
-- max height and min height, initialize with impossible values for easier first time setting
|
||||||
local max_y = -50000
|
local max_y = -50000
|
||||||
local min_y = 50000
|
local min_y = 50000
|
||||||
|
@ -205,16 +213,32 @@ function settlements.evaluate_heightmap()
|
||||||
local square_start = 1621
|
local square_start = 1621
|
||||||
local square_end = 1661
|
local square_end = 1661
|
||||||
for j = 1 , 40, 1 do
|
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
|
for i = square_start, square_end, 1 do
|
||||||
-- skip buggy heightmaps, return high value
|
--minetest.log("action", "current hm index: " .. tostring(i) .. "current hm entry: " .. tostring(heightmap[i]))
|
||||||
if heightmap[i] == -31000 or heightmap[i] == 31000 then
|
|
||||||
|
if i >= #heightmap then
|
||||||
|
--minetest.log("action", "Heightmap size reached. Go no further")
|
||||||
|
break
|
||||||
|
end
|
||||||
|
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
|
return max_height_difference + 1
|
||||||
end
|
end
|
||||||
if heightmap[i] < min_y then
|
if current_hm_entry < min_y then
|
||||||
min_y = heightmap[i]
|
min_y = current_hm_entry
|
||||||
end
|
end
|
||||||
if heightmap[i] > max_y then
|
if current_hm_entry > max_y then
|
||||||
max_y = heightmap[i]
|
max_y = current_hm_entry
|
||||||
|
end
|
||||||
|
else
|
||||||
|
--minetest.log("action", "Failed to get hm index: " .. tostring(i) .. "and ... " .. tostring(#heightmap))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
-- set next line
|
-- set next line
|
||||||
|
@ -223,10 +247,14 @@ function settlements.evaluate_heightmap()
|
||||||
end
|
end
|
||||||
-- return the difference between highest and lowest pos in chunk
|
-- return the difference between highest and lowest pos in chunk
|
||||||
local height_diff = max_y - min_y
|
local height_diff = max_y - min_y
|
||||||
|
|
||||||
|
--minetest.log("action", "height_diff = " .. tostring(height_diff))
|
||||||
|
|
||||||
-- filter buggy heightmaps
|
-- filter buggy heightmaps
|
||||||
if height_diff <= 1 then
|
if height_diff <= 1 then
|
||||||
return max_height_difference + 1
|
return max_height_difference + 1
|
||||||
end
|
end
|
||||||
|
--minetest.log("action", "return heigh diff = " .. tostring(height_diff))
|
||||||
-- debug info
|
-- debug info
|
||||||
settlements.debug("heightdiff ".. height_diff)
|
settlements.debug("heightdiff ".. height_diff)
|
||||||
return height_diff
|
return height_diff
|
||||||
|
|
Loading…
Reference in New Issue