forked from Mineclonia/Mineclonia
Add flat Nether; fix portals in flat world
This commit is contained in:
parent
2e63dd0a3d
commit
8d9e46b535
|
@ -6,6 +6,8 @@ local nobj_cave = nil
|
||||||
local SPAWN_MIN = mcl_vars.mg_end_min+70
|
local SPAWN_MIN = mcl_vars.mg_end_min+70
|
||||||
local SPAWN_MAX = mcl_vars.mg_end_min+98
|
local SPAWN_MAX = mcl_vars.mg_end_min+98
|
||||||
|
|
||||||
|
local mg_name = minetest.get_mapgen_setting("mg_name")
|
||||||
|
|
||||||
-- 3D noise
|
-- 3D noise
|
||||||
|
|
||||||
local np_cave = {
|
local np_cave = {
|
||||||
|
@ -169,7 +171,10 @@ local function build_end_portal(pos, target3)
|
||||||
minetest.remove_node(newp)
|
minetest.remove_node(newp)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if minetest.get_node(newp).name == "air" then
|
-- Build obsidian platform if floating
|
||||||
|
local newp_below = table.copy(newp)
|
||||||
|
newp_below.y = newp.y - 1
|
||||||
|
if minetest.get_node(newp).name == "air" and minetest.get_node(newp_below).name == "air" then
|
||||||
minetest.set_node(newp, {name="mcl_core:obsidian"})
|
minetest.set_node(newp, {name="mcl_core:obsidian"})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -301,7 +306,11 @@ local function make_end_portal(pos)
|
||||||
local target3 = {x = p1.x, y = p1.y, z = p1.z}
|
local target3 = {x = p1.x, y = p1.y, z = p1.z}
|
||||||
target3.x = target3.x + 1
|
target3.x = target3.x + 1
|
||||||
if target3.y < mcl_vars.mg_end_max and target3.y > mcl_vars.mg_end_min then
|
if target3.y < mcl_vars.mg_end_max and target3.y > mcl_vars.mg_end_min then
|
||||||
|
if mg_name == "flat" then
|
||||||
|
target3.y = mcl_vars.mg_bedrock_overworld_max + 5
|
||||||
|
else
|
||||||
target3.y = math.random(mcl_vars.mg_overworld_min + 40, mcl_vars.mg_overworld_min + 96)
|
target3.y = math.random(mcl_vars.mg_overworld_min + 40, mcl_vars.mg_overworld_min + 96)
|
||||||
|
end
|
||||||
else
|
else
|
||||||
target3.y = find_end_target3_y2(target3.x, target3.z)
|
target3.y = find_end_target3_y2(target3.x, target3.z)
|
||||||
end
|
end
|
||||||
|
|
|
@ -9,6 +9,8 @@ local FRAME_SIZE_Y_MIN = 5
|
||||||
local FRAME_SIZE_X_MAX = 23
|
local FRAME_SIZE_X_MAX = 23
|
||||||
local FRAME_SIZE_Y_MAX = 23
|
local FRAME_SIZE_Y_MAX = 23
|
||||||
|
|
||||||
|
local mg_name = minetest.get_mapgen_setting("mg_name")
|
||||||
|
|
||||||
-- 3D noise
|
-- 3D noise
|
||||||
local np_cave = {
|
local np_cave = {
|
||||||
offset = 0,
|
offset = 0,
|
||||||
|
@ -180,6 +182,9 @@ local function build_portal(pos, target, is_rebuilding)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function find_nether_target_y(target_x, target_z)
|
local function find_nether_target_y(target_x, target_z)
|
||||||
|
if mg_name == "flat" then
|
||||||
|
return mcl_vars.mg_bedrock_nether_bottom_max + 5
|
||||||
|
end
|
||||||
local start_y = mcl_vars.mg_nether_min + math.random(38, 117) -- Search start
|
local start_y = mcl_vars.mg_nether_min + math.random(38, 117) -- Search start
|
||||||
if not nobj_cave then
|
if not nobj_cave then
|
||||||
nobj_cave = minetest.get_perlin(np_cave)
|
nobj_cave = minetest.get_perlin(np_cave)
|
||||||
|
@ -306,7 +311,11 @@ local function make_portal(pos)
|
||||||
local target = {x = p1.x, y = p1.y, z = p1.z}
|
local target = {x = p1.x, y = p1.y, z = p1.z}
|
||||||
target.x = target.x + 1
|
target.x = target.x + 1
|
||||||
if target.y < mcl_vars.mg_nether_max and target.y > mcl_vars.mg_nether_min then
|
if target.y < mcl_vars.mg_nether_max and target.y > mcl_vars.mg_nether_min then
|
||||||
|
if mg_name == "flat" then
|
||||||
|
target.y = mcl_vars.mg_bedrock_overworld_max + 5
|
||||||
|
else
|
||||||
target.y = math.random(mcl_vars.mg_overworld_min + 40, mcl_vars.mg_overworld_min + 96)
|
target.y = math.random(mcl_vars.mg_overworld_min + 40, mcl_vars.mg_overworld_min + 96)
|
||||||
|
end
|
||||||
else
|
else
|
||||||
target.y = find_nether_target_y(target.x, target.z)
|
target.y = find_nether_target_y(target.x, target.z)
|
||||||
end
|
end
|
||||||
|
|
|
@ -1307,9 +1307,11 @@ minetest.register_on_generated(function(minp, maxp)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Bedrock, defined above
|
||||||
if setdata then
|
if setdata then
|
||||||
data[p_pos] = setdata
|
data[p_pos] = setdata
|
||||||
lvm_used = true
|
lvm_used = true
|
||||||
|
-- The void
|
||||||
elseif mcl_util.is_in_void({x=x,y=y,z=z}) then
|
elseif mcl_util.is_in_void({x=x,y=y,z=z}) then
|
||||||
data[p_pos] = c_void
|
data[p_pos] = c_void
|
||||||
lvm_used = true
|
lvm_used = true
|
||||||
|
@ -1341,6 +1343,10 @@ minetest.register_on_generated(function(minp, maxp)
|
||||||
elseif y >= mcl_vars.mg_realm_barrier_overworld_end_min and y <= mcl_vars.mg_realm_barrier_overworld_end_max then
|
elseif y >= mcl_vars.mg_realm_barrier_overworld_end_min and y <= mcl_vars.mg_realm_barrier_overworld_end_max then
|
||||||
data[p_pos] = c_realm_barrier
|
data[p_pos] = c_realm_barrier
|
||||||
lvm_used = true
|
lvm_used = true
|
||||||
|
-- Flat Nether
|
||||||
|
elseif mg_name == "flat" and y >= mcl_vars.mg_bedrock_nether_bottom_max + 4 and y <= mcl_vars.mg_bedrock_nether_bottom_max + 52 then
|
||||||
|
data[p_pos] = c_air
|
||||||
|
lvm_used = true
|
||||||
-- Nether and End support for v6 because v6 does not support the biomes API
|
-- Nether and End support for v6 because v6 does not support the biomes API
|
||||||
elseif mg_name == "v6" then
|
elseif mg_name == "v6" then
|
||||||
if y <= mcl_vars.mg_nether_max and y >= mcl_vars.mg_nether_min then
|
if y <= mcl_vars.mg_nether_max and y >= mcl_vars.mg_nether_min then
|
||||||
|
|
Loading…
Reference in New Issue