mirror of
https://github.com/minetest/minetest.git
synced 2024-11-27 01:53:45 +01:00
Deprecate modpack.txt and use modpack.conf instead (#7892)
* Deprecate modpack.txt and use modpack.conf instead
This commit is contained in:
parent
3a9fe2bd5b
commit
70bf3439ab
@ -76,10 +76,17 @@ local function start_install(calling_dialog, package)
|
|||||||
if not path then
|
if not path then
|
||||||
gamedata.errormessage = msg
|
gamedata.errormessage = msg
|
||||||
else
|
else
|
||||||
|
core.log("action", "Installed package to " .. path)
|
||||||
|
|
||||||
local conf_path
|
local conf_path
|
||||||
local name_is_title = false
|
local name_is_title = false
|
||||||
if result.package.type == "mod" then
|
if result.package.type == "mod" then
|
||||||
conf_path = path .. DIR_DELIM .. "mod.conf"
|
local actual_type = pkgmgr.get_folder_type(path)
|
||||||
|
if actual_type.type == "modpack" then
|
||||||
|
conf_path = path .. DIR_DELIM .. "modpack.conf"
|
||||||
|
else
|
||||||
|
conf_path = path .. DIR_DELIM .. "mod.conf"
|
||||||
|
end
|
||||||
elseif result.package.type == "game" then
|
elseif result.package.type == "game" then
|
||||||
conf_path = path .. DIR_DELIM .. "game.conf"
|
conf_path = path .. DIR_DELIM .. "game.conf"
|
||||||
name_is_title = true
|
name_is_title = true
|
||||||
|
@ -25,27 +25,46 @@ function get_mods(path,retval,modpack)
|
|||||||
local toadd = {}
|
local toadd = {}
|
||||||
retval[#retval + 1] = toadd
|
retval[#retval + 1] = toadd
|
||||||
|
|
||||||
local mod_conf = Settings(prefix .. DIR_DELIM .. "mod.conf"):to_table()
|
-- Get config file
|
||||||
if mod_conf.name then
|
local mod_conf
|
||||||
name = mod_conf.name
|
local modpack_conf = io.open(prefix .. DIR_DELIM .. "modpack.conf")
|
||||||
|
if modpack_conf then
|
||||||
|
toadd.is_modpack = true
|
||||||
|
modpack_conf:close()
|
||||||
|
|
||||||
|
mod_conf = Settings(prefix .. DIR_DELIM .. "modpack.conf"):to_table()
|
||||||
|
if mod_conf.name then
|
||||||
|
name = mod_conf.name
|
||||||
|
end
|
||||||
|
else
|
||||||
|
mod_conf = Settings(prefix .. DIR_DELIM .. "mod.conf"):to_table()
|
||||||
|
if mod_conf.name then
|
||||||
|
name = mod_conf.name
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Read from config
|
||||||
toadd.name = name
|
toadd.name = name
|
||||||
toadd.author = mod_conf.author
|
toadd.author = mod_conf.author
|
||||||
toadd.release = tonumber(mod_conf.release or "0")
|
toadd.release = tonumber(mod_conf.release or "0")
|
||||||
toadd.path = prefix
|
toadd.path = prefix
|
||||||
toadd.type = "mod"
|
toadd.type = "mod"
|
||||||
|
|
||||||
if modpack ~= nil and modpack ~= "" then
|
-- Check modpack.txt
|
||||||
|
-- Note: modpack.conf is already checked above
|
||||||
|
local modpackfile = io.open(prefix .. DIR_DELIM .. "modpack.txt")
|
||||||
|
if modpackfile then
|
||||||
|
modpackfile:close()
|
||||||
|
toadd.is_modpack = true
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Deal with modpack contents
|
||||||
|
if modpack and modpack ~= "" then
|
||||||
toadd.modpack = modpack
|
toadd.modpack = modpack
|
||||||
else
|
elseif toadd.is_modpack then
|
||||||
local modpackfile = io.open(prefix .. DIR_DELIM .. "modpack.txt")
|
toadd.type = "modpack"
|
||||||
if modpackfile then
|
toadd.is_modpack = true
|
||||||
modpackfile:close()
|
get_mods(prefix, retval, name)
|
||||||
toadd.type = "modpack"
|
|
||||||
toadd.is_modpack = true
|
|
||||||
get_mods(prefix, retval, name)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -114,6 +133,12 @@ function pkgmgr.get_folder_type(path)
|
|||||||
return { type = "mod", path = path }
|
return { type = "mod", path = path }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
testfile = io.open(path .. DIR_DELIM .. "modpack.conf","r")
|
||||||
|
if testfile ~= nil then
|
||||||
|
testfile:close()
|
||||||
|
return { type = "modpack", path = path }
|
||||||
|
end
|
||||||
|
|
||||||
testfile = io.open(path .. DIR_DELIM .. "modpack.txt","r")
|
testfile = io.open(path .. DIR_DELIM .. "modpack.txt","r")
|
||||||
if testfile ~= nil then
|
if testfile ~= nil then
|
||||||
testfile:close()
|
testfile:close()
|
||||||
@ -422,7 +447,7 @@ function pkgmgr.install_dir(type, path, basename, targetpath)
|
|||||||
else
|
else
|
||||||
local clean_path = nil
|
local clean_path = nil
|
||||||
if basename ~= nil then
|
if basename ~= nil then
|
||||||
clean_path = "mp_" .. basename
|
clean_path = basename
|
||||||
end
|
end
|
||||||
if not clean_path then
|
if not clean_path then
|
||||||
clean_path = get_last_folder(cleanup_path(basefolder.path))
|
clean_path = get_last_folder(cleanup_path(basefolder.path))
|
||||||
|
@ -68,8 +68,12 @@ Modpack support
|
|||||||
**NOTE: Not implemented yet.**
|
**NOTE: Not implemented yet.**
|
||||||
|
|
||||||
Mods can be put in a subdirectory, if the parent directory, which otherwise
|
Mods can be put in a subdirectory, if the parent directory, which otherwise
|
||||||
should be a mod, contains a file named `modpack.txt`. This file shall be
|
should be a mod, contains a file named `modpack.conf`.
|
||||||
empty, except for lines starting with `#`, which are comments.
|
The file is a key-value store of modpack details.
|
||||||
|
|
||||||
|
* `name`: The modpack name.
|
||||||
|
* `description`: Description of mod to be shown in the Mods tab of the main
|
||||||
|
menu.
|
||||||
|
|
||||||
Mod directory structure
|
Mod directory structure
|
||||||
------------------------
|
------------------------
|
||||||
|
@ -119,8 +119,14 @@ Modpacks
|
|||||||
--------
|
--------
|
||||||
|
|
||||||
Mods can be put in a subdirectory, if the parent directory, which otherwise
|
Mods can be put in a subdirectory, if the parent directory, which otherwise
|
||||||
should be a mod, contains a file named `modpack.txt`. This file shall be
|
should be a mod, contains a file named `modpack.conf`.
|
||||||
empty, except for lines starting with `#`, which are comments.
|
The file is a key-value store of modpack details.
|
||||||
|
|
||||||
|
* `name`: The modpack name.
|
||||||
|
* `description`: Description of mod to be shown in the Mods tab of the main
|
||||||
|
menu.
|
||||||
|
|
||||||
|
Note: to support 0.4.x, please also create an empty modpack.txt file.
|
||||||
|
|
||||||
Mod directory structure
|
Mod directory structure
|
||||||
-----------------------
|
-----------------------
|
||||||
|
@ -41,6 +41,12 @@ ContentType getContentType(const ContentSpec &spec)
|
|||||||
return ECT_MODPACK;
|
return ECT_MODPACK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::ifstream modpack2_is((spec.path + DIR_DELIM + "modpack.conf").c_str());
|
||||||
|
if (modpack2_is.good()) {
|
||||||
|
modpack2_is.close();
|
||||||
|
return ECT_MODPACK;
|
||||||
|
}
|
||||||
|
|
||||||
std::ifstream init_is((spec.path + DIR_DELIM + "init.lua").c_str());
|
std::ifstream init_is((spec.path + DIR_DELIM + "init.lua").c_str());
|
||||||
if (init_is.good()) {
|
if (init_is.good()) {
|
||||||
init_is.close();
|
init_is.close();
|
||||||
@ -73,7 +79,7 @@ void parseContentInfo(ContentSpec &spec)
|
|||||||
break;
|
break;
|
||||||
case ECT_MODPACK:
|
case ECT_MODPACK:
|
||||||
spec.type = "modpack";
|
spec.type = "modpack";
|
||||||
conf_path = spec.path + DIR_DELIM + "mod.conf";
|
conf_path = spec.path + DIR_DELIM + "modpack.conf";
|
||||||
break;
|
break;
|
||||||
case ECT_GAME:
|
case ECT_GAME:
|
||||||
spec.type = "game";
|
spec.type = "game";
|
||||||
|
@ -66,12 +66,16 @@ void parseModContents(ModSpec &spec)
|
|||||||
|
|
||||||
// Handle modpacks (defined by containing modpack.txt)
|
// Handle modpacks (defined by containing modpack.txt)
|
||||||
std::ifstream modpack_is((spec.path + DIR_DELIM + "modpack.txt").c_str());
|
std::ifstream modpack_is((spec.path + DIR_DELIM + "modpack.txt").c_str());
|
||||||
if (modpack_is.good()) { // a modpack, recursively get the mods in it
|
std::ifstream modpack2_is((spec.path + DIR_DELIM + "modpack.conf").c_str());
|
||||||
modpack_is.close(); // We don't actually need the file
|
if (modpack_is.good() || modpack2_is.good()) {
|
||||||
|
if (modpack_is.good())
|
||||||
|
modpack_is.close();
|
||||||
|
|
||||||
|
if (modpack2_is.good())
|
||||||
|
modpack2_is.close();
|
||||||
|
|
||||||
spec.is_modpack = true;
|
spec.is_modpack = true;
|
||||||
spec.modpack_content = getModsInPath(spec.path, true);
|
spec.modpack_content = getModsInPath(spec.path, true);
|
||||||
// modpacks have no dependencies; they are defined and
|
|
||||||
// tracked separately for each mod in the modpack
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// Attempt to load dependencies from mod.conf
|
// Attempt to load dependencies from mod.conf
|
||||||
|
Loading…
Reference in New Issue
Block a user