* add compatibilty backguard for minetest older engines 0.4.15+ to 4.0.X
* also detect loop optimization on newer ones to future reduce of lag
  so we can leave the older list of minerals be into a some pile of nodes
* fixed part of https://notabug.org/TenPlus1/nssb/issues/2
  a complete fix will need a configuration flag to let some ore on generation
* reason: optimized ore generation by removing iterations and using stratum feature
  as note this feature are only from 5.0 as documented and check in
  9f6d90aa81
  this was a good move by tenplus cos works as a unique plain layer due
  creates single undulating ore stratum that is continuous across mapchunk
  borders and horizontally spans the world, as a layer..
  the ore type its used only on the generation of the space of the 7 layers
  that defines the morlendor space, before and after there are indestructible ones
* then: make a loop for but if a 5.0 engine its detected break and
  do not loop innecesary, only loop and do scatter ore type for older engine
  so if newer one break loop and do stratum ore type generation for layers
* fix and close https://codeberg.org/minenux/minetest-mod-nssb/issues/3
* fix and close https://notabug.org/TenPlus1/nssb/issues/2
This commit is contained in:
Герхард PICCORO Lenz McKAY 2022-07-26 20:55:49 -04:00
commit f3270cdbc3
2 changed files with 50 additions and 45 deletions

View File

@ -2,6 +2,8 @@ nssb = {}
local path = minetest.get_modpath("nssb") local path = minetest.get_modpath("nssb")
nssb.is_50 = minetest.has_feature("object_use_texture_alpha") or nil
dofile(path .. "/nodes.lua") dofile(path .. "/nodes.lua")
dofile(path .. "/mapgen.lua") dofile(path .. "/mapgen.lua")
dofile(path .. "/spawn.lua") dofile(path .. "/spawn.lua")

View File

