From 63002f643feb412c0b37b958407bebf49752f1a1 Mon Sep 17 00:00:00 2001 From: cora Date: Thu, 24 Mar 2022 22:01:05 +0100 Subject: [PATCH] initial fixes to make multi map work with mcl --- modpack.conf | 4 +- multi_map_core/core.lua | 2 +- multi_map_core/mod.conf | 4 +- multi_map_generators/init.lua | 51 ++++++++++++++----------- multi_map_generators/mmgen_levels.lua | 41 ++++---------------- multi_map_generators/mmgen_mytest.lua | 49 ++++++++++++++++++++++++ multi_map_generators/mmgen_simple.lua | 2 +- multi_map_generators/mmgen_testauri.lua | 4 +- multi_map_generators/mod.conf | 2 +- 9 files changed, 93 insertions(+), 66 deletions(-) create mode 100644 multi_map_generators/mmgen_mytest.lua diff --git a/modpack.conf b/modpack.conf index c4c5a0f..79c3b97 100644 --- a/modpack.conf +++ b/modpack.conf @@ -1,2 +1,2 @@ -name = multi_map -description = Mulitple layers of map generation for Minetest \ No newline at end of file +name = mcl_multi_map +description = Mulitple layers of map generation for MineClone diff --git a/multi_map_core/core.lua b/multi_map_core/core.lua index cf2f31b..b6b9b03 100644 --- a/multi_map_core/core.lua +++ b/multi_map_core/core.lua @@ -259,7 +259,7 @@ multi_map.node = setmetatable({}, { -- Simple init, does a sanity check of the settings and sets the mapgen to singlenode minetest.register_on_mapgen_init(function(mapgen_params) - minetest.set_mapgen_params({mgname="singlenode", flags="nolight"}) + --minetest.set_mapgen_params({mgname="singlenode", flags="nolight"}) minetest.after(0, function() multi_map.layer_height = multi_map.layer_height_chunks * 80 multi_map.layers_start = multi_map.layers_start_chunk * 80 diff --git a/multi_map_core/mod.conf b/multi_map_core/mod.conf index 6436f94..f71b001 100644 --- a/multi_map_core/mod.conf +++ b/multi_map_core/mod.conf @@ -1,3 +1,3 @@ name = multi_map_core -description = multi_map core engine and API -depends = default +description = multi_map core engine and API for mineclone +depends = mcl_core diff --git a/multi_map_generators/init.lua b/multi_map_generators/init.lua index 504ce66..3f7bb94 100644 --- a/multi_map_generators/init.lua +++ b/multi_map_generators/init.lua @@ -1,36 +1,41 @@ local multi_map_generators_path = minetest.get_modpath("multi_map_generators") -multi_map.number_of_layers = 38 -multi_map.layers_start_chunk = 0 +multi_map.number_of_layers = 12 +multi_map.layers_start_chunk = 500 multi_map.layer_height_chunks = 20 ---multi_map.wrap_layers = true +multi_map.wrap_layers = true dofile(multi_map_generators_path.."/mmgen_levels.lua") --dofile(multi_map_generators_path.."/mmgen_lvm_example.lua") dofile(multi_map_generators_path.."/mmgen_simple.lua") dofile(multi_map_generators_path.."/mmgen_testauri.lua") +dofile(multi_map_generators_path.."/mmgen_mytest.lua") ---multi_map.register_fallback_generator("Default Simple", mmgen_simple.generate) ---multi_map.register_generator(9, mmgen_simple.generate, "default:sandstone") ---multi_map.set_layer_name(9, "Desert") ---multi_map.register_generator(10, mmgen_levels.generate) ---multi_map.register_generator(11, mmgen_testauri.generate) ---multi_map.register_generator(12, mmgen_testauri.generate) ---multi_map.register_generator(13, mmgen_levels.generate) +multi_map.register_fallback_generator("Default Simple", mmgen_simple.generate) -multi_map.register_fallback_generator(mmgen_simple.generate) +multi_map.register_generator(0, mmgen_testauri.generate ) +multi_map.register_generator(1, mmgen_mytest.generate, {stone="mcl_core:stone",dirt="mcl_core:dirt",grass="mcl_core:dirt_with_grass",water="mcl_core:water_source",air="air"}) +multi_map.register_generator(2, mmgen_simple.generate, {nodetype="mcl_core:dirt"}) +multi_map.register_generator(3, mmgen_simple.generate, {nodetype="mcl_core:obsidian"}) +multi_map.register_generator(4, mmgen_levels.generate) ---multi_map.register_generator(18, mmgen_testauri.generate) ---multi_map.register_generator(19, mmgen_testauri.generate) ---multi_map.register_generator(20, mmgen_testauri.generate) +multi_map.set_layer_params(0, { name = "testauri" }) +multi_map.set_layer_params(1, { name = "testmg"}) +multi_map.set_layer_params(2, { name = "Dirt Layer" }) +multi_map.set_layer_params(3, { name = "Obby Layer" }) +multi_map.set_layer_params(4, { name = "Levels" }) ---multi_map.register_linked_layer(19, multi_map.world_edge.POSITIVE_X, 19, true) ---multi_map.register_linked_layer(19, multi_map.world_edge.POSITIVE_Z, 19, true) -multi_map.register_fallback_generator("Default Levels", mmgen_levels.generate) -multi_map.register_generator(18, mmgen_levels.generate) -multi_map.register_generator(19, mmgen_testauri.generate) -multi_map.register_generator(20, mmgen_levels.generate) -multi_map.set_layer_params(18, { name = "Lowlands Layer" }) -multi_map.set_layer_params(19, { name = "Central Layer" }) -multi_map.set_layer_params(20, { name = "Remote Levels Land" }) +for i=0,multi_map.number_of_layers-1 do + multi_map.register_linked_layer(i, multi_map.world_edge.POSITIVE_X, i+1,true) + multi_map.register_linked_layer(i, multi_map.world_edge.NEGATIVE_X, i-1,true) +end + +minetest.register_chatcommand("mmtp",{privs={debug=true},func=function(name,param) + local ch = 80 + local p=minetest.get_player_by_name(name) + local lp=p:get_pos() + local ty = ( multi_map.layers_start_chunk * ch ) + (tonumber(param) * multi_map.layer_height_chunks * ch) - 30912 + (10 * ch) + p:set_pos(vector.new(lp.x,ty,lp.z)) + return true, "tped to layer "..param +end}) diff --git a/multi_map_generators/mmgen_levels.lua b/multi_map_generators/mmgen_levels.lua index 8b9c0f7..d9e3e9a 100644 --- a/multi_map_generators/mmgen_levels.lua +++ b/multi_map_generators/mmgen_levels.lua @@ -58,33 +58,6 @@ multi_map.register_global_2dmap( } ) --- Nodes - -minetest.register_node("multi_map_generators:grass", { - description = "Grass", - tiles = {"default_grass.png", "default_dirt.png", "default_grass.png"}, - groups = {crumbly=3}, - sounds = default.node_sound_dirt_defaults({ - footstep = {name="default_grass_footstep", gain=0.25}, - }), -}) - -minetest.register_node("multi_map_generators:dirt", { - description = "Dirt", - tiles = {"default_dirt.png"}, - groups = {crumbly=3}, - sounds = default.node_sound_dirt_defaults(), -}) - -minetest.register_node("multi_map_generators:luxore", { - description = "Lux Ore", - tiles = {"levels_luxore.png"}, - paramtype = "light", - light_source = 14, - groups = {cracky=3}, - sounds = default.node_sound_glass_defaults(), -}) - -- Stuff local floatper = math.pi / FLOATPER @@ -104,14 +77,14 @@ function mmgen_levels.generate(current_layer, vm, area, data, minp, maxp, offset local oy1 = offset_maxp.y local oy0 = offset_minp.y - local c_stone = minetest.get_content_id("default:stone") - local c_sand = minetest.get_content_id("default:sand") - local c_water = minetest.get_content_id("default:water_source") - local c_lava = minetest.get_content_id("default:lava_source") + local c_stone = minetest.get_content_id("mcl_core:stone") + local c_sand = minetest.get_content_id("mcl_core:sand") + local c_water = minetest.get_content_id("mcl_core:water_source") + local c_lava = minetest.get_content_id("mcl_core:lava_source") - local c_grass = minetest.get_content_id("multi_map_generators:grass") - local c_dirt = minetest.get_content_id("multi_map_generators:dirt") - local c_luxore = minetest.get_content_id("multi_map_generators:luxore") + local c_grass = minetest.get_content_id("mcl_core:dirt_with_grass") + local c_dirt = minetest.get_content_id("mcl_core:dirt") + local c_luxore = minetest.get_content_id("mcl_core:stone_with_diamond") local sidelen = x1 - x0 + 1 local ystride = sidelen + 32 diff --git a/multi_map_generators/mmgen_mytest.lua b/multi_map_generators/mmgen_mytest.lua new file mode 100644 index 0000000..e830fd3 --- /dev/null +++ b/multi_map_generators/mmgen_mytest.lua @@ -0,0 +1,49 @@ +--minetest.register_on_mapgen_init(function(mgparams) +-- minetest.set_mapgen_params({mgname="singlenode", flags="nolight", flagmask="nolight"}) +--end) +mmgen_mytest = {} +--multi_map.register_global_3dmap( +-- "terrain", +-- {offset=0, scale=1, spread={x=200, y=125, z=200}, seed=1235, octaves=5, persist=0.6} +--) + +function mmgen_mytest.generate(current_layer, vm, a, data, minp, maxp, offset_minp, offset_maxp,arg,seed) + local t1 = os.clock() + + local c_dirt = minetest.get_content_id("mcl_core:dirt") + local c_stone = minetest.get_content_id("mcl_core:stone") + local c_grass = minetest.get_content_id("mcl_core:dirt_with_grass") + local c_water = minetest.get_content_id("mcl_core:water_source") + local c_air = minetest.get_content_id("air") + + if arg.stone then c_stone = minetest.get_content_id(arg.stone) end + if arg.dirt then c_dirt = minetest.get_content_id(arg.dirt) end + if arg.water then c_water = minetest.get_content_id(arg.water) end + if arg.grass then c_grass = minetest.get_content_id(arg.grass) end + if arg.air then c_air = minetest.get_content_id(arg.air) end + + local sidelen = maxp.x - minp.x + 1 + + local nvals=multi_map.get_global_3dmap_flat("terrain", {x=sidelen, y=sidelen, z=sidelen}, {x=minp.x, y=minp.y, z=minp.z}) + + local ni = 1 + for z = minp.z, maxp.z do + for y = minp.y, maxp.y do + for x = minp.x, maxp.x do + local yy=multi_map.get_offset_y(y) + if nvals[ni] - (yy - 25) / 55 > 0.5 then + local vi = a:index(x, y, z) + if yy < 1 then + data[vi] = c_stone + else + data[vi] = c_grass + end + elseif yy < 1 then + local vi = a:index(x, y, z) + data[vi] = c_water + end + ni = ni + 1 + end + end + end +end diff --git a/multi_map_generators/mmgen_simple.lua b/multi_map_generators/mmgen_simple.lua index 0f46ee6..a649089 100644 --- a/multi_map_generators/mmgen_simple.lua +++ b/multi_map_generators/mmgen_simple.lua @@ -2,7 +2,7 @@ mmgen_simple = {} function mmgen_simple.generate(current_layer, vm, area, vm_data, minp, maxp, offset_minp, offset_maxp, params) - local nodetype = "default:stone" + local nodetype = "mcl_core:stone" local height = 0 if params and type(params) == "table" then diff --git a/multi_map_generators/mmgen_testauri.lua b/multi_map_generators/mmgen_testauri.lua index 943c6e6..33b0b7f 100644 --- a/multi_map_generators/mmgen_testauri.lua +++ b/multi_map_generators/mmgen_testauri.lua @@ -138,9 +138,9 @@ function mmgen_testauri.generate(current_layer, vm, area, vm_data, minp, maxp, o end if oy <= height then - vm_data[vi] = multi_map.node["default:stone"] + vm_data[vi] = multi_map.node["mcl_core:stone"] elseif oy <= mmgen_testauri.water_height then - vm_data[vi] = multi_map.node["default:water_source"] + vm_data[vi] = multi_map.node["mcl_core:water_source"] end -- Increment noise index. diff --git a/multi_map_generators/mod.conf b/multi_map_generators/mod.conf index 37d83aa..65473b8 100644 --- a/multi_map_generators/mod.conf +++ b/multi_map_generators/mod.conf @@ -1,3 +1,3 @@ name = multi_map_generators description = example mapgens for multi_map -depends = default, multi_map_core +depends = mcl_core, multi_map_core