mirror of
https://github.com/unmojang/meta.git
synced 2025-09-22 18:50:29 -04:00
Rebase on PrismLauncher/meta
This commit is contained in:
parent
395ca19ee4
commit
f320422baf
28
.github/workflows/update.yml
vendored
Normal file
28
.github/workflows/update.yml
vendored
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
name: "update"
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 0 * * *'
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
jobs:
|
||||||
|
update:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: cachix/install-nix-action@v20
|
||||||
|
with:
|
||||||
|
github_access_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- uses: DeterminateSystems/magic-nix-cache-action@main
|
||||||
|
- uses: webfactory/ssh-agent@v0.9.0
|
||||||
|
with:
|
||||||
|
ssh-private-key: |
|
||||||
|
${{ secrets.UPSTREAM_KEY }}
|
||||||
|
${{ secrets.LAUNCHER_KEY }}
|
||||||
|
- run: |
|
||||||
|
nix shell -c init
|
||||||
|
nix shell -c update
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -12,6 +12,5 @@ caches/
|
|||||||
!caches/*/.keep
|
!caches/*/.keep
|
||||||
cache/
|
cache/
|
||||||
__pycache__
|
__pycache__
|
||||||
config.sh
|
|
||||||
launcher
|
launcher
|
||||||
upstream
|
upstream
|
||||||
|
11
config.sh
Normal file
11
config.sh
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
export META_UPSTREAM_URL=git@github.com:unmojang/meta-upstream.git
|
||||||
|
export META_LAUNCHER_URL=git@github.com:unmojang/meta-launcher.git
|
||||||
|
|
||||||
|
export META_UPSTREAM_DIR=upstream
|
||||||
|
export META_LAUNCHER_DIR=launcher
|
||||||
|
|
||||||
|
export DEPLOY_TO_GIT=true
|
||||||
|
export GIT_AUTHOR_NAME="github-actions"
|
||||||
|
export GIT_AUTHOR_EMAIL="mail@unmojang.org"
|
||||||
|
export GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"
|
||||||
|
export GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"
|
7
meta/common/authlib_injector.py
Normal file
7
meta/common/authlib_injector.py
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
from os.path import join
|
||||||
|
|
||||||
|
BASE_DIR = "authlib-injector"
|
||||||
|
|
||||||
|
ARTIFACTS_DIR = join(BASE_DIR, "artifacts")
|
||||||
|
|
||||||
|
AGENT_COMPONENT = "moe.yushi.authlibinjector"
|
@ -291,6 +291,7 @@ class Library(MetaBase):
|
|||||||
natives: Optional[Dict[str, str]]
|
natives: Optional[Dict[str, str]]
|
||||||
rules: Optional[MojangRules]
|
rules: Optional[MojangRules]
|
||||||
url: Optional[str]
|
url: Optional[str]
|
||||||
|
absoluteUrl: Optional[str] = Field(None, alias="MMC-absoluteUrl")
|
||||||
mmcHint: Optional[str] = Field(None, alias="MMC-hint")
|
mmcHint: Optional[str] = Field(None, alias="MMC-hint")
|
||||||
|
|
||||||
|
|
||||||
@ -300,6 +301,10 @@ class Dependency(MetaBase):
|
|||||||
suggests: Optional[str]
|
suggests: Optional[str]
|
||||||
|
|
||||||
|
|
||||||
|
class Agent(Library):
|
||||||
|
argument: Optional[str]
|
||||||
|
|
||||||
|
|
||||||
class MetaVersion(Versioned):
|
class MetaVersion(Versioned):
|
||||||
name: str
|
name: str
|
||||||
version: str
|
version: str
|
||||||
@ -323,6 +328,7 @@ class MetaVersion(Versioned):
|
|||||||
additional_traits: Optional[List[str]] = Field(alias="+traits")
|
additional_traits: Optional[List[str]] = Field(alias="+traits")
|
||||||
additional_tweakers: Optional[List[str]] = Field(alias="+tweakers")
|
additional_tweakers: Optional[List[str]] = Field(alias="+tweakers")
|
||||||
additional_jvm_args: Optional[List[str]] = Field(alias="+jvmArgs")
|
additional_jvm_args: Optional[List[str]] = Field(alias="+jvmArgs")
|
||||||
|
additional_agents: Optional[List[Agent]] = Field(alias="+agents")
|
||||||
|
|
||||||
|
|
||||||
class MetaPackage(Versioned):
|
class MetaPackage(Versioned):
|
||||||
|
135
meta/run/generate_authlib_injector.py
Executable file
135
meta/run/generate_authlib_injector.py
Executable file
@ -0,0 +1,135 @@
|
|||||||
|
import json
|
||||||
|
import os
|
||||||
|
|
||||||
|
import dateutil.parser
|
||||||
|
|
||||||
|
from meta.common import (
|
||||||
|
ensure_component_dir,
|
||||||
|
launcher_path,
|
||||||
|
upstream_path,
|
||||||
|
)
|
||||||
|
from meta.common.authlib_injector import BASE_DIR, ARTIFACTS_DIR, AGENT_COMPONENT
|
||||||
|
from meta.model import Agent, MetaVersion, Library, MetaPackage, GradleSpecifier
|
||||||
|
|
||||||
|
LAUNCHER_DIR = launcher_path()
|
||||||
|
UPSTREAM_DIR = upstream_path()
|
||||||
|
|
||||||
|
ensure_component_dir(AGENT_COMPONENT)
|
||||||
|
|
||||||
|
|
||||||
|
LEGACY_RELEASE_TIMES = {
|
||||||
|
1: "2018-06-28T21:14:02+08:00",
|
||||||
|
2: "2018-06-28T21:14:02+08:00",
|
||||||
|
3: "2018-06-28T21:14:02+08:00",
|
||||||
|
4: "2018-06-28T21:14:02+08:00",
|
||||||
|
6: "2018-06-28T21:14:02+08:00",
|
||||||
|
7: "2018-06-28T21:15:12+08:00",
|
||||||
|
8: "2018-06-28T21:26:23+08:00",
|
||||||
|
9: "2018-06-28T21:28:04+08:00",
|
||||||
|
10: "2018-06-28T21:28:14+08:00",
|
||||||
|
11: "2018-06-28T21:28:23+08:00",
|
||||||
|
12: "2018-06-28T21:28:29+08:00",
|
||||||
|
13: "2018-06-28T21:28:35+08:00",
|
||||||
|
14: "2018-06-28T21:28:42+08:00",
|
||||||
|
15: "2018-06-28T21:28:49+08:00",
|
||||||
|
16: "2018-06-28T21:28:55+08:00",
|
||||||
|
17: "2018-06-28T21:29:00+08:00",
|
||||||
|
18: "2018-06-29T13:25:41+00:00",
|
||||||
|
19: "2018-09-30T13:17:16+00:00",
|
||||||
|
20: "2018-10-20T13:43:43+00:00",
|
||||||
|
21: "2018-10-20T13:49:31+00:00",
|
||||||
|
22: "2018-11-23T16:11:54+00:00",
|
||||||
|
23: "2018-11-24T17:16:56+00:00",
|
||||||
|
24: "2018-12-31T13:03:32+00:00",
|
||||||
|
25: "2019-01-19T15:40:25+00:00",
|
||||||
|
26: "2019-02-14T05:26:31+00:00",
|
||||||
|
27: "2020-04-10T16:05:12+00:00",
|
||||||
|
28: "2020-04-29T02:46:56+00:00",
|
||||||
|
29: "2020-06-20T14:30:17Z",
|
||||||
|
30: "2020-08-15T03:08:38Z",
|
||||||
|
31: "2020-08-23T07:06:55Z",
|
||||||
|
32: "2020-08-27T04:21:52Z",
|
||||||
|
33: "2020-09-11T23:27:27Z",
|
||||||
|
34: "2020-10-17T17:18:31Z",
|
||||||
|
35: "2021-05-14T06:55:24Z",
|
||||||
|
36: "2021-06-11T10:34:18Z",
|
||||||
|
37: "2021-06-11T19:55:54Z",
|
||||||
|
38: "2021-06-13T22:05:49Z",
|
||||||
|
39: "2021-08-20T20:30:11Z",
|
||||||
|
40: "2021-11-18T13:49:40Z",
|
||||||
|
41: "2022-03-11T05:48:00Z",
|
||||||
|
42: "2022-03-15T18:07:46Z",
|
||||||
|
43: "2022-04-20T17:21:18Z",
|
||||||
|
44: "2022-05-03T13:42:48Z",
|
||||||
|
45: "2022-06-06T18:02:59Z",
|
||||||
|
46: "2022-07-02T06:06:24Z",
|
||||||
|
47: "2022-07-14T11:37:08Z",
|
||||||
|
48: "2022-08-04T16:53:00Z",
|
||||||
|
49: "2022-08-05T17:11:21Z",
|
||||||
|
50: "2023-03-25T10:42:43Z",
|
||||||
|
51: "2023-06-11T18:47:31Z",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
latest_version: Optional[str] = None
|
||||||
|
|
||||||
|
with open(
|
||||||
|
os.path.join(UPSTREAM_DIR, BASE_DIR, "artifacts.json"), "r", encoding="utf-8"
|
||||||
|
) as artifacts_file:
|
||||||
|
artifacts = json.load(artifacts_file)
|
||||||
|
latest_build = 0
|
||||||
|
for artifact_info in artifacts["artifacts"]:
|
||||||
|
build_number = artifact_info["build_number"]
|
||||||
|
print(f"Processing agent {build_number}")
|
||||||
|
with open(
|
||||||
|
os.path.join(UPSTREAM_DIR, ARTIFACTS_DIR, f"{build_number}.json"),
|
||||||
|
"r",
|
||||||
|
encoding="utf-8",
|
||||||
|
) as artifact_file:
|
||||||
|
artifact = json.load(artifact_file)
|
||||||
|
|
||||||
|
version = artifact["version"]
|
||||||
|
|
||||||
|
latest_build = max(latest_build, build_number)
|
||||||
|
if latest_build == build_number:
|
||||||
|
latest_version = version
|
||||||
|
|
||||||
|
if "release_time" in artifact:
|
||||||
|
release_time = dateutil.parser.isoparse(artifact["release_time"])
|
||||||
|
elif build_number in LEGACY_RELEASE_TIMES:
|
||||||
|
release_time = LEGACY_RELEASE_TIMES[build_number]
|
||||||
|
else:
|
||||||
|
continue
|
||||||
|
|
||||||
|
v = MetaVersion(
|
||||||
|
name="authlib-injector",
|
||||||
|
uid=AGENT_COMPONENT,
|
||||||
|
version=version,
|
||||||
|
release_time=release_time,
|
||||||
|
)
|
||||||
|
v.type = "release"
|
||||||
|
v.additional_agents = [
|
||||||
|
Agent(
|
||||||
|
name=GradleSpecifier(
|
||||||
|
group="moe.yushi",
|
||||||
|
artifact="authlibinjector",
|
||||||
|
version=version,
|
||||||
|
),
|
||||||
|
absoluteUrl=artifact["download_url"],
|
||||||
|
)
|
||||||
|
]
|
||||||
|
v.write(
|
||||||
|
os.path.join(LAUNCHER_DIR, AGENT_COMPONENT, f"{v.version}.json")
|
||||||
|
)
|
||||||
|
|
||||||
|
package = MetaPackage(uid=AGENT_COMPONENT, name="authlib-injector")
|
||||||
|
package.recommended = [latest_version]
|
||||||
|
package.description = "authlib-injector enables you to build a Minecraft authentication system offering all the features that genuine Minecraft has."
|
||||||
|
package.project_url = "https://github.com/yushijinhun/authlib-injector"
|
||||||
|
package.authors = ["Haowei Wen"]
|
||||||
|
package.write(os.path.join(LAUNCHER_DIR, AGENT_COMPONENT, "package.json"))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
49
meta/run/update_authlib_injector.py
Executable file
49
meta/run/update_authlib_injector.py
Executable file
@ -0,0 +1,49 @@
|
|||||||
|
import json
|
||||||
|
import os
|
||||||
|
import zipfile
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
|
from meta.common import (
|
||||||
|
upstream_path,
|
||||||
|
ensure_upstream_dir,
|
||||||
|
default_session,
|
||||||
|
)
|
||||||
|
from meta.common.authlib_injector import BASE_DIR, ARTIFACTS_DIR
|
||||||
|
from meta.model.fabric import FabricJarInfo
|
||||||
|
|
||||||
|
UPSTREAM_DIR = upstream_path()
|
||||||
|
|
||||||
|
ensure_upstream_dir(BASE_DIR)
|
||||||
|
ensure_upstream_dir(ARTIFACTS_DIR)
|
||||||
|
|
||||||
|
sess = default_session()
|
||||||
|
|
||||||
|
|
||||||
|
def get_json_file(path, url):
|
||||||
|
with open(path, "w", encoding="utf-8") as f:
|
||||||
|
r = sess.get(url)
|
||||||
|
r.raise_for_status()
|
||||||
|
print(f"AUTHLIB-INJECTOR DEBUG {r.headers}")
|
||||||
|
version_json = r.json()
|
||||||
|
json.dump(version_json, f, sort_keys=True, indent=4)
|
||||||
|
return version_json
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
artifacts = get_json_file(
|
||||||
|
os.path.join(UPSTREAM_DIR, BASE_DIR, "artifacts.json"),
|
||||||
|
"https://authlib-injector.yushi.moe/artifacts.json",
|
||||||
|
)
|
||||||
|
|
||||||
|
for artifact in artifacts["artifacts"]:
|
||||||
|
build_number = artifact["build_number"]
|
||||||
|
print(f"Processing artifact {build_number}")
|
||||||
|
get_json_file(
|
||||||
|
os.path.join(UPSTREAM_DIR, ARTIFACTS_DIR, f"{build_number}.json"),
|
||||||
|
f"https://authlib-injector.yushi.moe/artifact/{build_number}.json",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
@ -10,6 +10,7 @@
|
|||||||
openssh,
|
openssh,
|
||||||
packaging,
|
packaging,
|
||||||
pydantic_1,
|
pydantic_1,
|
||||||
|
python-dateutil,
|
||||||
python,
|
python,
|
||||||
rsync,
|
rsync,
|
||||||
}:
|
}:
|
||||||
@ -46,6 +47,7 @@ buildPythonApplication {
|
|||||||
filelock
|
filelock
|
||||||
packaging
|
packaging
|
||||||
pydantic_1
|
pydantic_1
|
||||||
|
python-dateutil
|
||||||
];
|
];
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
|
27
poetry.lock
generated
27
poetry.lock
generated
@ -285,6 +285,20 @@ typing-extensions = ">=4.2.0"
|
|||||||
dotenv = ["python-dotenv (>=0.10.4)"]
|
dotenv = ["python-dotenv (>=0.10.4)"]
|
||||||
email = ["email-validator (>=1.0.3)"]
|
email = ["email-validator (>=1.0.3)"]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "python-dateutil"
|
||||||
|
version = "2.9.0.post0"
|
||||||
|
description = "Extensions to the standard Python datetime module"
|
||||||
|
optional = false
|
||||||
|
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
|
||||||
|
files = [
|
||||||
|
{file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"},
|
||||||
|
{file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"},
|
||||||
|
]
|
||||||
|
|
||||||
|
[package.dependencies]
|
||||||
|
six = ">=1.5"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "requests"
|
name = "requests"
|
||||||
version = "2.32.3"
|
version = "2.32.3"
|
||||||
@ -306,6 +320,17 @@ urllib3 = ">=1.21.1,<3"
|
|||||||
socks = ["PySocks (>=1.5.6,!=1.5.7)"]
|
socks = ["PySocks (>=1.5.6,!=1.5.7)"]
|
||||||
use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
|
use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "six"
|
||||||
|
version = "1.16.0"
|
||||||
|
description = "Python 2 and 3 compatibility utilities"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
|
||||||
|
files = [
|
||||||
|
{file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
|
||||||
|
{file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "typing-extensions"
|
name = "typing-extensions"
|
||||||
version = "4.11.0"
|
version = "4.11.0"
|
||||||
@ -337,4 +362,4 @@ zstd = ["zstandard (>=0.18.0)"]
|
|||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "2.0"
|
lock-version = "2.0"
|
||||||
python-versions = "^3.8"
|
python-versions = "^3.8"
|
||||||
content-hash = "2a2fe996845675e1cdf7d80834919eabb819353f394f00a3adbaf0f42e7351b0"
|
content-hash = "f81f2b8ccc78137ad82fa9a022f0444ae272ef0cdf54d2402e511b5840f72af6"
|
||||||
|
@ -17,6 +17,7 @@ generateMojang = "meta.run.generate_mojang:main"
|
|||||||
generateNeoForge = "meta.run.generate_neoforge:main"
|
generateNeoForge = "meta.run.generate_neoforge:main"
|
||||||
generateQuilt = "meta.run.generate_quilt:main"
|
generateQuilt = "meta.run.generate_quilt:main"
|
||||||
generateJava = "meta.run.generate_java:main"
|
generateJava = "meta.run.generate_java:main"
|
||||||
|
generateAuthlibInjector = "meta.run.generate_authlib_injector:main"
|
||||||
updateFabric = "meta.run.update_fabric:main"
|
updateFabric = "meta.run.update_fabric:main"
|
||||||
updateForge = "meta.run.update_forge:main"
|
updateForge = "meta.run.update_forge:main"
|
||||||
updateLiteloader = "meta.run.update_liteloader:main"
|
updateLiteloader = "meta.run.update_liteloader:main"
|
||||||
@ -24,6 +25,7 @@ updateMojang = "meta.run.update_mojang:main"
|
|||||||
updateNeoForge = "meta.run.update_neoforge:main"
|
updateNeoForge = "meta.run.update_neoforge:main"
|
||||||
updateQuilt = "meta.run.update_quilt:main"
|
updateQuilt = "meta.run.update_quilt:main"
|
||||||
updateJava = "meta.run.update_java:main"
|
updateJava = "meta.run.update_java:main"
|
||||||
|
updateAuthlibInjector = "meta.run.update_authlib_injector:main"
|
||||||
index = "meta.run.index:main"
|
index = "meta.run.index:main"
|
||||||
|
|
||||||
[tool.poetry.dependencies]
|
[tool.poetry.dependencies]
|
||||||
@ -33,6 +35,7 @@ requests = "^2.31.0"
|
|||||||
filelock = "^3.13.1"
|
filelock = "^3.13.1"
|
||||||
packaging = "^24.0"
|
packaging = "^24.0"
|
||||||
pydantic = "^1.10.13"
|
pydantic = "^1.10.13"
|
||||||
|
python-dateutil = "^2.9.0.post0"
|
||||||
|
|
||||||
[build-system]
|
[build-system]
|
||||||
requires = ["poetry-core>=1.0.0"]
|
requires = ["poetry-core>=1.0.0"]
|
||||||
|
@ -34,6 +34,7 @@ currentDate=$(date -I)
|
|||||||
|
|
||||||
upstream_git reset --hard HEAD || exit 1
|
upstream_git reset --hard HEAD || exit 1
|
||||||
|
|
||||||
|
python -m meta.run.update_authlib_injector || fail_in
|
||||||
python -m meta.run.update_mojang || fail_in
|
python -m meta.run.update_mojang || fail_in
|
||||||
python -m meta.run.update_forge || fail_in
|
python -m meta.run.update_forge || fail_in
|
||||||
python -m meta.run.update_neoforge || fail_in
|
python -m meta.run.update_neoforge || fail_in
|
||||||
@ -43,6 +44,7 @@ python -m meta.run.update_liteloader || fail_in
|
|||||||
python -m meta.run.update_java || fail_in
|
python -m meta.run.update_java || fail_in
|
||||||
|
|
||||||
if [ "${DEPLOY_TO_GIT}" = true ]; then
|
if [ "${DEPLOY_TO_GIT}" = true ]; then
|
||||||
|
upstream_git add authlib-injector/artifacts/*.json || fail_in
|
||||||
upstream_git add mojang/version_manifest_v2.json mojang/java_all.json mojang/versions/* || fail_in
|
upstream_git add mojang/version_manifest_v2.json mojang/java_all.json mojang/versions/* || fail_in
|
||||||
upstream_git add forge/*.json forge/version_manifests/*.json forge/installer_manifests/*.json forge/files_manifests/*.json forge/installer_info/*.json || fail_in
|
upstream_git add forge/*.json forge/version_manifests/*.json forge/installer_manifests/*.json forge/files_manifests/*.json forge/installer_info/*.json || fail_in
|
||||||
upstream_git add neoforge/*.json neoforge/version_manifests/*.json neoforge/installer_manifests/*.json neoforge/files_manifests/*.json neoforge/installer_info/*.json || fail_in
|
upstream_git add neoforge/*.json neoforge/version_manifests/*.json neoforge/installer_manifests/*.json neoforge/files_manifests/*.json neoforge/installer_info/*.json || fail_in
|
||||||
@ -58,6 +60,7 @@ fi
|
|||||||
|
|
||||||
launcher_git reset --hard HEAD || exit 1
|
launcher_git reset --hard HEAD || exit 1
|
||||||
|
|
||||||
|
python -m meta.run.generate_authlib_injector || fail_out
|
||||||
python -m meta.run.generate_mojang || fail_out
|
python -m meta.run.generate_mojang || fail_out
|
||||||
python -m meta.run.generate_forge || fail_out
|
python -m meta.run.generate_forge || fail_out
|
||||||
python -m meta.run.generate_neoforge || fail_out
|
python -m meta.run.generate_neoforge || fail_out
|
||||||
@ -68,6 +71,7 @@ python -m meta.run.generate_java || fail_out
|
|||||||
python -m meta.run.index || fail_out
|
python -m meta.run.index || fail_out
|
||||||
|
|
||||||
if [ "${DEPLOY_TO_GIT}" = true ]; then
|
if [ "${DEPLOY_TO_GIT}" = true ]; then
|
||||||
|
launcher_git add moe.yushi.authlibinjector/* || fail_out
|
||||||
launcher_git add index.json org.lwjgl/* org.lwjgl3/* net.minecraft/* || fail_out
|
launcher_git add index.json org.lwjgl/* org.lwjgl3/* net.minecraft/* || fail_out
|
||||||
launcher_git add net.minecraftforge/* || fail_out
|
launcher_git add net.minecraftforge/* || fail_out
|
||||||
launcher_git add net.neoforged/* || fail_out
|
launcher_git add net.neoforged/* || fail_out
|
||||||
|
Loading…
x
Reference in New Issue
Block a user