Skip to content

Commit

Permalink
Working on babric support (mindstorm38#219)
Browse files Browse the repository at this point in the history
  • Loading branch information
mindstorm38 committed Jul 13, 2024
1 parent 6491b4a commit 08234f4
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 12 deletions.
22 changes: 15 additions & 7 deletions portablemc/cli/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -281,9 +281,9 @@ def cmd_search_handler(ns: SearchNs, kind: str, table: OutputTable):
if search is None or search in alias:
table.add(alias, version)

elif kind in ("fabric", "quilt", "legacyfabric"):
elif kind in ("fabric", "quilt", "legacyfabric", "babric"):

from ..fabric import FABRIC_API, QUILT_API, LEGACYFABRIC_API
from ..fabric import FABRIC_API, QUILT_API, LEGACYFABRIC_API, BABRIC_API

table.add(_("search.loader_version"), _("search.flags"))
table.separator()
Expand All @@ -292,8 +292,10 @@ def cmd_search_handler(ns: SearchNs, kind: str, table: OutputTable):
api = FABRIC_API
elif kind == "quilt":
api = QUILT_API
else:
elif kind == "legacyfabric":
api = LEGACYFABRIC_API
else:
api = BABRIC_API

for loader in api._request_loaders():
if search is None or search in loader.version:
Expand Down Expand Up @@ -458,25 +460,31 @@ def cmd_start_handler(ns: StartNs, kind: str, parts: List[str]) -> Optional[Vers
return None
return Version(version, context=ns.context)

elif kind in ("fabric", "quilt", "legacyfabric"):
elif kind in ("fabric", "quilt", "legacyfabric", "babric"):

if len(parts) > 2:
return None

# Legacy fabric has a special case because it will never be supported for
# versions past 1.13.2, it is not made for latest release version.
if kind == "legacyfabric" and version == "release":
version = "1.13.2"
if version == "release":
if kind == "legacyfabric":
version = "1.13.2"
elif kind == "babric":
version = "b1.7.3"

if kind == "fabric":
constructor = FabricVersion.with_fabric
prefix = ns.fabric_prefix
elif kind == "quilt":
constructor = FabricVersion.with_quilt
prefix = ns.quilt_prefix
else:
elif kind == "legacyfabric":
constructor = FabricVersion._with_legacyfabric
prefix = ns.legacyfabric_prefix
else:
constructor = FabricVersion._with_babric
prefix = "babric"

if len(parts) != 2:
ns.socket_error_tips.append(f"{kind}_loader_version")
Expand Down
8 changes: 6 additions & 2 deletions portablemc/cli/lang.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@ def get(key: str, **kwargs) -> str:
"args._":
" A fast, reliable and cross-platform command-line Minecraft launcher and API\n"
" for developers. Including fast and easy installation of common mod loaders such\n"
" as Fabric, LegacyFabric, Forge, NeoForge and Quilt. This launcher is compatible\n"
" with the standard Minecraft directories.\n\n",
" as Fabric, LegacyFabric, Forge, NeoForge, Quilt and Babric. This launcher is\n"
" compatible with the standard Minecraft directories.\n\n",
"args.main_dir": "Set the main directory where libraries, assets and versions.",
"args.work_dir": "Set the working directory where the game run and place for examples "
"saves, screenshots (and resources for legacy versions), it also store "
Expand Down Expand Up @@ -74,6 +74,7 @@ def get(key: str, **kwargs) -> str:
"args.search.kind.comp.fabric": "Search for Fabric versions.",
"args.search.kind.comp.legacyfabric": "Search for LegacyFabric versions.",
"args.search.kind.comp.quilt": "Search for Quilt versions.",
"args.search.kind.comp.babric": "Search for Babric versions.",
"args.search.input": "Search input.",
"args.search.input.comp.release": "Resolve version of the latest release.",
"args.search.input.comp.snapshot": "Resolve version of the latest snapshot.",
Expand All @@ -84,13 +85,15 @@ def get(key: str, **kwargs) -> str:
"args.start.version.fabric": "fabric:[<vanilla-version>[:<loader-version>]]",
"args.start.version.legacyfabric": "legacyfabric:[<vanilla-version>[:<loader-version>]]",
"args.start.version.quilt": "quilt:[<vanilla-version>[:<loader-version>]]",
"args.start.version.babric": "babric::[<loader-version>]",
"args.start.version.forge": "forge:[<forge-version>] (forge-version >= 1.5.2)",
"args.start.version.neoforge": "neoforge:[<neoforge-version>] (neoforge-version >= 1.20.1)",
"args.start.version.comp.release": "Start the latest release (default).",
"args.start.version.comp.snapshot": "Start the latest snapshot.",
"args.start.version.comp.fabric": "Start Fabric mod loader with latest release.",
"args.start.version.comp.legacyfabric": "Start LegacyFabric mod loader with latest release.",
"args.start.version.comp.quilt": "Start Quilt mod loader with latest release.",
"args.start.version.comp.babric": "Start Babric mod loader with latest release.",
"args.start.version.comp.forge": "Start Forge mod loader with latest release.",
"args.start.version.comp.neoforge": "Start NeoForge mod loader with latest release.",
"args.start.dry": "Simulate game starting.",
Expand Down Expand Up @@ -174,6 +177,7 @@ def get(key: str, **kwargs) -> str:
"error.socket.tip.fabric_loader_version": "Fabric loader version must be specified if network is not operational.",
"error.socket.tip.legacyfabric_loader_version": "Fabric loader version must be specified if network is not operational.",
"error.socket.tip.quilt_loader_version": "Quilt loader version must be specified if network is not operational.",
"error.socket.tip.babric_loader_version": "Babric loader version must be specified if network is not operational.",
"error.cert": "Certificate verification failed, you can try installing 'certifi' package:",
# Command search
"search.type": "Type",
Expand Down
6 changes: 3 additions & 3 deletions portablemc/cli/parse.py
Original file line number Diff line number Diff line change
Expand Up @@ -161,10 +161,10 @@ def register_start_arguments(parser: ArgumentParser) -> None:
parser.add_argument("-s", "--server", help=_("args.start.server"), type=type_host)
parser.add_argument("-p", "--server-port", help=_("args.start.server_port"), metavar="PORT")

version_arg = parser.add_argument("version", nargs="?", default="release", help=_("args.start.version", formats=", ".join(map(lambda s: _(f"args.start.version.{s}"), ("standard", "fabric", "quilt", "legacyfabric", "forge", "neoforge")))))
version_arg = parser.add_argument("version", nargs="?", default="release", help=_("args.start.version", formats=", ".join(map(lambda s: _(f"args.start.version.{s}"), ("standard", "fabric", "quilt", "legacyfabric", "babric", "forge", "neoforge")))))
for standard in ("release", "snapshot"):
add_completion(version_arg, standard, _(f"args.start.version.comp.{standard}"))
for loader in ("fabric", "quilt", "legacyfabric", "forge", "neoforge"):
for loader in ("fabric", "quilt", "legacyfabric", "babric", "forge", "neoforge"):
add_completion(version_arg, f"{loader}:", _(f"args.start.version.comp.{loader}"))


Expand Down Expand Up @@ -216,7 +216,7 @@ def get_outputs() -> List[str]:
return ["human-color", "human", "machine"]

def get_search_kinds() -> List[str]:
return ["mojang", "local", "forge", "fabric", "quilt", "legacyfabric"]
return ["mojang", "local", "forge", "fabric", "quilt", "legacyfabric", "babric"]

def get_auth_services() -> List[str]:
return ["microsoft", "yggdrasil"]
Expand Down
9 changes: 9 additions & 0 deletions portablemc/fabric.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ def request_fabric_loader_version(self, vanilla_version: str) -> Optional[str]:
FABRIC_API = FabricApi("fabric", "https://meta.fabricmc.net/v2/")
QUILT_API = FabricApi("quilt", "https://meta.quiltmc.org/v3/")
LEGACYFABRIC_API = FabricApi("legacyfabric", "https://meta.legacyfabric.net/v2/")
BABRIC_API = FabricApi("babric", "https://meta.babric.glass-launcher.net/v2/")


class FabricVersion(Version):
Expand Down Expand Up @@ -116,6 +117,14 @@ def _with_legacyfabric(cls, vanilla_version: str = "release", loader_version: Op
"""Construct a root for resolving a LegacyFabric version"""
return cls(LEGACYFABRIC_API, vanilla_version, loader_version, prefix, context=context)

@classmethod
def _with_babric(cls, vanilla_version: str = "release", loader_version: Optional[str] = None, *,
context: Optional[Context] = None,
prefix="babric"
) -> "FabricVersion":
"""Construct a root for resolving a LegacyFabric version"""
return cls(BABRIC_API, vanilla_version, loader_version, prefix, context=context)

def _resolve_version(self, watcher: Watcher) -> None:

# Vanilla version may be "release" or "snapshot"
Expand Down

0 comments on commit 08234f4

Please sign in to comment.