forked from VoxeLibre/VoxeLibre
Refactor mcl_portals
This commit is contained in:
parent
7920707ca4
commit
7a8dad991b
|
@ -1,8 +1,4 @@
|
||||||
-- Parameters
|
-- Parameters
|
||||||
|
|
||||||
local TCAVE = 0.6
|
|
||||||
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
|
||||||
|
|
||||||
|
@ -206,6 +202,17 @@ minetest.register_abm({
|
||||||
if obj:is_player() or lua_entity then
|
if obj:is_player() or lua_entity then
|
||||||
local _, dim = mcl_util.y_to_layer(pos.y)
|
local _, dim = mcl_util.y_to_layer(pos.y)
|
||||||
|
|
||||||
|
local objpos = obj:getpos()
|
||||||
|
if objpos == nil then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Check if object is actually in portal.
|
||||||
|
objpos.y = math.ceil(objpos.y)
|
||||||
|
if minetest.get_node(objpos).name ~= "mcl_portals:portal_end" then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
local target
|
local target
|
||||||
if dim == "end" then
|
if dim == "end" then
|
||||||
-- End portal in the End:
|
-- End portal in the End:
|
||||||
|
@ -228,24 +235,12 @@ minetest.register_abm({
|
||||||
-- 5×5 obsidian platform below.
|
-- 5×5 obsidian platform below.
|
||||||
|
|
||||||
local platform_pos = mcl_vars.mg_end_platform_pos
|
local platform_pos = mcl_vars.mg_end_platform_pos
|
||||||
|
|
||||||
-- force emerge of target1 area
|
-- force emerge of target1 area
|
||||||
minetest.get_voxel_manip():read_from_map(platform_pos, platform_pos)
|
minetest.get_voxel_manip():read_from_map(platform_pos, platform_pos)
|
||||||
if not minetest.get_node_or_nil(platform_pos) then
|
if not minetest.get_node_or_nil(platform_pos) then
|
||||||
minetest.emerge_area(vector.subtract(platform_pos, 3), vector.add(platform_pos, 3))
|
minetest.emerge_area(vector.subtract(platform_pos, 3), vector.add(platform_pos, 3))
|
||||||
end
|
end
|
||||||
|
|
||||||
local objpos = obj:getpos()
|
|
||||||
if objpos == nil then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
-- If player stands, player is at ca. something+0.5
|
|
||||||
-- which might cause precision problems, so we used ceil.
|
|
||||||
objpos.y = math.ceil(objpos.y)
|
|
||||||
if minetest.get_node(objpos).name ~= "mcl_portals:portal_end" then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Build destination
|
-- Build destination
|
||||||
local function check_and_build_end_portal_destination(pos)
|
local function check_and_build_end_portal_destination(pos)
|
||||||
local n = minetest.get_node_or_nil(pos)
|
local n = minetest.get_node_or_nil(pos)
|
||||||
|
|
Loading…
Reference in New Issue