MineClone5/mods/MAPGEN/mcl_ocean_monument/init.lua

37 lines
1.3 KiB
Lua
Raw Normal View History

2021-05-03 03:24:53 +02:00
local mcl_mapgen_get_far_node = mcl_mapgen.get_far_node
local minetest_log = minetest.log
local minetest_place_schematic = minetest.place_schematic
local minetest_pos_to_string = minetest.pos_to_string
local path = minetest.get_modpath("mcl_ocean_monument") .. "/schematics/ocean_monument.mts"
local water, air = "mcl_core:water_source", "air"
mcl_mapgen.register_chunk_generator(function(minp, maxp, seed)
local minp = minp
local y = minp.y
if y ~= -32 then return end
local x, z = minp.x, minp.z
local pr = PseudoRandom(seed)
for i = 1, pr:next(10,100) do
if mcl_mapgen_get_far_node({x=pr:next(0,79)+x, y=1, z=pr:next(0,79)+z}).name ~= water then return end
end
for i = 1, pr:next(10,100) do
if mcl_mapgen_get_far_node({x=pr:next(0,79)+x, y=2, z=pr:next(0,79)+z}).name ~= air then return end
end
for i = 1, pr:next(10,100) do
if mcl_mapgen_get_far_node({x=pr:next(15,64)+x, y=pr:next(0,25)-25, z=pr:next(15,64)+z}).name ~= water then
-- minetest_log("warning", "[mcl_ocean_monument] Not water at " .. minetest_pos_to_string(minp))
return
end
end
-- minetest_place_schematic(minp, path, tostring(pr:next(0,3)*90), nil, true)
minetest_place_schematic(minp, path, 0, nil, true)
minetest_log("action", "[mcl_ocean_monument] Placed at " .. minetest_pos_to_string(minp))
---- TODO: SET UP SPECIAL NODES...
end, mcl_mapgen.priorities.OCEAN_MONUMENT)