diff --git a/generateFabric.py b/generateFabric.py index 5ef3458..a92d61c 100755 --- a/generateFabric.py +++ b/generateFabric.py @@ -6,10 +6,17 @@ import os, copy # turn loader versions into packages -loaderRecommended = [] -loaderVersions = [] -intermediaryRecommended = [] -intermediaryVersions = [] +loaderRecommended = {} +loaderVersions = {} +intermediaryRecommended = {} +intermediaryVersions = {} +kinds = ["fabricmc","legacy-fabric"] +for i in kinds: + i = i.replace("-", "") + loaderRecommended[i] = [] + loaderVersions[i] = [] + intermediaryRecommended[i] = [] + intermediaryVersions[i] = [] def mkdirs(path): if not os.path.exists(path): @@ -18,18 +25,21 @@ def mkdirs(path): mkdirs("multimc/net.fabricmc.fabric-loader") mkdirs("multimc/net.fabricmc.intermediary") +mkdirs("multimc/net.legacyfabric.fabric-loader") +mkdirs("multimc/net.legacyfabric.intermediary") + def loadJarInfo(mavenKey): with open("upstream/fabric/jars/" + mavenKey.replace(":", ".") + ".json", 'r', encoding='utf-8') as jarInfoFile: return FabricJarInfo(json.load(jarInfoFile)) -def processLoaderVersion(loaderVersion, it, loaderData): +def processLoaderVersion(loaderVersion, it, loaderData, kind): verStable = it["stable"] if (len(loaderRecommended) < 1) and verStable: - loaderRecommended.append(loaderVersion) + loaderRecommended[kind].append(loaderVersion) versionJarInfo = loadJarInfo(it["maven"]) - version = MultiMCVersionFile(name="Fabric Loader", uid="net.fabricmc.fabric-loader", version=loaderVersion) + version = MultiMCVersionFile(name="Fabric Loader", uid="net." + kind + ".fabric-loader", version=loaderVersion) version.releaseTime = versionJarInfo.releaseTime - version.requires = [DependencyEntry(uid='net.fabricmc.intermediary')] + version.requires = [DependencyEntry(uid='net." + kind " .intermediary')] version.order = 10 version.type = "release" if isinstance(loaderData.mainClass, dict): @@ -39,58 +49,65 @@ def processLoaderVersion(loaderVersion, it, loaderData): version.libraries = [] version.libraries.extend(loaderData.libraries.common) version.libraries.extend(loaderData.libraries.client) + + if "legacy" in kind: + version.addTraits = ["noapplet"] + loaderLib = MultiMCLibrary(name=GradleSpecifier(it["maven"]), url="https://maven.fabricmc.net") version.libraries.append(loaderLib) - loaderVersions.append(version) + loaderVersions[kind].append(version) -def processIntermediaryVersion(it): - intermediaryRecommended.append(it["version"]) +def processIntermediaryVersion(it, kind): + intermediaryRecommended[kind].append(it["version"]) versionJarInfo = loadJarInfo(it["maven"]) - version = MultiMCVersionFile(name="Intermediary Mappings", uid="net.fabricmc.intermediary", version=it["version"]) + version = MultiMCVersionFile(name="Intermediary Mappings", uid="net." + kind + ".intermediary", version=it["version"]) version.releaseTime = versionJarInfo.releaseTime version.requires = [DependencyEntry(uid='net.minecraft', equals=it["version"])] version.order = 11 version.type = "release" version.libraries = [] version.volatile = True - mappingLib = MultiMCLibrary(name=GradleSpecifier(it["maven"]), url="https://maven.fabricmc.net") + mappingLib = MultiMCLibrary(name=GradleSpecifier(it["maven"]), url="https://maven." + kind + ".net") version.libraries.append(mappingLib) - intermediaryVersions.append(version) + intermediaryVersions[kind].append(version) -with open("upstream/fabric/meta-v2/loader.json", 'r', encoding='utf-8') as loaderVersionIndexFile: - loaderVersionIndex = json.load(loaderVersionIndexFile) - for it in loaderVersionIndex: - version = it["version"] - with open("upstream/fabric/loader-installer-json/" + version + ".json", 'r', encoding='utf-8') as loaderVersionFile: - ldata = json.load(loaderVersionFile) - ldata = FabricInstallerDataV1(ldata) - processLoaderVersion(version, it, ldata) +for i in kinds: + j = i.replace("mc","") + i = i.replace("-","") + with open("upstream/" + j + "/meta-v2/loader.json", 'r', encoding='utf-8') as loaderVersionIndexFile: + loaderVersionIndex = json.load(loaderVersionIndexFile) + for it in loaderVersionIndex: + version = it["version"] + with open("upstream/fabric/loader-installer-json/" + version + ".json", 'r', encoding='utf-8') as loaderVersionFile: + ldata = json.load(loaderVersionFile) + ldata = FabricInstallerDataV1(ldata) + processLoaderVersion(version, it, ldata, i) -with open("upstream/fabric/meta-v2/intermediary.json", 'r', encoding='utf-8') as intermediaryVersionIndexFile: - intermediaryVersionIndex = json.load(intermediaryVersionIndexFile) - for it in intermediaryVersionIndex: - processIntermediaryVersion(it) + with open("upstream/" + j + "/meta-v2/intermediary.json", 'r', encoding='utf-8') as intermediaryVersionIndexFile: + intermediaryVersionIndex = json.load(intermediaryVersionIndexFile) + for it in intermediaryVersionIndex: + processIntermediaryVersion(it, i) -for version in loaderVersions: - outFilepath = "multimc/net.fabricmc.fabric-loader/%s.json" % version.version - with open(outFilepath, 'w') as outfile: - json.dump(version.to_json(), outfile, sort_keys=True, indent=4) + for version in loaderVersions[i]: + outFilepath = "multimc/net." + i + ".fabric-loader/%s.json" % version.version + with open(outFilepath, 'w') as outfile: + json.dump(version.to_json(), outfile, sort_keys=True, indent=4) -sharedData = MultiMCSharedPackageData(uid = 'net.fabricmc.fabric-loader', name = 'Fabric Loader') -sharedData.recommended = loaderRecommended -sharedData.description = "Fabric Loader is a tool to load Fabric-compatible mods in game environments." -sharedData.projectUrl = "https://fabricmc.net" -sharedData.authors = ["Fabric Developers"] -sharedData.write() + sharedData = MultiMCSharedPackageData(uid = 'net.fabricmc.fabric-loader', name = 'Fabric Loader') + sharedData.recommended = loaderRecommended + sharedData.description = "Fabric Loader is a tool to load Fabric-compatible mods in game environments." + sharedData.projectUrl = "https://fabricmc.net" + sharedData.authors = ["Fabric Developers"] + sharedData.write() -for version in intermediaryVersions: - outFilepath = "multimc/net.fabricmc.intermediary/%s.json" % version.version - with open(outFilepath, 'w') as outfile: - json.dump(version.to_json(), outfile, sort_keys=True, indent=4) + for version in intermediaryVersions: + outFilepath = "multimc/net." + i + ".intermediary/%s.json" % version.version + with open(outFilepath, 'w') as outfile: + json.dump(version.to_json(), outfile, sort_keys=True, indent=4) -sharedData = MultiMCSharedPackageData(uid = 'net.fabricmc.intermediary', name = 'Intermediary Mappings') -sharedData.recommended = intermediaryRecommended -sharedData.description = "Intermediary mappings allow using Fabric Loader with mods for Minecraft in a more compatible manner." -sharedData.projectUrl = "https://fabricmc.net" -sharedData.authors = ["Fabric Developers"] -sharedData.write() + sharedData = MultiMCSharedPackageData(uid = 'net.' + i + '.intermediary', name = 'Intermediary Mappings') + sharedData.recommended = intermediaryRecommended + sharedData.description = "Intermediary mappings allow using Fabric Loader with mods for Minecraft in a more compatible manner." + sharedData.projectUrl = "https://" + i + ".net" + sharedData.authors = ["Fabric Developers"] + sharedData.write() diff --git a/updateFabric.py b/updateFabric.py index 925fc0b..196c7ab 100755 --- a/updateFabric.py +++ b/updateFabric.py @@ -62,17 +62,21 @@ def compute_jar_file(path, url): with open(path + ".json", 'w') as outfile: json.dump(data.to_json(), outfile, sort_keys=True, indent=4) -mkdirs("upstream/fabric/meta-v2") -mkdirs("upstream/fabric/loader-installer-json") -mkdirs("upstream/fabric/jars") +for kind in ["fabricmc", "legacy-fabric"]: + i = kind.replace("mc", "") + j = kind.replace("-", "") + + mkdirs("upstream/" + i + "/meta-v2") + mkdirs("upstream/" + i + "/jars") -# get the version list for each component we are interested in -for component in ["intermediary", "loader"]: - index = get_json_file("upstream/fabric/meta-v2/" + component + ".json", "https://meta.fabricmc.net/v2/versions/" + component) - for it in index: - jarMavenUrl = get_maven_url(it["maven"], "https://maven.fabricmc.net/", ".jar") - compute_jar_file("upstream/fabric/jars/" + it["maven"].replace(":", "."), jarMavenUrl) + # get the version list for each component we are interested in + for component in ["intermediary", "loader"]: + index = get_json_file("upstream/" + i + "/meta-v2/" + component + ".json", "https://meta." + j + ".net/v2/versions/" + component) + for it in index: + jarMavenUrl = get_maven_url(it["maven"], "https://maven." + j + ".net/", ".jar") + compute_jar_file("upstream/" + i + "/jars/" + it["maven"].replace(":", "."), jarMavenUrl) +mkdirs("upstream/fabric/loader-installer-json") # for each loader, download installer JSON file from maven with open("upstream/fabric/meta-v2/loader.json", 'r', encoding='utf-8') as loaderVersionIndexFile: loaderVersionIndex = json.load(loaderVersionIndexFile)