util.lua 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. local import_mod = ...
  2. function import_mod.get_mapblock_pos(pos)
  3. return vector.floor( vector.divide(pos, 16))
  4. end
  5. function import_mod.get_mapblock(pos)
  6. return vector.floor( vector.divide(pos, 16))
  7. end
  8. function import_mod.get_chunkpos(pos)
  9. local mapblock_pos = import_mod.get_mapblock_pos(pos)
  10. local aligned_mapblock_pos = vector.add(mapblock_pos, 2)
  11. return vector.floor( vector.divide(aligned_mapblock_pos, 5) )
  12. end
  13. function import_mod.get_mapblock_bounds_from_chunk(chunk_pos)
  14. local min = vector.subtract( vector.multiply(chunk_pos, 5), 2)
  15. local max = vector.add(min, 4)
  16. return min, max
  17. end
  18. function import_mod.get_chunk_bounds(pos)
  19. local chunk_pos = import_mod.get_chunkpos(pos)
  20. local mapblock_min, mapblock_max = import_mod.get_mapblock_bounds_from_chunk(chunk_pos)
  21. local min = import_mod.get_mapblock_bounds(mapblock_min)
  22. local _, max = import_mod.get_mapblock_bounds(mapblock_max)
  23. return min, max
  24. end
  25. function import_mod.get_mapblock_bounds_from_mapblock(mapblock)
  26. local min = vector.multiply(mapblock, 16)
  27. local max = vector.add(min, 15)
  28. return min, max
  29. end
  30. function import_mod.get_mapblock_bounds(pos)
  31. local mapblock = import_mod.get_mapblock(pos)
  32. return import_mod.get_mapblock_bounds_from_mapblock(mapblock)
  33. end