1318 lines
42 KiB
Lua
1318 lines
42 KiB
Lua
local moreores = minetest.get_modpath("moreores")
|
|
local nethermod = minetest.get_modpath("nether")
|
|
local is_50 = minetest.has_feature("object_use_texture_alpha")
|
|
|
|
nssb.mymapgenis = tonumber(minetest.settings:get("mymapgenis")) or 7
|
|
|
|
if nssb.mymapgenis ~= 6 and nssb.mymapgenis ~= 7 then
|
|
nssb.mymapgenis = 7
|
|
end
|
|
|
|
-- mapgen limits check from minetest
|
|
local mapgen_limit = tonumber(minetest.settings:get("mapgen_limit")) or 31000
|
|
|
|
-- get generation level from settings
|
|
local level = tonumber(minetest.settings:get("nssb.morlendor_level")) or -30000
|
|
|
|
-- schematics generation
|
|
|
|
local posplace = {x = 0, y = level - 93, z = 0}
|
|
local posmemory = {x = 0, y = level - 92, z = 0}
|
|
local postest = {x = 5, y = level - 91, z = 6}
|
|
|
|
-- ore type generation depending on minetest version
|
|
local oretype_morlan_layer = is_50 and "stratum" or "scatter"
|
|
|
|
-- mapgen limit must be at least enought before any check
|
|
|
|
if mapgen_limit < 400 then
|
|
error("[nssb] the map limit is too low, there's no space for morlendor")
|
|
end
|
|
|
|
-- morlendor must be inside the limits, but not almost the limit of the world,
|
|
-- and must be almost 320 levels
|
|
level_amount_and_limit = math.abs(mapgen_limit) - math.abs(level)
|
|
|
|
while level_amount_and_limit <= 320 do
|
|
|
|
level = (math.abs(level) - math.abs(level_amount_and_limit) - 1) * -1
|
|
level_amount_and_limit = math.abs(mapgen_limit) - math.abs(level)
|
|
|
|
minetest.log("error", "[nssb] incompatible morlendor level, autosetting: " .. level)
|
|
end
|
|
|
|
-- detection of nether deep floor, mordenlor must be below more than player things,
|
|
-- cos has industructible layer
|
|
if nethermod then
|
|
|
|
local nether_df = math.abs(tonumber(minetest.settings:get("nether_depth_ymax")) or -11000)
|
|
|
|
if ( math.abs(nether_df) >= math.abs(level) + 1000 ) then
|
|
error("[nssb] morlendor level conflicts with nether, unable to fix, check your settings")
|
|
end
|
|
end
|
|
|
|
function nssb_register_buildings(
|
|
build, -- name of the schematic
|
|
rand, -- 1/rand is the probability of the spawning of the schematic if the place found is acceptable
|
|
posschem, -- the block on which the schematic need to be to spawn
|
|
down, -- useful in finding flat surfaces, down indetify the x and z coordinates of a block 1 under posschem
|
|
downblock, -- the block that is necessary to find in down to place the schematic
|
|
above, -- when you need to place the schem under something (water, air, jungleleaves...) above is the number of blocks above posschem
|
|
aboveblock, -- the name of this block above above-times posschem
|
|
radius, -- the radius in which the function search for the "near" block
|
|
near, -- the block that is necessary to spawn the schem in the radius
|
|
side, -- the mesure of the side of the schematic, it is necessary to put the dirt under it
|
|
underground, -- if true the schematic need to spawn underground
|
|
height, -- under this heigh the schematic can spawn. If nil the schematic can spawn everywhere underground
|
|
ice, -- if true fill the space under the schem with ice and not with dirt as standard
|
|
exact_height, -- exact_height=exact_eight under the surface in the correct place
|
|
portal) -- is this schematic a portal for the morlendor?
|
|
|
|
minetest.register_on_generated(function(minp, maxp, seed)
|
|
|
|
if underground == false then
|
|
|
|
local i, j, k
|
|
local flag = 0
|
|
local posd
|
|
|
|
i = math.random(minp.x, maxp.x)
|
|
k = math.random(minp.z, maxp.z)
|
|
|
|
for j = minp.y, maxp.y do
|
|
|
|
local pos1 = {x = i, y = j, z = k}
|
|
local pos2 = {x = i + down, y = j - 1, z = k + down}
|
|
local pos3 = {x = i, y = j + above, z = k}
|
|
local n = minetest.get_node(pos1).name
|
|
local u = minetest.get_node(pos2).name
|
|
local d = minetest.get_node(pos3).name
|
|
|
|
if downblock == nil then
|
|
u = downblock
|
|
end
|
|
|
|
if aboveblock == nil then
|
|
d = aboveblock
|
|
end
|
|
|
|
if n == posschem and u == downblock and d == aboveblock and flag == 0
|
|
and math.random(1, rand) == 1 then
|
|
|
|
if minetest.find_node_near(pos3, radius, near) then
|
|
|
|
minetest.place_schematic(pos1, minetest.get_modpath("nssb")
|
|
.. "/schems/" .. build .. ".mts", "0", {}, true)
|
|
|
|
-- minetest.chat_send_all("Added schematic in "..(minetest.pos_to_string(pos1)))
|
|
|
|
posd = pos1
|
|
flag = 1
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Puts dirt/ice under the schematic to fill the space under it
|
|
if flag == 1 and side > 0 then
|
|
|
|
for dx = 0, side do
|
|
|
|
for dz = 0, side do
|
|
|
|
local dy = posd.y - 1
|
|
local f = {x = posd.x + dx, y = dy, z = posd.z + dz}
|
|
local fg = minetest.get_node(f).name
|
|
|
|
if ice == false then
|
|
|
|
while fg == "air" do
|
|
|
|
--minetest.set_node(f, {name = "default:dirt"})
|
|
minetest.swap_node(f, {name = "default:dirt"})
|
|
|
|
f.y = f.y - 1
|
|
|
|
fg = minetest.get_node(f).name
|
|
end
|
|
else
|
|
while fg == "air" do
|
|
|
|
--minetest.set_node(f, {name = "default:ice"})
|
|
minetest.swap_node(f, {name = "default:ice"})
|
|
|
|
f.y = f.y - 1
|
|
|
|
fg = minetest.get_node(f).name
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
if portal == true then
|
|
|
|
--[[
|
|
-- this is a portal for the morlendor
|
|
if already_spawned == 0 then
|
|
|
|
--already_spawned = 1
|
|
|
|
local name = minetest.get_node(posplace).name
|
|
|
|
minetest.chat_send_all("Non ancora creato. Nome: "..name)
|
|
|
|
if name == "ignore" then
|
|
|
|
local pmin, pmax = minetest.get_voxel_manip():read_from_map(
|
|
vector.subtract(posplace, 80), vector.add(posplace, 80))
|
|
|
|
name = minetest.get_node(posplace).name
|
|
|
|
minetest.chat_send_all("name dopo read_from_map:.."..name)
|
|
|
|
if name == "ignore" then
|
|
|
|
minetest.emerge_area(vector.subtract(posplace, 80),
|
|
vector.add(posplace, 80))
|
|
|
|
name = minetest.get_node(posplace).name
|
|
|
|
minetest.chat_send_all("name dopo emerge_area:.."..name)
|
|
end
|
|
|
|
minetest.after(25, function(posplace)
|
|
|
|
name = minetest.get_node(posplace).name
|
|
|
|
minetest.chat_send_all("name prima di place_schematic:.."..name)
|
|
|
|
minetest.place_schematic(posplace,
|
|
minetest.get_modpath("nssb")
|
|
.. "/schems/memoportal.mts", "0", {}, true)
|
|
|
|
-- minetest.place_schematic(posplace,
|
|
minetest.get_modpath("nssb")
|
|
.. "/schems/memoportal.mts", "0", {}, true)
|
|
|
|
--minetest.chat_send_all("3")
|
|
|
|
name = minetest.get_node(posplace).name
|
|
|
|
minetest.chat_send_all("name dopo place_schematic:.."..name)
|
|
|
|
end, posplace)
|
|
end
|
|
|
|
minetest.place_schematic(posplace, minetest.get_modpath("nssb")
|
|
.. "/schems/memoportal.mts", "0", {}, true)
|
|
end
|
|
|
|
]]--
|
|
end
|
|
|
|
else --underground == true
|
|
|
|
if minp.y < 0 then
|
|
|
|
-- minetest.chat_send_all("Posmin: " .. (minetest.pos_to_string(minp)).." Posmax: " .. (minetest.pos_to_string(maxp)))
|
|
|
|
local i, jj, k, j
|
|
local flag = 0
|
|
|
|
i = math.random(minp.x, maxp.x)
|
|
k = math.random(minp.z, maxp.z)
|
|
jj = math.random(minp.y, maxp.y)
|
|
|
|
if height ~= nil then
|
|
|
|
if height > maxp.y then
|
|
j = jj
|
|
elseif height > minp.y and height < maxp.y then
|
|
j = math.random(minp.y, height)
|
|
else
|
|
return
|
|
end
|
|
else
|
|
if jj > 0 then
|
|
j = math.random(minp.y, 0)
|
|
end
|
|
end
|
|
|
|
local pos1 = {x = i, y = j, z = k}
|
|
local n = minetest.get_node(pos1).name
|
|
|
|
if minetest.find_node_near(pos1, radius, "default:lava_source")
|
|
or flag == 1 then
|
|
return
|
|
else
|
|
if n == posschem and math.random(1, rand) == 1 then
|
|
|
|
minetest.place_schematic(pos1, minetest.get_modpath("nssb")
|
|
.. "/schems/" .. build .. ".mts", "0", {}, true)
|
|
|
|
flag = 1
|
|
|
|
-- minetest.chat_send_all("Added schematic in "..(minetest.pos_to_string(pos1)))
|
|
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end)
|
|
end
|
|
|
|
|
|
if nssb.mymapgenis == 6 then
|
|
|
|
nssb_register_buildings ("spiaggiagranchius", 2, "default:sand", 3, "default:sand", 2, "air", 3, "air", 0, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("acquagranchius", 3, "default:sand", 3, "default:sand", 12,"default:water_source", 3, "default:water_source", 0, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("ooteca", 6, "default:dirt_with_grass", 3, "default:dirt", 2, "air", 24, "default:tree", 8, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("minuscolaooteca", 6, "default:dirt_with_grass",3 , "default:dirt", 2, "air", 24, "default:tree", 2, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("piccolaooteca", 6, "default:dirt_with_grass", 2, "default:dirt", 2, "air", 24, "default:tree", 4, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("arcate", 8, "default:sand", 3, "default:sand", 13, "default:water_source", 3, "default:water_source",0, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("grandepiramide", 8, "default:dirt", 3, "default:dirt", 20, "default:water_source", 3, "default:water_source", 0, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("collina", 5, "default:dirt_with_grass", 3, "default:dirt", 2, "air", 3, "air", 12, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("megaformicaio", 7, "default:dirt_with_grass", 4, "default:dirt", 2, "air", 3, "air", 25, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("antqueenhill", 8, "default:dirt_with_grass", 4, "default:dirt", 2, "air", 3, "air", 21, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("rovine1", 4, "default:dirt_with_grass", 3, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false, false)
|
|
|
|
-- nssb_register_buildings ("rovine2", 1, "default:stone", 0, "air", 0, "air", 24, "default:jungletree", 5, true, -8, false, false)
|
|
|
|
nssb_register_buildings ("rovine3", 4, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("rovine4", 4, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("rovine5", 4, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("rovine6", 4, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("rovine7", 4, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("rovine8", 4, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("rovine9", 4, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("rovine10", 4, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("bozzoli", 4, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("picco", 12, "default:desert_sand", 1, "default:desert_stone", 1, "air", 3, "default:desert_sand", 10, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("piccoghiaccio", 12, "default:dirt_with_snow", 1, "default:dirt", 1, "air", 3, "default:dirt_with_snow", 10, false, nil, true, false, false)
|
|
|
|
nssb_register_buildings ("icehall", 8, "default:dirt_with_snow", 1, "default:dirt", 1, "air", 3, "default:dirt_with_snow", 30, false, nil, true, false, false)
|
|
|
|
nssb_register_buildings ("piccomoonheron", 8, "default:dirt_with_snow", 1, "default:dirt", 1, "air", 3, "default:dirt_with_snow", 3, false, nil, true, false, false)
|
|
|
|
nssb_register_buildings ("doppiopiccoghiaccio", 11, "default:dirt_with_snow", 1, "default:dirt", 1, "air", 3, "default:dirt_with_snow", 7, false, nil, true, false, false)
|
|
|
|
nssb_register_buildings ("doppiopiccosabbia", 11, "default:desert_sand", 1, "default:desert_stone", 1, "air", 3, "default:desert_sand", 7, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("piccoscrausics", 8, "default:desert_sand", 1, "default:desert_stone", 1, "air", 3, "default:desert_sand", 3, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("fossasand", 20, "default:desert_sand", 1, "default:desert_stone", 1, "air", 3, "default:desert_sand", 16, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("portal", 100, "default:dirt_with_grass", 2, "default:dirt", 2, "air", 24, "air", 11, false, nil, false, false, true)
|
|
|
|
else -- mymapgenis 7
|
|
|
|
nssb_register_buildings ("spiaggiagranchius", 5, "default:sand", 3, "default:sand", 2, "air", 3, "air", 0, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("acquagranchius", 6, "default:sand", 3, "default:sand", 12,"default:water_source", 3, "default:water_source", 0, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("ooteca", 12, "default:dirt_with_grass", 3, "default:dirt", 2, "air", 24, "default:tree", 8, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("minuscolaooteca", 11, "default:dirt_with_grass",3 , "default:dirt", 2, "air", 24, "default:tree", 2, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("piccolaooteca", 11, "default:dirt_with_grass", 2, "default:dirt", 2, "air", 24, "default:tree", 4, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("arcate", 24, "default:sand", 3, "default:sand", 13, "default:water_source", 3, "default:water_source",0, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("grandepiramide", 24, "default:dirt", 3, "default:dirt", 20, "default:water_source", 3, "default:water_source", 0, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("collina", 14, "default:dirt_with_grass", 3, "default:dirt", 2, "air", 3, "air", 12, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("megaformicaio", 20, "default:dirt_with_grass", 4, "default:dirt", 2, "air", 3, "air", 25, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("antqueenhill", 22, "default:dirt_with_grass", 4, "default:dirt", 2, "air", 3, "air", 21, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("rovine1", 6, "default:dirt_with_grass", 3, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false, false)
|
|
|
|
-- nssb_register_buildings ("rovine2", 1, "default:stone", 0, "air", 0, "air", 24, "default:jungletree", 5, true, -8, false, false)
|
|
|
|
nssb_register_buildings ("rovine3", 6, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("rovine4", 6, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("rovine5", 6, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("rovine6", 6, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("rovine7", 6, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("rovine8", 6, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("rovine9", 6, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("rovine10", 6, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("bozzoli", 4, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("picco", 32, "default:desert_sand", 1, "default:desert_stone", 1, "air", 3, "default:desert_sand", 10, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("piccoghiaccio", 32, "default:dirt_with_snow", 1, "default:dirt", 1, "air", 3, "default:dirt_with_snow", 10, false, nil, true, false, false)
|
|
|
|
nssb_register_buildings ("icehall", 40, "default:dirt_with_snow", 1, "default:dirt", 1, "air", 3, "default:dirt_with_snow", 30, false, nil, true, false, false)
|
|
|
|
nssb_register_buildings ("piccomoonheron", 32, "default:dirt_with_snow", 1, "default:dirt", 1, "air", 3, "default:dirt_with_snow", 3, false, nil, true, false, false)
|
|
|
|
nssb_register_buildings ("doppiopiccoghiaccio", 32, "default:dirt_with_snow", 1, "default:dirt", 1, "air", 3, "default:dirt_with_snow", 7, false, nil, true, false, false)
|
|
|
|
nssb_register_buildings ("doppiopiccosabbia", 32, "default:desert_sand", 1, "default:desert_stone", 1, "air", 3, "default:desert_sand", 7, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("piccoscrausics", 32, "default:desert_sand", 1, "default:desert_stone", 1, "air", 3, "default:desert_sand", 3, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("fossasand", 50, "default:desert_sand", 1, "default:desert_stone", 1, "air", 3, "default:desert_sand", 16, false, nil, false, false, false)
|
|
|
|
nssb_register_buildings ("portal", 200, "default:dirt_with_grass", 2, "default:dirt", 2, "air", 24, "air", 11, false, nil, false, false, true)
|
|
end
|
|
|
|
nssb_register_buildings ("blocohouse", 4, "default:stone", 0, "air", 0, "air", 3, "default:stone", 5, true, -10, false, false, false)
|
|
|
|
nssb_register_buildings ("bigblocohouse", 4, "default:stone", 0, "air", 0, "air", 3, "default:stone", 5, true, -20, false, false, false)
|
|
|
|
nssb_register_buildings ("blocobiggesthouse", 4, "default:stone", 0, "air", 0, "air", 3, "default:stone", 5, true, -30, false, false, false)
|
|
|
|
-- nodes gen
|
|
|
|
-- This dimension is "divided" in in 7 layer.
|
|
-- 1st layer is indistructible, made of indistructible morentir
|
|
|
|
local ite = is_50 and 1 or 9
|
|
|
|
for i = 1, ite do
|
|
|
|
minetest.register_ore({
|
|
ore_type = oretype_morlan_layer,
|
|
ore = "nssb:indistructible_morentir",
|
|
wherein = {
|
|
"default:water_source","default:water_flowing","default:gravel",
|
|
"default:dirt", "default:sand", "default:lava_source", "default:lava_flowing",
|
|
"default:mese_block", "default:stone", "air", "default:stone_with_coal",
|
|
"default:stone_with_iron", "default:stone_with_mese",
|
|
"default:stone_with_diamond", "default:stone_with_gold",
|
|
"default:stone_with_copper", "nssb:ant_dirt", "default:stone",
|
|
"default:cobble", "default:stonebrick", "default:mossycobble",
|
|
"default:desert_stone", "default:desert_cobble", "default:desert_stonebrick",
|
|
"default:sandstone", "default:sandstonebrick", "default:stone_with_tin",
|
|
-- moreores (can be added to list, only removes if mod active)
|
|
"moreores:mineral_tin", "moreores:mineral_silver", "moreores:mineral_mithril",
|
|
"default:silver_sand"
|
|
},
|
|
clust_scarcity = 1,
|
|
clust_num_ores = 1,
|
|
clust_size = 1,
|
|
y_min = level - 44,
|
|
y_max = level - 37
|
|
})
|
|
end
|
|
|
|
-- 2nd layer is "stalagmitic", have bats and morelentir
|
|
|
|
local function replace2(old, new)
|
|
|
|
local ite = is_50 and 1 or 9
|
|
|
|
for i = 1, ite do
|
|
|
|
minetest.register_ore({
|
|
ore_type = oretype_morlan_layer,
|
|
ore = new,
|
|
wherein = old,
|
|
clust_scarcity = 1,
|
|
clust_num_ores = 1,
|
|
clust_size = 1,
|
|
y_min = level - 65,
|
|
y_max = level - 45
|
|
})
|
|
end
|
|
end
|
|
|
|
-- optimized list
|
|
replace2({"default:stone", "default:stone_with_coal", "default:stone_with_iron",
|
|
"default:stone_with_mese", "default:stone_with_diamond", "default:silver_sand",
|
|
"default:stone_with_gold", "default:stone_with_copper", "default:gravel",
|
|
"default:dirt", "default:sand", "default:water_source", "default:water_flowing",
|
|
"default:lava_source", "default:lava_flowing", "default:mese_block",
|
|
"nssb:ant_dirt", "default:stone", "default:cobble", "default:stonebrick",
|
|
"default:mossycobble", "default:desert_stone", "default:desert_cobble",
|
|
"default:desert_stonebrick", "default:sandstone", "default:sandstonebrick"},
|
|
"nssb:morelentir")
|
|
replace2({"default:stone_with_tin", "moreores:mineral_tin", "moreores:mineral_silver",
|
|
"moreores:mineral_mithril"}, "air")
|
|
|
|
|
|
minetest.register_ore({
|
|
ore_type = "blob",
|
|
ore = "nssb:morvilya",
|
|
wherein = "nssb:morentir",
|
|
clust_scarcity = 15 * 15 * 15,
|
|
clust_size = 6,
|
|
y_min = level - 65,
|
|
y_max = level - 45,
|
|
noise_threshold = 0.0,
|
|
noise_params = {
|
|
offset = 0.5,
|
|
scale = 0.2,
|
|
spread = {x = 5, y = 5, z = 5},
|
|
seed = 17676,
|
|
octaves = 1,
|
|
persist = 0.0
|
|
},
|
|
})
|
|
|
|
for i = 1, 3 do
|
|
|
|
minetest.register_ore({
|
|
ore_type = "scatter",
|
|
ore = "air",
|
|
wherein = "nssb:morentir",
|
|
clust_scarcity = 1,
|
|
clust_num_ores = 1,
|
|
clust_size = 1,
|
|
y_min = level - 66,
|
|
y_max = level - 58
|
|
})
|
|
end
|
|
|
|
-- 3rd layer is made by air
|
|
|
|
local ite = is_50 and 1 or 32
|
|
|
|
for i = 1, ite do
|
|
|
|
minetest.register_ore({
|
|
ore_type = oretype_morlan_layer,
|
|
ore = "air",
|
|
wherein = {
|
|
"nssb:ant_dirt", "default:stone", "default:cobble", "default:stonebrick",
|
|
"default:mossycobble", "default:desert_stone", "default:desert_cobble",
|
|
"default:desert_stonebrick", "default:sandstone", "default:sandstonebrick",
|
|
"default:water_source", "default:water_flowing", "default:gravel",
|
|
"default:dirt", "default:sand", "default:lava_source", "default:lava_flowing",
|
|
"default:mese_block", "default:stone", "air", "default:stone_with_coal",
|
|
"default:stone_with_iron", "default:stone_with_mese", "default:silver_sand",
|
|
"default:stone_with_diamond", "default:stone_with_gold",
|
|
"default:stone_with_copper", "default:stone_with_tin",
|
|
-- moreores (can be added to list, only removes if mod active)
|
|
"moreores:mineral_tin", "moreores:mineral_silver", "moreores:mineral_mithril"
|
|
},
|
|
clust_scarcity = 1,
|
|
clust_num_ores = 1,
|
|
clust_size = 1,
|
|
y_min = level - 93,
|
|
y_max = level - 66
|
|
})
|
|
end
|
|
|
|
|
|
minetest.register_ore({
|
|
ore_type = "blob",
|
|
ore = "nssb:morelentir",
|
|
wherein = "air",
|
|
clust_scarcity = 10 * 10 * 10,
|
|
clust_size = 3,
|
|
y_min = level - 68,
|
|
y_max = level - 65,
|
|
noise_threshold = 0.0,
|
|
noise_params = {
|
|
offset = 0.5,
|
|
scale = 0.2,
|
|
spread = {x = 5, y = 5, z = 5},
|
|
seed = 17676,
|
|
octaves = 1,
|
|
persist = 0.0
|
|
}
|
|
})
|
|
|
|
minetest.register_ore({
|
|
ore_type = "blob",
|
|
ore = "nssb:morelentir",
|
|
wherein = "air",
|
|
clust_scarcity = 16 * 16 * 16,
|
|
clust_size = 6,
|
|
y_min = level - 71,
|
|
y_max = level - 65,
|
|
noise_threshold = 0.0,
|
|
noise_params = {
|
|
offset = 0.5,
|
|
scale = 0.2,
|
|
spread = {x = 5, y = 5, z = 5},
|
|
seed = 17676,
|
|
octaves = 1,
|
|
persist = 0.0
|
|
}
|
|
})
|
|
|
|
minetest.register_ore({
|
|
ore_type = "blob",
|
|
ore = "nssb:morvilya",
|
|
wherein = "nssb:morentir",
|
|
clust_scarcity = 15 * 15 * 15,
|
|
clust_size = 6,
|
|
y_min = level - 92,
|
|
y_max = level - 66,
|
|
noise_threshold = 0.0,
|
|
noise_params = {
|
|
offset = 0.5,
|
|
scale = 0.2,
|
|
spread = {x = 5, y = 5, z = 5},
|
|
seed = 17676,
|
|
octaves = 1,
|
|
persist = 0.0
|
|
}
|
|
})
|
|
|
|
minetest.register_ore({
|
|
ore_type = "blob",
|
|
ore = "nssb:morentir",
|
|
wherein = "air",
|
|
clust_scarcity = 13 * 13 * 13,
|
|
clust_size = 6,
|
|
y_min = level - 95,
|
|
y_max = level - 89,
|
|
noise_threshold = 0.0,
|
|
noise_params = {
|
|
offset = 0.5,
|
|
scale = 0.2,
|
|
spread = {x = 5, y = 5, z = 5},
|
|
seed = 17676,
|
|
octaves = 1,
|
|
persist = 0.0
|
|
}
|
|
})
|
|
|
|
minetest.register_ore({
|
|
ore_type = "blob",
|
|
ore = "nssb:morentir",
|
|
wherein = "air",
|
|
clust_scarcity = 11 * 11 * 11,
|
|
clust_size = 5,
|
|
y_min = level - 95,
|
|
y_max = level - 90,
|
|
noise_threshold = 0.0,
|
|
noise_params = {
|
|
offset = 0.5,
|
|
scale = 0.2,
|
|
spread = {x = 5, y = 5, z = 5},
|
|
seed = 17676,
|
|
octaves = 1,
|
|
persist = 0.0
|
|
}
|
|
})
|
|
|
|
minetest.register_ore({
|
|
ore_type = "blob",
|
|
ore = "nssb:morentir",
|
|
wherein = "air",
|
|
clust_scarcity = 10 * 10 * 10,
|
|
clust_size = 4,
|
|
y_min = level - 95,
|
|
y_max = level - 91,
|
|
noise_threshold = 0.0,
|
|
noise_params = {
|
|
offset = 0.5,
|
|
scale = 0.2,
|
|
spread = {x = 5, y = 5, z = 5},
|
|
seed = 17676,
|
|
octaves = 1,
|
|
persist = 0.0
|
|
}
|
|
})
|
|
|
|
minetest.register_ore({
|
|
ore_type = "blob",
|
|
ore = "nssb:morentir",
|
|
wherein = "air",
|
|
clust_scarcity = 10 * 10 * 10,
|
|
clust_size = 10,
|
|
y_min = level - 95,
|
|
y_max = level - 89,
|
|
noise_threshold = 0.0,
|
|
noise_params = {
|
|
offset = 1,
|
|
scale = 1,
|
|
spread = {x = 1, y = 1000, z = 1},
|
|
seed = 17676,
|
|
octaves = 1,
|
|
persist = 0.0
|
|
}
|
|
})
|
|
|
|
-- 4th layer is a plain with mobs, fire, water...
|
|
|
|
local function replace4(old, new)
|
|
|
|
local ite = is_50 and 1 or 9
|
|
|
|
for i = 1, ite do
|
|
|
|
minetest.register_ore({
|
|
ore_type = oretype_morlan_layer,
|
|
ore = new,
|
|
wherein = old,
|
|
clust_scarcity = 1,
|
|
clust_num_ores = 1,
|
|
clust_size = 1,
|
|
y_min = level - 107,
|
|
y_max = level - 94
|
|
})
|
|
end
|
|
end
|
|
|
|
-- optimized list
|
|
replace4({"default:stone_with_iron", "default:stone_with_mese", "default:stone_with_gold",
|
|
"default:stone_with_diamond", "default:stone_with_copper"}, "air")
|
|
replace4({"default:stone_with_coal", "default:lava_source", "default:water_source"},
|
|
"nssb:mornen")
|
|
replace4({"default:lava_flowing", "default:water_flowing"}, "nssb:mornen_flowing")
|
|
replace4({"default:gravel", "default:dirt", "default:sand", "nssb:ant_dirt",
|
|
"default:stone", "default:cobble", "default:stonebrick", "default:mossycobble",
|
|
"default:desert_stone", "default:desert_cobble", "default:desert_stonebrick",
|
|
"default:sandstone", "default:sandstonebrick", "default:silver_sand"},
|
|
"nssb:morkemen")
|
|
replace4({"default:stone", "default:stone_with_tin", "moreores:mineral_tin",
|
|
"moreores:mineral_silver", "moreores:mineral_mithril"}, "nssb:morentir")
|
|
replace4("default:mese_block", "nssb:life_energy_ore")
|
|
|
|
|
|
minetest.register_ore({
|
|
ore_type = "scatter",
|
|
ore = "nssb:morlote",
|
|
wherein = "air",
|
|
clust_scarcity = 7 * 7 * 7,
|
|
clust_num_ores = 1,
|
|
clust_size = 1,
|
|
y_min = level - 94,
|
|
y_max = level - 93
|
|
})
|
|
|
|
minetest.register_ore({
|
|
ore_type = "scatter",
|
|
ore = "nssb:mornar",
|
|
wherein = "air",
|
|
clust_scarcity = 4 * 4 * 4,
|
|
clust_num_ores = 1,
|
|
clust_size = 1,
|
|
y_min = level - 94,
|
|
y_max = level - 93
|
|
})
|
|
|
|
minetest.register_ore({
|
|
ore_type = "scatter",
|
|
ore = "nssm:morwa_statue",
|
|
wherein = "air",
|
|
clust_scarcity = 18 * 18 * 18,
|
|
clust_num_ores = 1,
|
|
clust_size = 1,
|
|
y_min = level - 94,
|
|
y_max = level - 93
|
|
})
|
|
|
|
-- 5th layer is underground with caves
|
|
|
|
local function replace5(old, new)
|
|
|
|
local ite = is_50 and 1 or 9
|
|
|
|
for i = 1, ite do
|
|
|
|
minetest.register_ore({
|
|
ore_type = oretype_morlan_layer,
|
|
ore = new,
|
|
wherein = old,
|
|
clust_scarcity = 1,
|
|
clust_num_ores = 1,
|
|
clust_size = 1,
|
|
y_min = level - 156,
|
|
y_max = level - 108
|
|
})
|
|
end
|
|
end
|
|
|
|
minetest.register_ore({
|
|
ore_type = "blob",
|
|
ore = "nssb:fall_morentir",
|
|
wherein = "air",
|
|
clust_scarcity = 16 * 16 * 16,
|
|
clust_size = 6,
|
|
y_min = level - 204,
|
|
y_max = level - 109,
|
|
noise_threshold = 0.0,
|
|
noise_params = {
|
|
offset = 0.5,
|
|
scale = 0.2,
|
|
spread = {x = 5, y = 5, z = 5},
|
|
seed = 17676,
|
|
octaves = 1,
|
|
persist = 0.0
|
|
}
|
|
})
|
|
|
|
-- optimized list
|
|
replace5({"default:stone", "default:stone_with_iron", "default:stone_with_mese",
|
|
"default:stone_with_copper"}, "nssb:morentir")
|
|
replace5({"default:stone_with_coal", "default:stone_with_diamond",
|
|
"default:stone_with_gold", "default:mese_block", "default:stone_with_tin",
|
|
"moreores:mineral_tin"}, "nssb:life_energy_ore")
|
|
replace5({"default:lava_source", "default:lava_flowing", "moreores:mineral_silver"},
|
|
"nssb:morentir")
|
|
replace5("default:water_source", "nssb:mornen")
|
|
replace5("default:water_flowing", "nssb:mornen_flowing")
|
|
replace5("moreores:mineral_mithril", "nssb:moranga")
|
|
replace5({"default:gravel", "default:dirt", "default:sand", "nssb:ant_dirt",
|
|
"default:stone", "default:cobble", "default:stonebrick", "default:mossycobble",
|
|
"default:desert_stone", "default:desert_cobble", "default:desert_stonebrick",
|
|
"default:sandstone", "default:sandstonebrick", "default:silver_sand"},
|
|
"nssb:morkemen")
|
|
|
|
-- 6th layer is underground with other caves and the special metal
|
|
|
|
local function replace6(old, new)
|
|
|
|
local ite = is_50 and 1 or 9
|
|
|
|
for i = 1, ite do
|
|
|
|
minetest.register_ore({
|
|
ore_type = oretype_morlan_layer,
|
|
ore = new,
|
|
wherein = old,
|
|
clust_scarcity = 1,
|
|
clust_num_ores = 1,
|
|
clust_size = 1,
|
|
y_min = level - 205,
|
|
y_max = level - 157
|
|
})
|
|
end
|
|
end
|
|
|
|
-- optimized list
|
|
replace6({"default:stone", "default:lava_source", "default:lava_flowing"},
|
|
"nssb:morentir")
|
|
replace6({"default:stone_with_coal", "default:stone_with_diamond",
|
|
"default:stone_with_gold", "default:mese_block", "default:stone_with_tin",
|
|
"moreores:mineral_tin"}, "nssb:life_energy_ore")
|
|
replace6({"default:stone_with_iron", "default:stone_with_mese",
|
|
"default:stone_with_copper", "moreores:mineral_silver",
|
|
"moreores:mineral_mithril"}, "nssb:moranga")
|
|
replace6({"default:gravel", "default:dirt", "default:sand", "nssb:ant_dirt",
|
|
"default:stone", "default:cobble", "default:stonebrick", "default:mossycobble",
|
|
"default:desert_stone", "default:desert_cobble", "default:desert_stonebrick",
|
|
"default:sandstone", "default:sandstonebrick", "default:silver_sand"},
|
|
"nssb:morkemen")
|
|
replace6("default:water_source", "nssb:mornen")
|
|
replace6("default:water_flowing", "nssb:mornen_flowing")
|
|
|
|
minetest.register_ore({
|
|
ore_type = "scatter",
|
|
ore = "nssb:boum_morentir",
|
|
wherein = "nssb:morentir",
|
|
clust_scarcity = 13 * 13 * 13,
|
|
clust_num_ores = 1,
|
|
clust_size = 1,
|
|
y_min = level - 205,
|
|
y_max = level - 157
|
|
})
|
|
|
|
-- 7th layer is indistructible
|
|
|
|
local ite = is_50 and 1 or 9
|
|
|
|
for i = 1, ite do
|
|
|
|
minetest.register_ore({
|
|
ore_type = oretype_morlan_layer,
|
|
ore = "nssb:indistructible_morentir",
|
|
wherein = {
|
|
"nssb:ant_dirt", "default:stone", "default:cobble", "default:stonebrick",
|
|
"default:mossycobble", "default:desert_stone", "default:desert_cobble",
|
|
"default:desert_stonebrick", "default:sandstone", "default:sandstonebrick",
|
|
"default:water_source", "default:water_flowing", "default:gravel",
|
|
"default:dirt", "default:sand", "default:lava_source", "default:lava_flowing",
|
|
"default:mese_block", "default:stone", "air", "default:stone_with_coal",
|
|
"default:stone_with_iron", "default:stone_with_mese", "default:silver_sand",
|
|
"default:stone_with_diamond", "default:stone_with_gold",
|
|
"default:stone_with_copper", "default:stone_with_tin",
|
|
"moreores:mineral_tin", "moreores:mineral_silver", "moreores:mineral_mithril"
|
|
},
|
|
clust_scarcity = 1,
|
|
clust_num_ores = 1,
|
|
clust_size = 1,
|
|
y_min = level - 213,
|
|
y_max = level - 206
|
|
})
|
|
end
|
|
|
|
|
|
local ite = is_50 and 1 or 12
|
|
|
|
for i = 1, ite do
|
|
|
|
minetest.register_ore({
|
|
ore_type = oretype_morlan_layer,
|
|
ore = "air",
|
|
wherein = {
|
|
"default:water_source", "default:water_flowing", "default:lava_source",
|
|
"default:lava_flowing"
|
|
},
|
|
clust_scarcity = 1,
|
|
clust_num_ores = 1,
|
|
clust_size = 1,
|
|
y_min = level - 207,
|
|
y_max = level - 45
|
|
})
|
|
end
|
|
|
|
-- Place the buildings in the morlendor
|
|
|
|
posmorvalarblock = {x = 827, y = level - 94, z = -817}
|
|
posplace = {x = 0, y = level - 93, z = 0}
|
|
posmemory = {x = 0, y = level - 92, z = 0}
|
|
|
|
if posplace then
|
|
|
|
--[[if name11 == "ignore" then
|
|
local pmin, pmax = minetest.get_voxel_manip():read_from_map(posplace, posplace)
|
|
end
|
|
]]
|
|
|
|
-- minetest.get_voxel_manip():read_from_map(posplace, posplace)
|
|
|
|
if not minetest.get_node_or_nil(posplace) then
|
|
minetest.emerge_area(vector.subtract(posplace, 80), vector.add(posplace, 80))
|
|
end
|
|
|
|
minetest.after(5, function(posplace)
|
|
|
|
minetest.place_schematic(posplace, minetest.get_modpath("nssb")
|
|
.. "/schems/memoportal.mts", 0, {}, true)
|
|
end, posplace)
|
|
end
|
|
|
|
posarena = {x = 777, y = level - 96, z = -777}
|
|
|
|
if posarena then
|
|
|
|
-- minetest.get_voxel_manip():read_from_map(posplace, posplace)
|
|
if not minetest.get_node_or_nil(posarena) then
|
|
minetest.emerge_area(vector.subtract(posarena, 120), vector.add(posarena, 120))
|
|
end
|
|
|
|
-- teleport the player
|
|
minetest.after(5, function(posarena)
|
|
|
|
local mp = minetest.get_modpath("nssb")
|
|
|
|
minetest.place_schematic(posarena, mp .. "/schems/arena51.mts", "0", {}, true)
|
|
|
|
minetest.place_schematic({x = posarena.x, y = level - 96, z = posarena.z-9},
|
|
mp .. "/schems/arena52.mts", "0", {}, true)
|
|
|
|
minetest.place_schematic({x = posarena.x, y = level - 96, z = posarena.z-18},
|
|
mp .. "/schems/arena53.mts", "0", {}, true)
|
|
|
|
minetest.place_schematic({x = posarena.x, y = level - 96, z = posarena.z-27},
|
|
mp .. "/schems/arena54.mts", "0", {}, true)
|
|
|
|
minetest.place_schematic({x = posarena.x, y = level - 96, z = posarena.z-36},
|
|
mp .. "/schems/arena55.mts", "0", {}, true)
|
|
|
|
minetest.place_schematic({x = posarena.x, y = level - 96, z = posarena.z-45},
|
|
mp .. "/schems/arena56.mts", "0", {}, true)
|
|
|
|
minetest.place_schematic({x = posarena.x, y = level - 96, z = posarena.z-54},
|
|
mp .. "/schems/arena57.mts", "0", {}, true)
|
|
|
|
minetest.place_schematic({x = posarena.x, y = level - 96, z = posarena.z-63},
|
|
mp .. "/schems/arena58.mts", "0", {}, true)
|
|
|
|
minetest.place_schematic({x = posarena.x, y = level - 96, z = posarena.z-72},
|
|
mp .. "/schems/arena59.mts", "0", {}, true)
|
|
|
|
minetest.place_schematic({x = posarena.x, y = level - 96, z = posarena.z-81},
|
|
mp .. "/schems/arena510.mts", "0", {}, true)
|
|
|
|
minetest.place_schematic({x = posarena.x, y = level - 96, z = posarena.z-90},
|
|
mp .. "/schems/arena511.mts", "0", {}, true)
|
|
|
|
local objects = minetest.get_objects_inside_radius(posmorvalarblock, 90)
|
|
local found = 0
|
|
|
|
for _,obj in ipairs(objects) do
|
|
|
|
if (obj:get_luaentity() and (obj:get_luaentity().name=="nssm:morvalar0"
|
|
or obj:get_luaentity().name=="nssm:morvalar1"
|
|
or obj:get_luaentity().name=="nssm:morvalar2"
|
|
or obj:get_luaentity().name=="nssm:morvalar3"
|
|
or obj:get_luaentity().name=="nssm:morvalar4"
|
|
or obj:get_luaentity().name=="nssm:morvalar5"
|
|
or obj:get_luaentity().name=="nssm:morvalar6"
|
|
or obj:get_luaentity().name=="nssm:morvalar")) then
|
|
found = 1
|
|
end
|
|
end
|
|
|
|
if found == 0 then
|
|
minetest.set_node(posmorvalarblock, {name="nssb:morvalar_block"})
|
|
end
|
|
end, posarena)
|
|
end
|
|
|
|
minetest.register_abm({
|
|
nodenames = {"nssb:indistructible_morentir"},
|
|
neighbors = {"nssb:mornar"},
|
|
interval = 1,
|
|
chance = 1,
|
|
action = function(pos, node)
|
|
|
|
-- minetest.chat_send_all("Ciao ciao pirloni")
|
|
|
|
local mp = minetest.get_modpath("nssb")
|
|
|
|
minetest.place_schematic(posarena, mp .. "/schems/arena51.mts", "0", {}, true)
|
|
|
|
minetest.place_schematic({x = posarena.x, y = level - 96, z = posarena.z-9},
|
|
mp .. "/schems/arena52.mts", "0", {}, true)
|
|
|
|
minetest.place_schematic({x = posarena.x, y = level - 96, z = posarena.z-18},
|
|
mp .. "/schems/arena53.mts", "0", {}, true)
|
|
|
|
minetest.place_schematic({x = posarena.x, y = level - 96, z = posarena.z-27},
|
|
mp .. "/schems/arena54.mts", "0", {}, true)
|
|
|
|
minetest.place_schematic({x = posarena.x, y = level - 96, z = posarena.z-36},
|
|
mp .. "/schems/arena55.mts", "0", {}, true)
|
|
|
|
minetest.place_schematic({x = posarena.x, y = level - 96, z = posarena.z-45},
|
|
mp .. "/schems/arena56.mts", "0", {}, true)
|
|
|
|
minetest.place_schematic({x = posarena.x, y = level - 96, z = posarena.z-54},
|
|
mp .. "/schems/arena57.mts", "0", {}, true)
|
|
|
|
minetest.place_schematic({x = posarena.x, y = level - 96, z = posarena.z-63},
|
|
mp .. "/schems/arena58.mts", "0", {}, true)
|
|
|
|
minetest.place_schematic({x = posarena.x, y = level - 96, z = posarena.z-72},
|
|
mp .. "/schems/arena59.mts", "0", {}, true)
|
|
|
|
minetest.place_schematic({x = posarena.x, y = level - 96, z = posarena.z-81},
|
|
mp .. "/schems/arena510.mts", "0", {}, true)
|
|
|
|
minetest.place_schematic({x = posarena.x, y = level - 96, z = posarena.z-90},
|
|
mp .. "/schems/arena511.mts", "0", {}, true)
|
|
end
|
|
})
|
|
|
|
--[[
|
|
minetest.register_abm({
|
|
nodenames = {"default:lava_source"},
|
|
neighbors = {
|
|
"nssb:morentir","nssb:morkemen", "nssb:morelentir", "nssb:mornen",
|
|
"nssb:mornar","nssb:indistructible_morentir"
|
|
},
|
|
interval = 1,
|
|
chance = 1,
|
|
action = function(pos, node)
|
|
minetest.set_node({x = pos.x, y = pos.y , z = pos.z}, {name = "air"})
|
|
end
|
|
})
|
|
]]
|
|
|
|
minetest.register_abm({
|
|
nodenames = {
|
|
"default:lava_source", "default:lava_flowing", "default:water_source",
|
|
"default:water_flowing"
|
|
},
|
|
neighbors = {"air"},
|
|
interval = 1,
|
|
chance = 1,
|
|
action = function(pos, node)
|
|
if pos.y < level then
|
|
minetest.remove_node(pos)
|
|
end
|
|
end
|
|
})
|
|
|
|
-- If the generated chunks of map are in Morlendor remove the lava_source nodes
|
|
--[[
|
|
minetest.register_on_generated(function(minp, maxp, seed)
|
|
|
|
if maxp.y > level then
|
|
|
|
if minp.y < level then
|
|
maxp.y = level
|
|
else
|
|
return
|
|
end
|
|
end
|
|
|
|
minetest.chat_send_all("Ciao sono qui")
|
|
|
|
local poslist = minetest.find_nodes_in_area(minp,maxp,"default:lava_source")
|
|
|
|
for _,v in pairs(poslist) do
|
|
minetest.chat_send_all("Posizione: "..pos_to_string)
|
|
minetest.remove_node(v)
|
|
end
|
|
end)
|
|
|
|
minetest.register_abm({
|
|
nodenames = {"default:water_source"},
|
|
neighbors = {
|
|
"nssb:morentir","nssb:morkemen", "nssb:morelentir", "nssb:mornen",
|
|
"nssb:mornar","nssb:indistructible_morentir"
|
|
},
|
|
interval = 1,
|
|
chance = 1,
|
|
action = function(pos, node)
|
|
minetest.set_node({x = pos.x, y = pos.y , z = pos.z}, {name = "air"})
|
|
end
|
|
})
|
|
]]
|
|
|
|
-- Abms
|
|
|
|
minetest.register_abm({
|
|
nodenames = {"default:torch"},
|
|
neighbors = {"nssb:morentir","nssb:morkemen"},
|
|
interval = 1,
|
|
chance = 1,
|
|
action = function(pos, node)
|
|
minetest.set_node({x = pos.x, y = pos.y , z = pos.z}, {name = "nssb:mornar"})
|
|
end
|
|
})
|
|
|
|
minetest.register_abm({
|
|
nodenames = {"nssb:morlote"},
|
|
neighbors = {"air"},
|
|
interval = 60,
|
|
chance = 100,
|
|
action = function(pos, node)
|
|
|
|
local pos1 = {x = pos.x, y = pos.y + 1, z = pos.z}
|
|
local n = minetest.get_node(pos1).name
|
|
|
|
if n ~= "air" then
|
|
return
|
|
end
|
|
|
|
minetest.add_entity(pos1, "nssm:morgre")
|
|
|
|
minetest.remove_node(pos)
|
|
end
|
|
})
|
|
|
|
minetest.register_abm({
|
|
nodenames = {"nssb:fall_morentir"},
|
|
neighbors = {"nssb:fall_morentir"},
|
|
interval = 1,
|
|
chance = 1,
|
|
action = function(pos, node)
|
|
|
|
for _,obj in ipairs(minetest.get_objects_inside_radius(pos, 7)) do
|
|
|
|
if obj:is_player() then
|
|
minetest.check_for_falling(pos)
|
|
end
|
|
end
|
|
end
|
|
})
|
|
|
|
minetest.register_abm({
|
|
nodenames = {"nssb:boum_morentir"},
|
|
neighbors = {"nssb:morentir"},
|
|
interval = 1,
|
|
chance = 1,
|
|
action = function(pos, node)
|
|
|
|
for _,obj in ipairs(minetest.get_objects_inside_radius(pos, 5)) do
|
|
|
|
if obj:is_player() then
|
|
tnt.boom(pos, {radius = 3, damage_radius = 0})
|
|
end
|
|
end
|
|
end
|
|
})
|
|
|
|
minetest.register_abm({
|
|
nodenames = {"nssb:mornen", "nssb:mornen_flowing"},
|
|
neighbors = {"air"},
|
|
interval = 1.0,
|
|
chance = 5,
|
|
action = function (pos, node)
|
|
|
|
minetest.add_particlespawner({
|
|
amount = 1,
|
|
time = 2,
|
|
minpos = {x = pos.x - 0.5, y = pos.y + 0.5, z = pos.z - 0.5},
|
|
maxpos = {x = pos.x + 0.5, y = pos.y + 0.5, z = pos.z + 0.5},
|
|
minvel = {x = 0, y = 0.1, z = 0},
|
|
maxvel = {x = 0, y = 0.3, z = 0},
|
|
minacc = {x = 0, y = 0, z = 0},
|
|
maxacc = {x = 0, y = 0, z = 0},
|
|
minexptime = 1,
|
|
maxexptime = 1.2,
|
|
minsize = 0.5,
|
|
maxsize = 0.7,
|
|
collisiondetection = false,
|
|
vertical = true,
|
|
texture = "morparticle.png"
|
|
})
|
|
end
|
|
})
|
|
|
|
minetest.register_abm({
|
|
nodenames = {"nssb:portal"},
|
|
neighbors = {"air"},
|
|
interval = 1,
|
|
chance = 1,
|
|
action = function (pos, node)
|
|
|
|
minetest.add_particlespawner({
|
|
amount = 3,
|
|
time = 1,
|
|
minpos = {x = pos.x - 0.5, y = pos.y + 0.5, z = pos.z - 0.5},
|
|
maxpos = {x = pos.x + 0.5, y = pos.y + 0.5, z = pos.z + 0.5},
|
|
minvel = {x = 0, y = 0.1, z = 0},
|
|
maxvel = {x = 0, y = 0.8, z = 0},
|
|
minacc = {x = 0, y = 0, z = 0},
|
|
maxacc = {x = 0, y = 0.4, z = 0},
|
|
minexptime = 1,
|
|
maxexptime = 3,
|
|
minsize = 0.5,
|
|
maxsize = 1.4,
|
|
collisiondetection = false,
|
|
vertical = true,
|
|
texture = "morparticle.png"
|
|
})
|
|
end
|
|
})
|
|
|
|
minetest.register_abm({
|
|
nodenames = {"nssb:portal"},
|
|
neighbors = {"air"},
|
|
interval = 7,
|
|
chance = 1,
|
|
action = function (pos, node)
|
|
|
|
for _,obj in ipairs(minetest.get_objects_inside_radius(pos, 1)) do
|
|
|
|
if obj:is_player() then
|
|
|
|
local pos1 = posmemory
|
|
local meta = minetest.get_meta(pos1)
|
|
|
|
-- the timer is saved inside a position because for me the tonumber
|
|
-- function doesn"t work
|
|
local timer_pos = minetest.string_to_pos(meta:get_string("player_timer"
|
|
.. obj:get_player_name()))
|
|
|
|
if not timer_pos or ((timer_pos) and ((os.time() - timer_pos.x) >= 30)) then
|
|
|
|
local posp = obj:get_pos()
|
|
|
|
-- minetest.chat_send_all("Posizione: "..minetest.pos_to_string(posp))
|
|
|
|
obj:set_pos({x = 5, y = pos1.y + 2, z = 5})
|
|
|
|
meta:set_string("player"..obj:get_player_name(), minetest.pos_to_string(posp))
|
|
|
|
timer_pos = {x = os.time(), y = 0, z = 0}
|
|
|
|
meta:set_string("player_timer" .. obj:get_player_name(),
|
|
minetest.pos_to_string(timer_pos))
|
|
end
|
|
end
|
|
end
|
|
end
|
|
})
|
|
|
|
minetest.register_abm({
|
|
nodenames = {"nssb:portalhome"},
|
|
neighbors = {"air"},
|
|
interval = 1,
|
|
chance = 1,
|
|
action = function (pos, node)
|
|
minetest.add_particlespawner({
|
|
amount = 3,
|
|
time = 1,
|
|
minpos = {x = pos.x - 0.5, y = pos.y + 0.5, z = pos.z - 0.5},
|
|
maxpos = {x = pos.x + 0.5, y = pos.y + 0.5, z = pos.z + 0.5},
|
|
minvel = {x = 0, y = 0.1, z = 0},
|
|
maxvel = {x = 0, y = 0.8, z = 0},
|
|
minacc = {x = 0, y = 0, z = 0},
|
|
maxacc = {x = 0, y = 0.4, z = 0},
|
|
minexptime = 1,
|
|
maxexptime = 3,
|
|
minsize = 0.5,
|
|
maxsize = 1.4,
|
|
collisiondetection = false,
|
|
vertical = true,
|
|
texture = "earth_particle.png"
|
|
})
|
|
end
|
|
})
|
|
|
|
minetest.register_abm({
|
|
nodenames = {"nssb:portalhome"},
|
|
neighbors = {"air"},
|
|
interval = 7,
|
|
chance = 2,
|
|
action = function (pos, node)
|
|
|
|
for _,obj in ipairs(minetest.get_objects_inside_radius(pos, 1)) do
|
|
|
|
if obj:is_player() then
|
|
|
|
local pos1 = posmemory
|
|
local meta = minetest.get_meta(pos1)
|
|
-- the timer is saved inside a position because for me the tonumber
|
|
-- function doesn"t work
|
|
local timer_pos = minetest.string_to_pos(meta:get_string("player_timer"
|
|
.. obj:get_player_name()))
|
|
|
|
if not timer_pos or ((timer_pos) and ((os.time() - timer_pos.x) >= 30)) then
|
|
|
|
local name = minetest.get_node(pos1).name
|
|
|
|
local target = minetest.string_to_pos(meta:get_string("player"
|
|
.. obj:get_player_name()))
|
|
|
|
if target then
|
|
|
|
obj:set_pos({x = target.x, y = target.y + 1, z = target.z})
|
|
|
|
timer_pos = {x = os.time(), y = 0, z = 0}
|
|
|
|
meta:set_string("player_timer"
|
|
.. obj:get_player_name(),
|
|
minetest.pos_to_string(timer_pos))
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
})
|