diff options
author | rubenwardy <rw@rubenwardy.com> | 2019-01-30 16:43:28 +0000 |
---|---|---|
committer | Paramat <paramat@users.noreply.github.com> | 2019-01-30 16:43:28 +0000 |
commit | 944e9f5acbac8971643553eb6e351abe362c4c17 (patch) | |
tree | 6d42bb0f5513588287b569b7e0a76786aa653328 | |
parent | d9f5ff42a1c309fde9637aed99f696c499561ddb (diff) | |
download | minetest-944e9f5acbac8971643553eb6e351abe362c4c17.tar.gz minetest-944e9f5acbac8971643553eb6e351abe362c4c17.tar.bz2 minetest-944e9f5acbac8971643553eb6e351abe362c4c17.zip |
Content store: Use composite key to track installations (#8054)
Fixes #7967 'Package manager doesn't track content reliably'.
-rw-r--r-- | builtin/mainmenu/dlg_contentstore.lua | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/builtin/mainmenu/dlg_contentstore.lua b/builtin/mainmenu/dlg_contentstore.lua index 4c9f760b2..0b3cababc 100644 --- a/builtin/mainmenu/dlg_contentstore.lua +++ b/builtin/mainmenu/dlg_contentstore.lua @@ -300,6 +300,8 @@ function store.load() package.url = base_url .. "/packages/" .. package.author .. "/" .. package.name .. "/releases/" .. package.release .. "/download/" + + package.id = package.author .. "/" .. package.name end store.packages = store.packages_full @@ -314,7 +316,7 @@ function store.update_paths() pkgmgr.refresh_globals() for _, mod in pairs(pkgmgr.global_mods:get_list()) do if mod.author then - mod_hash[mod.name] = mod + mod_hash[mod.author .. "/" .. mod.name] = mod end end @@ -322,30 +324,30 @@ function store.update_paths() pkgmgr.update_gamelist() for _, game in pairs(pkgmgr.games) do if game.author then - game_hash[game.id] = game + game_hash[game.author .. "/" .. game.id] = game end end local txp_hash = {} for _, txp in pairs(pkgmgr.get_texture_packs()) do if txp.author then - txp_hash[txp.name] = txp + txp_hash[txp.author .. "/" .. txp.name] = txp end end for _, package in pairs(store.packages_full) do local content if package.type == "mod" then - content = mod_hash[package.name] + content = mod_hash[package.id] elseif package.type == "game" then - content = game_hash[package.name] + content = game_hash[package.id] elseif package.type == "txp" then - content = txp_hash[package.name] + content = txp_hash[package.id] end - if content and content.author == package.author then + if content then package.path = content.path - package.installed_release = content.release + package.installed_release = content.release or 0 else package.path = nil end |