Custom map coordinates

This commit is contained in:
2026-07-02 12:18:09 -04:00
parent fc4671e3eb
commit ca4c637890
3 changed files with 309 additions and 291 deletions
+2
View File
@@ -0,0 +1,2 @@
Fork of Mistere's Adventure Map Island Creator adding the ability to specify
coordinates for the island center.
+39 -23
View File
@@ -1,7 +1,5 @@
-- forces the map into singlenode mode, don't do this if this is just a "realm".
luamap.set_singlenode()
-- creates a terrain noise -- creates a terrain noise
luamap.register_noise("terrain",{ luamap.register_noise("adventure_map_terrain",{
type = "3d", type = "3d",
np_vals = { np_vals = {
offset = 0, offset = 0,
@@ -15,7 +13,7 @@ luamap.register_noise("terrain",{
}, },
}) })
luamap.register_noise("mountains",{ luamap.register_noise("adventure_map_mountains",{
type = "2d", type = "2d",
np_vals = { np_vals = {
offset = 0, offset = 0,
@@ -30,7 +28,7 @@ luamap.register_noise("mountains",{
}) })
luamap.register_noise("dunes",{ luamap.register_noise("adventure_map_dunes",{
type = "2d", type = "2d",
np_vals = { np_vals = {
offset = 0, offset = 0,
@@ -45,7 +43,7 @@ luamap.register_noise("dunes",{
}) })
luamap.register_noise("hills",{ luamap.register_noise("adventure_map_hills",{
type = "2d", type = "2d",
np_vals = { np_vals = {
offset = 0, offset = 0,
@@ -60,7 +58,7 @@ luamap.register_noise("hills",{
}) })
luamap.register_noise("canyons",{ luamap.register_noise("adventure_map_canyons",{
type = "3d", type = "3d",
np_vals = { np_vals = {
offset = 0, offset = 0,
@@ -75,7 +73,7 @@ luamap.register_noise("canyons",{
}) })
luamap.register_noise("canyon_top",{ luamap.register_noise("adventure_map_canyon_top",{
type = "2d", type = "2d",
np_vals = { np_vals = {
offset = 0, offset = 0,
@@ -108,6 +106,14 @@ local desert_sandstone = cid("default:desert_sandstone")
local dirt_with_snow = cid("default:dirt_with_snow") local dirt_with_snow = cid("default:dirt_with_snow")
local dirt_with_coniferous_litter = cid("default:dirt_with_coniferous_litter") local dirt_with_coniferous_litter = cid("default:dirt_with_coniferous_litter")
local island_center = {x = 0, y = 0, z = 0}
local function get_island_bounds()
local minp = vector.new(island_center.x - 500, island_center.y - 30, island_center.z - 500)
local maxp = vector.new(island_center.x + 500, island_center.y + 50, island_center.z + 500)
return minp, maxp
end
local old_logic = luamap.logic local old_logic = luamap.logic
@@ -115,18 +121,21 @@ function luamap.logic(noise_vals,x,y,z,seed,original_content)
-- get any terrain defined in another mod -- get any terrain defined in another mod
local content = old_logic(noise_vals,x,y,z,seed,original_content) local content = old_logic(noise_vals,x,y,z,seed,original_content)
x = x - island_center.x
y = y - island_center.y
z = z - island_center.z
local o_y = y -- original y before modification local o_y = y -- original y before modification
local r = 500 local r = 500
local biomeoffset = 250 local biomeoffset = 250
local e = 2.71828 local e = 2.71828
local lake_water_level = 37 local lake_water_level = 37
local mountains = noise_vals.mountains local mountains = noise_vals.adventure_map_mountains
local desertdunes = noise_vals.dunes local desertdunes = noise_vals.adventure_map_dunes
local hills = noise_vals.hills local hills = noise_vals.adventure_map_hills
local canyons = noise_vals.canyons local canyons = noise_vals.adventure_map_canyons
local canyon_top = noise_vals.canyon_top local canyon_top = noise_vals.adventure_map_canyon_top
local biome_depth = math.abs(noise_vals.terrain*6) + 1 local biome_depth = math.abs(noise_vals.adventure_map_terrain*6) + 1
local mtnareaspread = 100 local mtnareaspread = 100
local dsrtareaspread = 140 local dsrtareaspread = 140
local lkareaspread = 110 local lkareaspread = 110
@@ -166,7 +175,7 @@ function luamap.logic(noise_vals,x,y,z,seed,original_content)
-- mix in the hills -- mix in the hills
y=y-hills_mix*hills*20 y=y-hills_mix*hills*20
-- mix in the small detail terrain but not in the desert -- mix in the small detail terrain but not in the desert
y=y-noise_vals.terrain*not_desert*5 y=y-noise_vals.adventure_map_terrain*not_desert*5
local biome = "grass" local biome = "grass"
@@ -273,17 +282,24 @@ function luamap.logic(noise_vals,x,y,z,seed,original_content)
return content return content
end end
minetest.register_on_joinplayer(function(player)
minetest.chat_send_player(player:get_player_name(),"MisterE's Adventure Map Creator mod is overriding mapgen. Use /emerge_map to load the entire map (it will take a while)")
end)
minetest.register_chatcommand("emerge_map", { minetest.register_chatcommand("emerge_map", {
description = "Emerge the entire adventure map island", params = "<x> <y> <z>",
description = "Set adventure map center and emerge it at those coordinates",
privs = {server=true}, privs = {server=true},
func = function(name, param) func = function(name, param)
local minp = vector.new(-500,-30,-500) local sx, sy, sz = param:match("^%s*([%-]?%d+)%s+([%-]?%d+)%s+([%-]?%d+)%s*$")
local maxp = vector.new(500, 50, 500) if not sx then
return false, "Usage: /adventure_map x y z"
end
island_center.x = tonumber(sx)
island_center.y = tonumber(sy)
island_center.z = tonumber(sz)
local minp, maxp = get_island_bounds()
minetest.emerge_area(minp, maxp) minetest.emerge_area(minp, maxp)
minetest.chat_send_player(name, "MisterE's Adventure map is emerging! Have fun creating! Try using worldedit additions with bonemeal mods to create forests, and the terraform mod to edit the landscape.")
minetest.chat_send_player(name, "Adventure map center set to (" .. island_center.x .. ", " .. island_center.y .. ", " .. island_center.z .. "). Emerging map now...")
return true, "Adventure map placement started."
end end
}) })
+1 -1
View File
@@ -1,2 +1,2 @@
name = mistere_adventure_map_island_creator name = placeable_adventure_map_island_creator
depends = luamap, default depends = luamap, default