From a761c9323f0ca2f5355e411c86b82bf0ea0df882 Mon Sep 17 00:00:00 2001 From: Hugues Ross Date: Mon, 1 Jun 2020 18:10:26 -0400 Subject: [PATCH] Replace fill globalstep with timer and fix axes --- map_api.lua | 59 +++++++++++++++++++++++++---------------------------- 1 file changed, 28 insertions(+), 31 deletions(-) diff --git a/map_api.lua b/map_api.lua index 4b4819a..c23ccec 100644 --- a/map_api.lua +++ b/map_api.lua @@ -98,43 +98,40 @@ function cartographer.to_map_coordinates(map, x, z) return math.floor(tochunk(x) / map.scale + 0.5), math.floor(tochunk(z) / map.scale + 0.5); end -local timer = 0; -minetest.register_globalstep(function(dt) - -- TODO: We need a better way to do this. minetest.after maybe? - timer = timer - dt; - if timer < 0 then - timer = timer + 5; +-- Periodically-called function to fill in maps and queue chunks for manual +-- scanning +local function fill_loop() + -- Fill in all player-held maps + for _,p in ipairs(minetest.get_connected_players()) do + local inventory = p:get_inventory(); + local pos = p:get_pos(); + if pos.y > -10 then + for i = 1,inventory:get_size("main") do + local stack = inventory:get_stack("main", i); - -- Fill in all player-held maps - for _,p in ipairs(minetest.get_connected_players()) do - local inventory = p:get_inventory(); - local pos = p:get_pos(); - if pos.y > -10 then - for i = 1,inventory:get_size("main") do - local stack = inventory:get_stack("main", i); - - if stack:get_name() == "cartographer:map" then - cartographer.fill_local(stack:get_meta():get_int("cartographer:map_id"), pos.x, pos.y); - end + if stack:get_name() == "cartographer:map" then + cartographer.fill_local(stack:get_meta():get_int("cartographer:map_id"), pos.x, pos.z); end - for i = -2,2 do - for j = -2,2 do - local adjusted_pos = { - x = pos.x + fromchunk(i), - y = pos.y, - z = pos.z + fromchunk(j), - } - cartographer.queue_region(adjusted_pos); - end + end + for i = -2,2 do + for j = -2,2 do + local adjusted_pos = { + x = pos.x + fromchunk(i), + y = pos.y, + z = pos.z + fromchunk(j), + } + cartographer.queue_region(adjusted_pos); end end end - - for i = 1,10 do - cartographer.scan_regions(); - end end -end) + + for _ = 1,10 do + cartographer.scan_regions(); + end + minetest.after(5, fill_loop); +end +minetest.after(5, fill_loop); -- Register a biome with textures to display -- name: A string containing the biome name