Attempt to fix map on itemframe by using EliasFleckenstein changes from mcl2

This commit is contained in:
3raven 2022-05-30 13:59:49 +00:00
parent 8ccf1ae3a9
commit 8d79e5f7f7
1 changed files with 23 additions and 7 deletions

View File

@ -8,6 +8,8 @@ local map_textures_path = worldpath .. "/mcl_maps/"
local math_min = math.min
local math_max = math.max
local dynamic_add_media = minetest.dynamic_add_media
minetest.mkdir(map_textures_path)
local function load_json_file(name)
@ -144,7 +146,7 @@ end
local loading_maps = {}
function mcl_maps.load_map(id)
function mcl_maps.load_map(id, callback)
if id == "" or creating_maps[id] or loading_maps[id] then
return
end
@ -153,15 +155,29 @@ function mcl_maps.load_map(id)
if not loaded_maps[id] then
loading_maps[id] = true
minetest.dynamic_add_media({filepath = map_textures_path .. texture, ephemeral = true}, function(player_name)
if not minetest.features.dynamic_add_media_table then
-- minetest.dynamic_add_media() blocks in
-- Minetest 5.3 and 5.4 until media loads
dynamic_add_media(map_textures_path .. texture, function(player_name) end)
loaded_maps[id] = true
if callback then callback(texture) end
loading_maps[id] = nil
else
-- minetest.dynamic_add_media() never blocks
-- in Minetest 5.5, callback runs after load
dynamic_add_media(map_textures_path .. texture, function(player_name)
loaded_maps[id] = true
if callback then callback(texture) end
loading_maps[id] = nil
end)
return
end
end
if loaded_maps[id] then
if callback then callback(texture) end
return texture
end
end
function mcl_maps.load_map_item(itemstack)
return mcl_maps.load_map(itemstack:get_meta():get_string("mcl_maps:id"))