+ Fixed get_arena_by_pos and moved some functions into init.lua

master
Giov4 2020-10-22 12:23:32 +02:00
parent 2d66094a01
commit 3dfb97eab8
3 changed files with 50 additions and 49 deletions

View File

@ -1,24 +1,6 @@
-- reordering the corners positions so that pos1 is smaller than pos2
local function reorder_positions() end
local function save_block() end
function skywars.get_arena_by_pos(pos)
for i, arena in pairs(arena_lib.mods["skywars"].arenas) do
if arena.pos1.x == nil or arena.pos2.x == nil then goto continue end
local map_area = VoxelArea:new{MinEdge = arena.pos1, MaxEdge = arena.pos2}
if map_area:contains(pos.x, pos.y, pos.z) then
return arena
end
::continue::
end
end
function skywars.load_map_mapblocks(arena)
minetest.load_area(arena.pos1, arena.pos2)
minetest.emerge_area(arena.pos1, arena.pos2)
@ -118,35 +100,6 @@ end
-- reordering the corners positions so that pos1 is smaller than pos2
function reorder_positions(pos1, pos2)
local temp
if pos1.z > pos2.z then
temp = pos1.z
pos1.z = pos2.z
pos2.z = temp
end
if pos1.y > pos2.y then
temp = pos1.y
pos1.y = pos2.y
pos2.y = temp
end
if pos1.x > pos2.x then
temp = pos1.x
pos1.x = pos2.x
pos2.x = temp
end
return pos1, pos2
end
function save_block(arena, pos, node)
local maps = skywars.load_maps()
local serialized_pos = minetest.serialize(pos)

View File

@ -436,7 +436,7 @@ function(cmd)
cmd:sub("inspect", function(sender)
local arena, arena_name = get_valid_arena("@", sender, true)
local arena, arena_name = get_valid_arena("@", sender)
local found = false
local pos = get_looking_node_pos(sender)
@ -773,7 +773,6 @@ function(cmd)
arena_lib.change_arena_property(sender, "skywars", arena.name, "pos1", arena.pos1)
skywars.print_msg(sender, skywars.T("Position saved!"))
end)

View File

@ -60,4 +60,53 @@ end
function skywars.print_msg(player, msg)
minetest.chat_send_player(player, skywars_settings.prefix .. msg)
end
function skywars.get_arena_by_pos(pos)
for i, arena in pairs(arena_lib.mods["skywars"].arenas) do
if arena.pos1.x == nil or arena.pos2.x == nil then
minetest.log("Arena " .. arena.name .. " corners not set")
goto continue
end
reorder_positions(arena.pos1, arena.pos2)
local map_area = VoxelArea:new{MinEdge = arena.pos1, MaxEdge = arena.pos2}
minetest.log("Arena " .. arena.name .. " corners: " .. minetest.pos_to_string(arena.pos1, 1) .. " " .. minetest.pos_to_string(arena.pos2, 1))
if map_area:contains(pos.x, pos.y, pos.z) then
return arena
end
::continue::
end
end
-- reordering the corners positions so that pos1 is smaller than pos2
function reorder_positions(pos1, pos2)
local temp
if pos1.z > pos2.z then
temp = pos1.z
pos1.z = pos2.z
pos2.z = temp
end
if pos1.y > pos2.y then
temp = pos1.y
pos1.y = pos2.y
pos2.y = temp
end
if pos1.x > pos2.x then
temp = pos1.x
pos1.x = pos2.x
pos2.x = temp
end
return pos1, pos2
end