From 1027300bcc61053bd9cc3085aa9f0f83cbe0dd8c Mon Sep 17 00:00:00 2001 From: Xeno333 Date: Thu, 8 Aug 2024 16:38:08 -0500 Subject: [PATCH] major mapgen update --- src/enderite/ore.lua | 5 ++- src/mapgen/biome.lua | 81 +++++++++++++++++++++++++++----------------- 2 files changed, 54 insertions(+), 32 deletions(-) diff --git a/src/enderite/ore.lua b/src/enderite/ore.lua index e4e4748..e7a0d00 100644 --- a/src/enderite/ore.lua +++ b/src/enderite/ore.lua @@ -1,4 +1,4 @@ - +local YMAX = -269720 minetest.register_node("mcl_better_end:enderite_ore", { description = "Ore of Enderite", @@ -19,6 +19,9 @@ minetest.register_node("mcl_better_end:enderite_ore", { mcl_better_end.mapgen.registered_nodes.enderite_ore = minetest.get_content_id("mcl_better_end:enderite_ore") mcl_better_end.mapgen.ores.enderite = function(data, vi, area, pr, x, y, z) + if y > YMAX then + return + end --enderite if pr:next(1, 1000) == 5 then if pr:next(1, 10) == 5 then diff --git a/src/mapgen/biome.lua b/src/mapgen/biome.lua index e689a3b..02b2689 100644 --- a/src/mapgen/biome.lua +++ b/src/mapgen/biome.lua @@ -1,25 +1,20 @@ -local YMAX = -26990--mcl_vars.mg_end_max -local YMIN = -27010--mcl_vars.mg_end_min +local YMAX = -26900--mcl_vars.mg_end_max +local YMIN = -27050--mcl_vars.mg_end_min local biome_size = 200 ---Needed for context for some reason -local perlin -minetest.register_on_joinplayer( - function() - perlin = minetest.get_perlin({ - offset = 0, - scale = 1, - spread = {x = biome_size, y = 1, z = biome_size}, - seed = minetest.get_mapgen_setting("seed"), - octaves = 3, - persist = 0.5 - }) - end -) +--remove old mapgen +mcl_mapgen_core.unregister_generator("end_island") +--needed for light +--mcl_mapgen_core.unregister_generator("end_fixes") + + + +--api + mcl_better_end.mapgen.registered_nodes = { air = minetest.get_content_id("air"), end_stone = minetest.get_content_id("mcl_end:end_stone"), @@ -33,8 +28,35 @@ end ---Gen +--Needed for context for some reason +local perlin +local perlin_l + +minetest.register_on_joinplayer( + function() + perlin = minetest.get_perlin({ + offset = 0, + scale = 1, + spread = {x = biome_size, y = biome_size/2, z = biome_size}, + seed = minetest.get_mapgen_setting("seed"), + octaves = 3, + persist = 0.5 + }) + perlin_l = minetest.get_perlin({ + offset = 0, + scale = 1, + spread = {x = 50, y = 20, z = 50}, + seed = minetest.get_mapgen_setting("seed"), + octaves = 3, + persist = 0.5 + }) + end +) + + + +--Gen function mcl_better_end.mapgen.gen(minp, maxp, seed) -- Check if the current Y range is within the desired bounds @@ -49,34 +71,31 @@ function mcl_better_end.mapgen.gen(minp, maxp, seed) local pr = PseudoRandom((seed + minp.x + maxp.z) / 3) -- Loop through the area and set nodes - for y = math.max(minp.y, YMIN), math.min(maxp.y, YMAX) do + for y = minp.y, maxp.y do for z = minp.z, maxp.z do for x = minp.x, maxp.x do --do tuff local vi = area:index(x, y, z) - if data[vi] == mcl_better_end.mapgen.registered_nodes.air then - if minetest.get_node({x = x, y = y-1, z = z}).name == "mcl_end:end_stone" then + + local noise_center_l = perlin_l:get_3d({x = x, y = y, z = z}) + if noise_center_l > 0.5 then + data[vi] = mcl_better_end.mapgen.registered_nodes.end_stone + for _, f in pairs(mcl_better_end.mapgen.ores) do + f(data, vi, area, pr, x, y, z) + end + else + if data[area:index(x, y-1, z)] == mcl_better_end.mapgen.registered_nodes.end_stone then --biome - local noise_center = perlin:get_3d({x = x, y = 1, z = z}) + local noise_center = perlin:get_3d({x = x, y = y, z = z}) --do biomes for _, p in pairs(mcl_better_end.biomes) do if (noise_center <= p.noise_high) and (noise_center >= p.noise_low) then p.gen(data, vi, area, pr, x, y, z) - t = true end end end - - --ores - elseif y < -27000 then - if data[vi] == mcl_better_end.mapgen.registered_nodes.end_stone then - for _, f in pairs(mcl_better_end.mapgen.ores) do - f(data, vi, area, pr, x, y, z) - end - end end - end end end