From 8d9e46b535c8dd43f33f4c29787d733180750b79 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 21 Aug 2017 18:30:37 +0200 Subject: [PATCH] Add flat Nether; fix portals in flat world --- mods/ITEMS/mcl_portals/portal_end.lua | 13 +++++++++++-- mods/ITEMS/mcl_portals/portal_nether.lua | 11 ++++++++++- mods/MAPGEN/mcl_mapgen_core/init.lua | 6 ++++++ 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_portals/portal_end.lua b/mods/ITEMS/mcl_portals/portal_end.lua index bc26faf9..0690871a 100644 --- a/mods/ITEMS/mcl_portals/portal_end.lua +++ b/mods/ITEMS/mcl_portals/portal_end.lua @@ -6,6 +6,8 @@ local nobj_cave = nil local SPAWN_MIN = mcl_vars.mg_end_min+70 local SPAWN_MAX = mcl_vars.mg_end_min+98 +local mg_name = minetest.get_mapgen_setting("mg_name") + -- 3D noise local np_cave = { @@ -169,7 +171,10 @@ local function build_end_portal(pos, target3) minetest.remove_node(newp) end 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"}) end @@ -301,7 +306,11 @@ local function make_end_portal(pos) local target3 = {x = p1.x, y = p1.y, z = p1.z} target3.x = target3.x + 1 if target3.y < mcl_vars.mg_end_max and target3.y > mcl_vars.mg_end_min then - target3.y = math.random(mcl_vars.mg_overworld_min + 40, mcl_vars.mg_overworld_min + 96) + 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) + end else target3.y = find_end_target3_y2(target3.x, target3.z) end diff --git a/mods/ITEMS/mcl_portals/portal_nether.lua b/mods/ITEMS/mcl_portals/portal_nether.lua index 847bde85..0d99b0b2 100644 --- a/mods/ITEMS/mcl_portals/portal_nether.lua +++ b/mods/ITEMS/mcl_portals/portal_nether.lua @@ -9,6 +9,8 @@ local FRAME_SIZE_Y_MIN = 5 local FRAME_SIZE_X_MAX = 23 local FRAME_SIZE_Y_MAX = 23 +local mg_name = minetest.get_mapgen_setting("mg_name") + -- 3D noise local np_cave = { offset = 0, @@ -180,6 +182,9 @@ local function build_portal(pos, target, is_rebuilding) end 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 if not nobj_cave then 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} target.x = target.x + 1 if target.y < mcl_vars.mg_nether_max and target.y > mcl_vars.mg_nether_min then - target.y = math.random(mcl_vars.mg_overworld_min + 40, mcl_vars.mg_overworld_min + 96) + 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) + end else target.y = find_nether_target_y(target.x, target.z) end diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index 8dbb1793..39dafdb8 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -1307,9 +1307,11 @@ minetest.register_on_generated(function(minp, maxp) end end + -- Bedrock, defined above if setdata then data[p_pos] = setdata lvm_used = true + -- The void elseif mcl_util.is_in_void({x=x,y=y,z=z}) then data[p_pos] = c_void 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 data[p_pos] = c_realm_barrier 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 elseif mg_name == "v6" then if y <= mcl_vars.mg_nether_max and y >= mcl_vars.mg_nether_min then