From 918f5c442ac6b720300194863d084932841780d0 Mon Sep 17 00:00:00 2001 From: BowDown097 <42720004+BowDown097@users.noreply.github.com> Date: Mon, 24 Oct 2022 17:33:48 -0700 Subject: [PATCH 1/3] Create generateOmniArchive.py This probably works --- generateOmniArchive.py | 80 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 generateOmniArchive.py diff --git a/generateOmniArchive.py b/generateOmniArchive.py new file mode 100644 index 0000000..9fdb03e --- /dev/null +++ b/generateOmniArchive.py @@ -0,0 +1,80 @@ +# important that this runs *AFTER* any mojang server-related scripts. it depends on normal launcher files already being there +import hashlib +import json +import os +from urllib.request import urlopen + +from meta.common import ensure_component_dir, polymc_path +from meta.common.mojang import MINECRAFT_COMPONENT + +PMC_DIR = polymc_path() +ensure_component_dir(MINECRAFT_COMPONENT) + +net_minecraft_files = os.listdir(os.path.join(PMC_DIR, MINECRAFT_COMPONENT)) + +def gen_compatible_meta_obj(version_meta): + out = { + "+jvmArgs": [ + "-Dhttp.proxyHost=betacraft.uk", + "-Djava.util.Arrays.useLegacyMergeSort=true" + ], + "assetIndex": version_meta["assetIndex"], + "compatibleJavaMajors": [8], + "formatVersion": 1, + "mainClass": version_meta["mainClass"], + "mainJar": { + "downloads": { + "artifact": version_meta["downloads"]["client"] + }, + "name": f"com.mojang.minecraft:{meta_id}:client" + }, + "name": "Minecraft", + "omni": True, + "order": -2, + "releaseTime": version_meta["releaseTime"], + "requires": [ + { + "suggests": "2.9.4-nightly-20150209", + "uid": "org.lwjgl" + } + ], + "type": version_meta["type"], + "uid": "net.minecraft", + "version": meta_id + } + + # assign proper traits depending on version type + if version_meta["type"] == "old_alpha": + out["+traits"] = ["legacyLaunch", "no-texturepacks"] + elif version_meta["type"] == "old_beta": + out["+traits"] = ["legacyLaunch", "texturepacks"] + + # need launchwrapper and jopt libraries for these versions to run + out["libraries"] = [] + for library in version_meta["libraries"]: + if "launchwrapper" in library["name"] or "jopt" in library["name"]: + out["libraries"].append(library) + + return out + +with urlopen("https://raw.githubusercontent.com/skyrising/mc-versions/main/data/version_manifest.json") as ver_man_req: + version_manifest = json.loads(ver_man_req.read()) + for version in version_manifest["versions"]: + meta_id = version["id"] + meta_filename = meta_id + ".json" + + # skip server versions and versions that are already there + if meta_id.startswith("server") or meta_filename in net_minecraft_files: + continue + + print(f"Found OmniArchive version {meta_id}") + meta_url = version["url"] + with urlopen(f"https://skyrising.github.io/mc-versions/{meta_url}") as ver_meta_req: + version_meta = json.loads(ver_meta_req.read()) + # some server versions don't start with "server" for some reason, but they all don't have assetIndex + if "assetIndex" not in version_meta: + continue + + meta_obj = gen_compatible_meta_obj(version_meta) + with open(os.path.join(PMC_DIR, MINECRAFT_COMPONENT, meta_filename), "wt") as meta_json_file: + meta_json_file.write(json.dumps(meta_obj, indent=4)) From 4e1def6b00b7888a53bb20580375a5f631f67c1d Mon Sep 17 00:00:00 2001 From: BowDown097 <42720004+BowDown097@users.noreply.github.com> Date: Mon, 24 Oct 2022 17:42:20 -0700 Subject: [PATCH 2/3] Remove unused import --- generateOmniArchive.py | 1 - 1 file changed, 1 deletion(-) diff --git a/generateOmniArchive.py b/generateOmniArchive.py index 9fdb03e..97537d4 100644 --- a/generateOmniArchive.py +++ b/generateOmniArchive.py @@ -1,5 +1,4 @@ # important that this runs *AFTER* any mojang server-related scripts. it depends on normal launcher files already being there -import hashlib import json import os from urllib.request import urlopen From 2066ee5fb3ba3b674167ed226691a701b3f82d49 Mon Sep 17 00:00:00 2001 From: BowDown097 <42720004+BowDown097@users.noreply.github.com> Date: Fri, 25 Nov 2022 07:50:46 -0800 Subject: [PATCH 3/3] OmniArchive: Changes to meta object generation This should hopefully allow more versions to run --- generateOmniArchive.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/generateOmniArchive.py b/generateOmniArchive.py index 97537d4..f524a61 100644 --- a/generateOmniArchive.py +++ b/generateOmniArchive.py @@ -13,10 +13,6 @@ def gen_compatible_meta_obj(version_meta): out = { - "+jvmArgs": [ - "-Dhttp.proxyHost=betacraft.uk", - "-Djava.util.Arrays.useLegacyMergeSort=true" - ], "assetIndex": version_meta["assetIndex"], "compatibleJavaMajors": [8], "formatVersion": 1, @@ -42,16 +38,17 @@ def gen_compatible_meta_obj(version_meta): "version": meta_id } - # assign proper traits depending on version type + # make needed changes depending on version type if version_meta["type"] == "old_alpha": + out["+jvmArgs"] = ["-Dhttp.proxyHost=betacraft.uk", "-Djava.util.Arrays.useLegacyMergeSort=true"] out["+traits"] = ["legacyLaunch", "no-texturepacks"] elif version_meta["type"] == "old_beta": out["+traits"] = ["legacyLaunch", "texturepacks"] - # need launchwrapper and jopt libraries for these versions to run + # need launchwrapper, jopt, and asm-all for these versions to run out["libraries"] = [] for library in version_meta["libraries"]: - if "launchwrapper" in library["name"] or "jopt" in library["name"]: + if "launchwrapper" in library["name"] or "jopt" in library["name"] or "asm-all" in library["name"]: out["libraries"].append(library) return out