@ -1,7 +1,7 @@
local moreores = minetest.get_modpath("moreores") local moreores = minetest.get_modpath("moreores")
local is_50 = nssb.is_50
nssb.mymapgenis = tonumber(minetest.settings:get("mymapgenis")) or 7 nssb.mymapgenis = tonumber(minetest.settings:get("mymapgenis")) or 7
if nssb.mymapgenis ~= 6 and nssb.mymapgenis ~= 7 then if nssb.mymapgenis ~= 6 and nssb.mymapgenis ~= 7 then
nssb.mymapgenis = 7 nssb.mymapgenis = 7
end end
@ -15,6 +15,14 @@ local posplace = {x = 0, y = level - 93, z = 0}
local posmemory = {x = 0, y = level - 92, z = 0} local posmemory = {x = 0, y = level - 92, z = 0}
local postest = {x = 5, y = level - 91, z = 6} local postest = {x = 5, y = level - 91, z = 6}
-- ore type generation
local oretype_morlan_layer
if is_50 then
oretype_morlan_layer = "stratum"
else
oretype_morlan_layer = "scatter"
end
function nssb_register_buildings( function nssb_register_buildings(
build, -- name of the schematic build, -- name of the schematic
rand, -- 1/rand is the probability of the spawning of the schematic if the place found is acceptable rand, -- 1/rand is the probability of the spawning of the schematic if the place found is acceptable
@ -362,11 +370,9 @@ nssb_register_buildings ("blocobiggesthouse", 4, "default:stone", 0, "air", 0,
-- This dimension is "divided" in in 7 layer. -- This dimension is "divided" in in 7 layer.
-- 1st layer is indistructible, made of indistructible morentir -- 1st layer is indistructible, made of indistructible morentir
-- for i = 1, 9 do for i = 1, 9 do
minetest.register_ore({ minetest.register_ore({
--ore_type = "scatter", ore_type = oretype_morlan_layer,
ore_type = "stratum",
ore = "nssb:indistructible_morentir", ore = "nssb:indistructible_morentir",
wherein = { wherein = {
"default:water_source","default:water_flowing","default:gravel", "default:water_source","default:water_flowing","default:gravel",
@ -388,15 +394,15 @@ nssb_register_buildings ("blocobiggesthouse", 4, "default:stone", 0, "air", 0,
y_min = level - 44, y_min = level - 44,
y_max = level - 37 y_max = level - 37
}) })
-- end if is_50 then break end
end
--[[ --[[
if moreores then if moreores then
for i = 1, 9 do for i = 1, 9 do
minetest.register_ore({ minetest.register_ore({
ore_type = "scatter", ore_type = oretype_morlan_layer,
ore = "nssb:indistructible_morentir", ore = "nssb:indistructible_morentir",
wherein = { wherein = {
"moreores:mineral_tin", "moreores:mineral_silver", "moreores:mineral_tin", "moreores:mineral_silver",
@ -409,18 +415,16 @@ if moreores then
y_max = level - 37 y_max = level - 37
}) })
end end
if is_50 then break end
end end
]] ]]
-- 2nd layer is "stalagmitic", have bats and morelentir -- 2nd layer is "stalagmitic", have bats and morelentir
local function replace2(old, new) local function replace2(old, new)
for i = 1, 9 do
-- for i = 1, 9 do
minetest.register_ore({ minetest.register_ore({
-- ore_type = "scatter", ore_type = oretype_morlan_layer,
ore_type = "stratum",
ore = new, ore = new,
wherein = old, wherein = old,
clust_scarcity = 1, clust_scarcity = 1,
@ -429,7 +433,8 @@ local function replace2(old, new)
y_min = level - 65, y_min = level - 65,
y_max = level - 45 y_max = level - 45
}) })
-- end if is_50 then break end
end
end end
-- optimized list -- optimized list
@ -493,7 +498,6 @@ minetest.register_ore({
}) })
for i = 1, 3 do for i = 1, 3 do
minetest.register_ore({ minetest.register_ore({
ore_type = "scatter", ore_type = "scatter",
ore = "air", ore = "air",
@ -504,15 +508,14 @@ for i = 1, 3 do
y_min = level - 66, y_min = level - 66,
y_max = level - 58 y_max = level - 58
}) })
if is_50 then break end
end end
-- 3rd layer is made by air -- 3rd layer is made by air
--for i = 1, 32 do for i = 1, 32 do
minetest.register_ore({ minetest.register_ore({
--ore_type = "scatter", ore_type = oretype_morlan_layer,
ore_type = "stratum",
ore = "air", ore = "air",
wherein = { wherein = {
"nssb:ant_dirt", "default:stone", "default:cobble", "default:stonebrick", "nssb:ant_dirt", "default:stone", "default:cobble", "default:stonebrick",
@ -533,15 +536,15 @@ end
y_min = level - 93, y_min = level - 93,
y_max = level - 66 y_max = level - 66
}) })
--end if is_50 then break end
end
--[[ --[[
if moreores then if moreores then
for i = 1, 9 do for i = 1, 9 do
minetest.register_ore({ minetest.register_ore({
ore_type = "scatter", ore_type = oretype_morlan_layer,
ore = "air", ore = "air",
wherein = { wherein = {
"moreores:mineral_tin", "moreores:mineral_silver", "moreores:mineral_tin", "moreores:mineral_silver",
@ -553,6 +556,7 @@ if moreores then
y_min = level - 93, y_min = level - 93,
y_max = level - 66 y_max = level - 66
}) })
if is_50 then break end
end end
end end
]] ]]
@ -694,11 +698,9 @@ minetest.register_ore({
local function replace4(old, new) local function replace4(old, new)
-- for i = 1, 9 do for i = 1, 9 do
minetest.register_ore({ minetest.register_ore({
--ore_type = "scatter", ore_type = oretype_morlan_layer,
ore_type = "stratum",
ore = new, ore = new,
wherein = old, wherein = old,
clust_scarcity = 1, clust_scarcity = 1,
@ -707,7 +709,8 @@ local function replace4(old, new)
y_min = level - 107, y_min = level - 107,
y_max = level - 94 y_max = level - 94
}) })
-- end if is_50 then break end
end
end end
-- optimized list -- optimized list
@ -790,11 +793,9 @@ minetest.register_ore({
local function replace5(old, new) local function replace5(old, new)
-- for i = 1, 9 do for i = 1, 9 do
minetest.register_ore({ minetest.register_ore({
-- ore_type = "scatter", ore_type = oretype_morlan_layer,
ore_type = "stratum",
ore = new, ore = new,
wherein = old, wherein = old,
clust_scarcity = 1, clust_scarcity = 1,
@ -803,7 +804,8 @@ local function replace5(old, new)
y_min = level - 156, y_min = level - 156,
y_max = level - 108 y_max = level - 108
}) })
-- end if is_50 then break end
end
end end
minetest.register_ore({ minetest.register_ore({
@ -874,11 +876,10 @@ end
local function replace6(old, new) local function replace6(old, new)
-- for i = 1, 9 do for i = 1, 9 do
minetest.register_ore({ minetest.register_ore({
-- ore_type = "scatter", ore_type = oretype_morlan_layer,
ore_type = "stratum",
ore = new, ore = new,
wherein = old, wherein = old,
clust_scarcity = 1, clust_scarcity = 1,
@ -887,7 +888,8 @@ local function replace6(old, new)
y_min = level - 205, y_min = level - 205,
y_max = level - 157 y_max = level - 157
}) })
-- end if is_50 then break end
end
end end
-- optimized list -- optimized list
@ -948,11 +950,10 @@ minetest.register_ore({
-- 7th layer is indistructible -- 7th layer is indistructible
-- for i = 1, 9 do for i = 1, 9 do
minetest.register_ore({ minetest.register_ore({
-- ore_type = "scatter", ore_type = oretype_morlan_layer,
ore_type = "stratum",
ore = "nssb:indistructible_morentir", ore = "nssb:indistructible_morentir",
wherein = { wherein = {
"nssb:ant_dirt", "default:stone", "default:cobble", "default:stonebrick", "nssb:ant_dirt", "default:stone", "default:cobble", "default:stonebrick",
@ -972,7 +973,8 @@ minetest.register_ore({
y_min = level - 213, y_min = level - 213,
y_max = level - 206 y_max = level - 206
}) })
-- end if is_50 then break end
end
--[[ --[[
if moreores then if moreores then
@ -980,7 +982,7 @@ if moreores then
for i = 1, 9 do for i = 1, 9 do
minetest.register_ore({ minetest.register_ore({
ore_type = "scatter", ore_type = oretype_morlan_layer,
ore = "nssb:indistructible_morentir", ore = "nssb:indistructible_morentir",
wherein = { wherein = {
"moreores:mineral_tin", "moreores:mineral_silver", "moreores:mineral_tin", "moreores:mineral_silver",
@ -992,15 +994,15 @@ if moreores then
y_min = level - 213, y_min = level - 213,
y_max = level - 206 y_max = level - 206
}) })
if is_50 then break end
end end
end end
]] ]]
-- for i = 1, 12 do for i = 1, 12 do
minetest.register_ore({ minetest.register_ore({
-- ore_type = "scatter", ore_type = oretype_morlan_layer,
ore_type = "stratum",
ore = "air", ore = "air",
wherein = { wherein = {
"default:water_source", "default:water_flowing", "default:lava_source", "default:water_source", "default:water_flowing", "default:lava_source",
@ -1012,7 +1014,8 @@ end
y_min = level - 207, y_min = level - 207,
y_max = level - 45 y_max = level - 45
}) })
-- end if is_50 then break end
end
-- Place the buildings in the morlendor -- Place the buildings in the morlendor