From 8c2a1017c6f53660c1d7c129835cc583e3a3823e Mon Sep 17 00:00:00 2001 From: cora Date: Mon, 5 Sep 2022 12:23:23 +0200 Subject: [PATCH] Spawn clay as ore --- mods/MAPGEN/mcl_mapgen_core/ores.lua | 22 +++++++ .../mcl_mapgen_core/world_structure.lua | 63 ------------------- 2 files changed, 22 insertions(+), 63 deletions(-) diff --git a/mods/MAPGEN/mcl_mapgen_core/ores.lua b/mods/MAPGEN/mcl_mapgen_core/ores.lua index 9313477e0b..86ce20fbd5 100644 --- a/mods/MAPGEN/mcl_mapgen_core/ores.lua +++ b/mods/MAPGEN/mcl_mapgen_core/ores.lua @@ -10,6 +10,28 @@ local mountains = { "ExtremeHillsM", "ExtremeHillsM_ocean", "ExtremeHillsM_deep_ocean", "ExtremeHillsM_underground", } +--Clay +minetest.register_ore({ + ore_type = "blob", + ore = node, + wherein = {"mcl_core:sand","mcl_core:stone","mcl_core:gravel"}, + clust_scarcity = 15*15*15, + clust_num_ores = 33, + clust_size = 5, + y_min = -5, + y_max = 0, + noise_params = { + offset = 0, + scale = 1, + spread = {x=250, y=250, z=250}, + seed = 3245123, + octaves = 3, + persist = 0.6, + lacunarity = 2, + flags = "defaults", + } +}) + -- Diorite, andesite and granite local specialstones = { "mcl_core:diorite", "mcl_core:andesite", "mcl_core:granite" } for s=1, #specialstones do diff --git a/mods/MAPGEN/mcl_mapgen_core/world_structure.lua b/mods/MAPGEN/mcl_mapgen_core/world_structure.lua index 0c0ff21fd6..f50f625298 100644 --- a/mods/MAPGEN/mcl_mapgen_core/world_structure.lua +++ b/mods/MAPGEN/mcl_mapgen_core/world_structure.lua @@ -53,63 +53,6 @@ local function xz_to_biomemap_index(x, z, minp, maxp) return (minix + miniz * zwidth) + 1 end --- Perlin noise objects -local perlin_structures -local perlin_vines, perlin_vines_fine, perlin_vines_upwards, perlin_vines_length, perlin_vines_density -local perlin_clay - -local function generate_clay(minp, maxp, blockseed, voxelmanip_data, voxelmanip_area, lvm_used) - -- TODO: Make clay generation reproducible for same seed. - if maxp.y < -5 or minp.y > 0 then - return lvm_used - end - - local pr = PseudoRandom(blockseed) - - perlin_clay = perlin_clay or minetest.get_perlin({ - offset = 0.5, - scale = 0.2, - spread = {x = 5, y = 5, z = 5}, - seed = -316, - octaves = 1, - persist = 0.0 - }) - - for y=math.max(minp.y, 0), math.min(maxp.y, -8), -1 do - -- Assume X and Z lengths are equal - local divlen = 4 - local divs = (maxp.x-minp.x)/divlen+1; - for divx=0+1,divs-2 do - for divz=0+1,divs-2 do - -- Get position and shift it a bit randomly so the clay do not obviously appear in a grid - local cx = minp.x + math.floor((divx+0.5)*divlen) + pr:next(-1,1) - local cz = minp.z + math.floor((divz+0.5)*divlen) + pr:next(-1,1) - - local water_pos = voxelmanip_area:index(cx, y+1, cz) - local waternode = voxelmanip_data[water_pos] - local surface_pos = voxelmanip_area:index(cx, y, cz) - local surfacenode = voxelmanip_data[surface_pos] - - local genrnd = pr:next(1, 20) - if genrnd == 1 and perlin_clay:get_3d({x=cx,y=y,z=cz}) > 0 and waternode == c_water and - (surfacenode == c_dirt or minetest.get_item_group(minetest.get_name_from_content_id(surfacenode), "sand") == 1) then - local diamondsize = pr:next(1, 3) - for x1 = -diamondsize, diamondsize do - for z1 = -(diamondsize - math.abs(x1)), diamondsize - math.abs(x1) do - local ccpos = voxelmanip_area:index(cx+x1, y, cz+z1) - local claycandidate = voxelmanip_data[ccpos] - if voxelmanip_data[ccpos] == c_dirt or minetest.get_item_group(minetest.get_name_from_content_id(claycandidate), "sand") == 1 then - voxelmanip_data[ccpos] = c_clay - lvm_used = true - end - end - end - end - end - end - end - return lvm_used -end local function generate_end_exit_portal(pos) local obj = minetest.add_entity(vector.add(pos, vector.new(3, 11, 3)), "mobs_mc:enderdragon") @@ -239,12 +182,6 @@ local function basic(vm, data, data2, emin, emax, area, minp, maxp, blockseed) lvm_used = set_layers(data, area, c_lava, c_air, mcl_vars.mg_overworld_min, mcl_vars.mg_lava_overworld_max, minp, maxp, lvm_used, pr) lvm_used = set_layers(data, area, c_nether_lava, c_air, mcl_vars.mg_nether_min, mcl_vars.mg_lava_nether_max, minp, maxp, lvm_used, pr) end - - -- Clay, vines, cocoas - lvm_used = generate_clay(minp, maxp, blockseed, data, area, lvm_used) - biomemap = minetest.get_mapgen_object("biomemap") - - ----- Interactive block fixing section ----- ----- The section to perform basic block overrides of the core mapgen generated world. -----