diff --git a/hang_emerge_fix/init.lua b/hang_emerge_fix/init.lua new file mode 100644 index 0000000..90b29a8 --- /dev/null +++ b/hang_emerge_fix/init.lua @@ -0,0 +1,20 @@ +local minetest_emerge_area = minetest.emerge_area +minetest.emerge_area = function(minp, maxp, ...) + if + minp.x >= 32767 or minp.x <= -32768 or + minp.y >= 32767 or minp.y <= -32768 or + minp.z >= 32767 or minp.z <= -32768 or + maxp.x >= 32767 or maxp.x <= -32768 or + maxp.y >= 32767 or maxp.y <= -32768 or + maxp.z >= 32767 or maxp.z <= -32768 + then + minetest.log( + "warning", + "minetest.emerge_area() called with coords outside interval (-32768, 32767), skipping: " .. + "minp { x=" .. minp.x .. ", y=" .. minp.y .. " z=" .. minp.z .. " } " .. + "maxp { x=" .. maxp.x .. ", y=" .. maxp.y .. " z=" .. maxp.z .. " } " + ) + else + return minetest.emerge_area(minp, maxp, ...) + end +end diff --git a/hang_emerge_fix/mod.conf b/hang_emerge_fix/mod.conf new file mode 100644 index 0000000..8f098eb --- /dev/null +++ b/hang_emerge_fix/mod.conf @@ -0,0 +1,2 @@ +name = hang_emerge_fix +description = Fix for minetest.emerge_area() hang