utils.lua 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. function skywars.print_error(pl_name, msg)
  2. minetest.chat_send_player(pl_name, minetest.colorize("#e6482e", skywars_settings.prefix .. msg))
  3. end
  4. function skywars.print_msg(pl_name, msg)
  5. minetest.chat_send_player(pl_name, skywars_settings.prefix .. msg)
  6. end
  7. function skywars.get_arena_by_pos(pos)
  8. for i, arena in pairs(arena_lib.mods["skywars"].arenas) do
  9. if arena.min_pos.x == nil or arena.max_pos.x == nil then goto continue end
  10. skywars.reorder_positions(arena.min_pos, arena.max_pos)
  11. local map_area = VoxelArea:new{MinEdge = arena.min_pos, MaxEdge = arena.max_pos}
  12. if map_area:contains(pos.x, pos.y, pos.z) then
  13. return arena
  14. end
  15. ::continue::
  16. end
  17. end
  18. -- Reordering the corners positions so that min_pos is smaller than max_pos.
  19. function skywars.reorder_positions(min_pos, max_pos)
  20. local temp
  21. if min_pos.z > max_pos.z then
  22. temp = min_pos.z
  23. min_pos.z = max_pos.z
  24. max_pos.z = temp
  25. end
  26. if min_pos.y > max_pos.y then
  27. temp = min_pos.y
  28. min_pos.y = max_pos.y
  29. max_pos.y = temp
  30. end
  31. if min_pos.x > max_pos.x then
  32. temp = min_pos.x
  33. min_pos.x = max_pos.x
  34. max_pos.x = temp
  35. end
  36. return min_pos, max_pos
  37. end