summaryrefslogtreecommitdiff
path: root/meta
diff options
context:
space:
mode:
authorSefa Eyeoglu <contact@scrumplex.net>2025-11-19 20:33:23 +0100
committerSefa Eyeoglu <contact@scrumplex.net>2025-11-19 20:33:23 +0100
commit9d751238a566464df8a184755718bf1ac2f485e4 (patch)
treecb2efc7d09273793a3f1f1c7e4fa5c062e38d47c /meta
parent82a0a6bb6f8fa675e70c1a4f668ea77633cdd13a (diff)
downloadProject-Tick-9d751238a566464df8a184755718bf1ac2f485e4.tar.gz
Project-Tick-9d751238a566464df8a184755718bf1ac2f485e4.zip
feat: add workarounds for unobfuscated versions
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
Diffstat (limited to 'meta')
-rw-r--r--meta/common/fabric.py7
-rw-r--r--meta/model/fabric.py4
-rwxr-xr-xmeta/run/generate_fabric.py9
-rwxr-xr-xmeta/run/update_fabric.py28
4 files changed, 37 insertions, 11 deletions
diff --git a/meta/common/fabric.py b/meta/common/fabric.py
index 2a35695cf1..667c38482f 100644
--- a/meta/common/fabric.py
+++ b/meta/common/fabric.py
@@ -10,3 +10,10 @@ LOADER_COMPONENT = "net.fabricmc.fabric-loader"
INTERMEDIARY_COMPONENT = "net.fabricmc.intermediary"
DATETIME_FORMAT_HTTP = "%a, %d %b %Y %H:%M:%S %Z"
+
+# version -> releaseTime
+BROKEN_INTERMEDIARIES = {
+ "1.21.11-pre1_unobfuscated": "2025-11-19T11:03:07+00:00" # releaseTime of 1.21.11 intermediary
+}
+EARLY_UNOBFUSCATED_SUFFIX = "_unobfuscated"
+NOOP_INTERMEDIARY_VERSION = "net.fabricmc:intermediary:0.0.0"
diff --git a/meta/model/fabric.py b/meta/model/fabric.py
index 5cb0e9caab..7acd7c8756 100644
--- a/meta/model/fabric.py
+++ b/meta/model/fabric.py
@@ -6,6 +6,10 @@ from pydantic import Field
from . import Library, MetaBase
+EARLY_UNOBFUSCATED_SUFFIX = "_unobfuscated"
+NOOP_INTERMEDIARY_VERSION = "net.fabricmc:intermediary:0.0.0"
+
+
class FabricInstallerArguments(MetaBase):
client: Optional[List[str]]
common: Optional[List[str]]
diff --git a/meta/run/generate_fabric.py b/meta/run/generate_fabric.py
index 7ca50dd6aa..9d1f96263b 100755
--- a/meta/run/generate_fabric.py
+++ b/meta/run/generate_fabric.py
@@ -8,11 +8,13 @@ from meta.common import (
transform_maven_key,
)
from meta.common.fabric import (
+ EARLY_UNOBFUSCATED_SUFFIX,
JARS_DIR,
INSTALLER_INFO_DIR,
META_DIR,
INTERMEDIARY_COMPONENT,
LOADER_COMPONENT,
+ NOOP_INTERMEDIARY_VERSION,
)
from meta.model import MetaVersion, Dependency, Library, MetaPackage, GradleSpecifier
from meta.model.fabric import FabricJarInfo, FabricInstallerDataV1, FabricMainClasses
@@ -76,8 +78,13 @@ def process_intermediary_version(entry) -> MetaVersion:
v.type = "release"
v.libraries = []
v.volatile = True
+
+ maven = entry["maven"]
+ if EARLY_UNOBFUSCATED_SUFFIX in entry["version"]:
+ maven = NOOP_INTERMEDIARY_VERSION
+
intermediary_lib = Library(
- name=GradleSpecifier.from_string(entry["maven"]),
+ name=GradleSpecifier.from_string(maven),
url="https://maven.fabricmc.net",
)
v.libraries.append(intermediary_lib)
diff --git a/meta/run/update_fabric.py b/meta/run/update_fabric.py
index e0c1d819c9..43a27e146c 100755
--- a/meta/run/update_fabric.py
+++ b/meta/run/update_fabric.py
@@ -14,6 +14,7 @@ from meta.common import (
default_session,
)
from meta.common.fabric import (
+ BROKEN_INTERMEDIARIES,
JARS_DIR,
INSTALLER_INFO_DIR,
META_DIR,
@@ -70,7 +71,7 @@ def get_binary_file(path, url):
f.write(chunk)
-def compute_jar_file(path, url):
+def fetch_release_time(path, url):
# These two approaches should result in the same metadata, except for the timestamp which might be a few minutes
# off for the fallback method
try:
@@ -91,18 +92,25 @@ def compute_jar_file(path, url):
if tstamp_new > tstamp:
tstamp = tstamp_new
- data = FabricJarInfo(release_time=tstamp)
- data.write(path + ".json")
+ return tstamp
def compute_jar_file_concurrent(it):
- print(f"Processing {it['version']} ")
- jar_maven_url = get_maven_url(it["maven"], "https://maven.fabricmc.net/", ".jar")
- compute_jar_file(
- os.path.join(UPSTREAM_DIR, JARS_DIR, transform_maven_key(it["maven"])),
- jar_maven_url,
- )
- print(f"Processing {it['version']} Done")
+ print(f"Processing {it['maven']} ")
+ path = os.path.join(UPSTREAM_DIR, JARS_DIR, transform_maven_key(it["maven"]))
+ tstamp = BROKEN_INTERMEDIARIES.get(it["version"])
+ if not tstamp:
+ jar_maven_url = get_maven_url(
+ it["maven"], "https://maven.fabricmc.net/", ".jar"
+ )
+ tstamp = fetch_release_time(
+ path,
+ jar_maven_url,
+ )
+
+ data = FabricJarInfo(release_time=tstamp)
+ data.write(f"{path}.json")
+ print(f"Processing {it['maven']} Done")
def get_json_file_concurrent(it):