summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthe lemons <citrons@mondecitronne.com>2022-02-15 22:35:12 -0600
committerthe lemons <citrons@mondecitronne.com>2022-02-15 22:35:12 -0600
commit2321f5ba6cd62f2f9cd838d5a4d16548f0e109d0 (patch)
tree2101b1d88d868b313493f9a1d90d0eaa08f61f9a
parent052ba6111d09d4c49c026811900ea92e5c504197 (diff)
add desert and plains biomes
-rw-r--r--mods/vzxv/nodes.lua4
-rw-r--r--mods/vzxv/tools.lua7
-rw-r--r--mods/vzxv_worldgen/biome.lua74
3 files changed, 71 insertions, 14 deletions
diff --git a/mods/vzxv/nodes.lua b/mods/vzxv/nodes.lua
index b342032..b10acd2 100644
--- a/mods/vzxv/nodes.lua
+++ b/mods/vzxv/nodes.lua
@@ -1,6 +1,6 @@
vzxv.mundane_block("vzxv:stone", "Stone", nil,
- { groups = { cracky = 2, stone = 1 } }
+ { groups = { cracky = 3, stone = 1 } }
)
vzxv.mundane_block("vzxv:cobblestone", "Cobblestone", nil,
@@ -34,7 +34,7 @@ vzxv.mundane_block("vzxv:sedimentary", "Stone",
"vzxvstone.png","vzxvsedimentary_bottom.png","vzxvsedimentary.png",
"vzxvsedimentary.png",
},
- { groups = { cracky = 1, stone = 1 } }
+ { groups = { cracky = 2, stone = 1 } }
)
minetest.register_craftitem("vzxv:stoneplate", {
diff --git a/mods/vzxv/tools.lua b/mods/vzxv/tools.lua
index 26307ec..020aa47 100644
--- a/mods/vzxv/tools.lua
+++ b/mods/vzxv/tools.lua
@@ -51,7 +51,7 @@ stonepick.groups.pick = 2
minetest.register_item("vzxv:stonepick",stonepick)
local metalpick = deepclone(base_tool)
-metalpick.tool_capabilities.groupcaps = {cracky = {times = {0.25,0.5,1,4}}}
+metalpick.tool_capabilities.groupcaps = {cracky = {times = {0.25,0.5,0.75,4}}}
metalpick.inventory_image = "vzxvmetalpick.png"
metalpick.description = "Metal pick"
metalpick.groups.pick = 3
@@ -67,7 +67,8 @@ minetest.register_item("vzxv:woodaxe",woodaxe)
local woodadze = deepclone(base_tool)
woodadze.tool_capabilities.groupcaps = {
- choppy = {times = {4,16}}, crumbly = {times ={1.5, 3}}
+ choppy = {times = {4,16}}, crumbly = {times ={1.5, 3}},
+ cracky = {times = {3,5,60}},
}
woodadze.inventory_image = "vzxvwoodadze.png"
woodadze.description = "Adze"
@@ -89,4 +90,4 @@ metalaxe.tool_capabilities.groupcaps = {choppy = {times = {0.25,0.5}}}
metalaxe.inventory_image = "vzxvmetalaxe.png"
metalaxe.description = "Metal axe"
metalaxe.groups.axe = 3
-minetest.register_item("vzxv:metalaxe",metalaxe) \ No newline at end of file
+minetest.register_item("vzxv:metalaxe",metalaxe)
diff --git a/mods/vzxv_worldgen/biome.lua b/mods/vzxv_worldgen/biome.lua
index 69f7533..fe573bf 100644
--- a/mods/vzxv_worldgen/biome.lua
+++ b/mods/vzxv_worldgen/biome.lua
@@ -13,15 +13,24 @@ end
local noise_params = {
elevation = {
- seed = 1,
- offset = -50,
- scale = 50,
- spread = {x=2500,y=2500,z=500},
+ seed = 0xA410,
+ offset = -175,
+ scale = 100,
+ spread = {x=3500,y=3500,z=500},
octaves = 5,
persistence = 0.8,
lacunarity = 2.0,
flags = "defaults, absvalue",
},
+ temperature = {
+ seed = 0xBEE,
+ offset = 30,
+ scale = 13,
+ spread = {x=5000,y=5000,z=500},
+ octaves = 3,
+ persistence = 0.3,
+ lacunarity = 0.5,
+ },
}
function vzxv.biome_generator:noisemap(mapname, pos)
@@ -55,11 +64,20 @@ function vzxv.biome_generator:noisemap_3d(mapname, pos)
return map[z][y][x]
end
-local water_level = 14
+local water_level = -45
+
+function vzxv.biome_generator:humidity(pos)
+ local height = self:noisemap("elevation", pos)
+ local temperature = self:noisemap("temperature", pos)
+ local humidity = 1 - math.min((height - water_level) / 86, 1)
+ humidity = humidity / (math.min(temperature / 25, 1))
+ return humidity
+end
+local bee = 0
function vzxv.biome_generator:get_biome(pos)
-- TODO: underground biomes
- if pos.y < -75 then
+ if pos.y < -175 then
return "underground"
-- TODO: sky biomes
elseif pos.y > 120 then
@@ -68,8 +86,19 @@ function vzxv.biome_generator:get_biome(pos)
if self:noisemap("elevation", pos) <= water_level + 2 then
return "sea"
else
- -- TODO: surface biomes
- return "surface"
+ local temp = self:noisemap("temperature", pos)
+ local humidity = self:humidity(pos)
+ bee = bee + 1
+ if bee % (16 * 16) == 0 then
+ print(temp, humidity)
+ end
+ if temp > 35 then
+ return "desert"
+ end
+ if humidity < 0.5 then
+ return "plains"
+ end
+ return "forest"
end
end
end
@@ -78,7 +107,7 @@ local id = minetest.get_content_id
local biomes = {}
-function biomes.surface(pos, gen)
+function biomes.forest(pos, gen)
local height = gen:noisemap("elevation", pos)
if pos.y > height then
return
@@ -106,6 +135,21 @@ function biomes.surface(pos, gen)
end
end
+function biomes.plains(pos, gen)
+ local height = gen:noisemap("elevation", pos)
+ if pos.y > height then
+ return
+ elseif pos.y == math.floor(height) then
+ return id "vzxv:grass"
+ elseif pos.y > height - 3 then
+ return id "vzxv:dirt"
+ elseif pos.y > height - 5 and math.random(2) == 1 then
+ return id "vzxv:dirt"
+ else
+ return id "vzxv:stone"
+ end
+end
+
function biomes.sea(pos, gen)
local height = gen:noisemap("elevation", pos)
if pos.y > height then
@@ -125,6 +169,18 @@ function biomes.sea(pos, gen)
end
end
+function biomes.desert(pos, gen)
+ local height = gen:noisemap("elevation", pos)
+ if pos.y > height then
+ return
+ elseif pos.y > height - 4 then
+ return id "vzxv:sand"
+ else
+ -- sandstone?
+ return id "vzxv:stone"
+ end
+end
+
function biomes.underground(pos)
return id "vzxv:stone"
end