Download libraries and natives

This commit is contained in:
Fierelier 2021-03-29 07:51:39 +02:00
parent c81275856a
commit 85ed5326c2

View File

@ -118,10 +118,21 @@ def processVersion(versionsPath,libraryPath,nativePath,version):
for library in clientJson["libraries"]: for library in clientJson["libraries"]:
if "downloads" in library: if "downloads" in library:
# Libraries
if "artifact" in library["downloads"]: if "artifact" in library["downloads"]:
library["downloads"]["artifact"]["path"] = library["downloads"]["artifact"]["path"].replace("/",os.path.sep) library["downloads"]["artifact"]["path"] = library["downloads"]["artifact"]["path"].replace("/",os.path.sep)
libraries.append(p(libraryPath,library["downloads"]["artifact"]["path"])) libraries.append(p(libraryPath,library["downloads"]["artifact"]["path"]))
if "url" in library["downloads"]["artifact"] and library["downloads"]["artifact"]["url"] != "":
downloadLibraries[p(libraryPath,library["downloads"]["artifact"]["path"])] = library["downloads"]["artifact"]["url"]
# Natives
if "classifiers" in library["downloads"]: if "classifiers" in library["downloads"]:
for classifier in library["downloads"]["classifiers"]:
native = library["downloads"]["classifiers"][classifier]
native["path"] = native["path"].replace("/",os.path.sep)
if "url" in native and native["url"] != "":
downloadLibraries[p(nativePath,native["path"])] = native["url"]
native = False native = False
if "natives-" +lv["osName"] in library["downloads"]["classifiers"]: if "natives-" +lv["osName"] in library["downloads"]["classifiers"]:
native = library["downloads"]["classifiers"]["natives-" +lv["osName"]] native = library["downloads"]["classifiers"]["natives-" +lv["osName"]]
@ -130,10 +141,9 @@ def processVersion(versionsPath,libraryPath,nativePath,version):
native = library["downloads"]["classifiers"]["natives-osx"] native = library["downloads"]["classifiers"]["natives-osx"]
if native != False: if native != False:
native["path"] = native["path"].replace("/",os.path.sep)
natives.append(p(nativePath,native["path"])) natives.append(p(nativePath,native["path"]))
elif "name" in library: elif "name" in library:
#net.fabricmc:sponge-mixin:0.9.2+mixin.0.8.2 # Stupid libraries
libSplit = library["name"].rsplit(":",1) libSplit = library["name"].rsplit(":",1)
libVersion = libSplit[1] libVersion = libSplit[1]
libName = libSplit[0].rsplit(":",1)[1] libName = libSplit[0].rsplit(":",1)[1]
@ -147,7 +157,7 @@ def processVersion(versionsPath,libraryPath,nativePath,version):
fullUrl = fullUrl + "/" + libPath fullUrl = fullUrl + "/" + libPath
downloadLibraries[p(libraryPath,library["path"])] = fullUrl downloadLibraries[p(libraryPath,library["path"])] = fullUrl
libraries.append(p(versionPath,version + ".jar")) if os.path.isfile(p(versionPath,version + ".jar")): libraries.append(p(versionPath,version + ".jar"))
if "arguments" in clientJson: if "arguments" in clientJson:
for arg in clientJson["arguments"]["game"]: for arg in clientJson["arguments"]["game"]:
@ -215,11 +225,18 @@ def main():
if lv["osName"] != "windows": separator = ":" if lv["osName"] != "windows": separator = ":"
libraryList = separator.join(libraries) libraryList = separator.join(libraries)
print("Downloading libraries...") print("\nLibraries:")
for library in libraries:
print("- " +library)
print("\nDownloading libraries...")
for library in downloadLibraries: for library in downloadLibraries:
fileDl(downloadLibraries[library],library,read = False) fileDl(downloadLibraries[library],library,read = False)
print("Extracting natives...") for library in libraries:
if not os.path.isfile(library): print("Warning, missing lib: " +library)
print("\nExtracting natives...")
if not os.path.isdir(nativesOutPath): os.makedirs(nativesOutPath) if not os.path.isdir(nativesOutPath): os.makedirs(nativesOutPath)
for native in natives: for native in natives:
subprocess.run(["7z","x",native,"-o" +nativesOutPath,"-aos"],check=True,stdout=subprocess.DEVNULL) subprocess.run(["7z","x",native,"-o" +nativesOutPath,"-aos"],check=True,stdout=subprocess.DEVNULL)
@ -250,7 +267,7 @@ def main():
arg = arg.replace("${" +var+ "}",launcherVariables[var]) arg = arg.replace("${" +var+ "}",launcherVariables[var])
args.append(arg) args.append(arg)
print("Launching Minecraft...") print("\nLaunching Minecraft...")
if lv["console"] == "1": if lv["console"] == "1":
subprocess.run([lv["java"]] + args,check = True) subprocess.run([lv["java"]] + args,check = True)
else: else: