portablemc

A fast, reliable and cross-platform command-line Minecraft launcher and API for developers. Including fast and easy installation of common mod loaders such as Fabric, Forge, NeoForge and Quilt.

GPL-3.0 License

Downloads
1.1K
Stars
296
Committers
10

Bot releases are hidden (Show)

portablemc - Version 4.3.0 - LegacyFabric and various tweaks Latest Release

Published by mindstorm38 6 months ago

Changes

  • CLI: Improved authentication error messages (#199)
  • CLI: Added support for starting and searching legacyfabric (#205, thanks @BluCobalt)
  • CLI: Fixed an issue with stdout/stderr where encoding was not UTF-8 and therefore crashes the launcher in some case, reported on Windows (#210, thanks @marewey)
  • CLI: Running the game in dry mode now build the command line, that can be shown using -vv verbosity flag
  • API: Added support for "legacyfabric" fabric unstable API (#205, thanks @BluCobalt)
  • API: Automatic XML log detection has been improved (#209)
  • API: Fixed a potential bug for invalid HTTP response when batch downloading
portablemc - Version 4.2.1 - Autocompletion support

Published by mindstorm38 8 months ago

Changes

  • API: Forge (not including NeoForge) alias -recommended or -latest can now fall back to the other one if not found. (#189, thanks @MisileLab)
  • API: The methods get_authentication_url and get_logout_url from class MicrosoftAuthSession are now deprecated.
  • CLI: Microsoft authentication has been improved to support systems where no browser can be found. If the launcher cannot find a web browser, or the option --auth-no-browser has been set, the user can authenticate on another computer and then copy-paste the token in the terminal. (#194, thanks @theoparis)
  • CLI: Shell completion for Bash and Zsh to generate with show completion. (#111, suggestion from @JamiKettunen)
  • CLI: The temporary local server is now using a dynamically allocated port.
  • CLI: Added a deprecation info message when using Yggdrasil (Mojang) authentication.
  • CLI: Fixed formatting of numbers.
  • CLI: Improved some commands help messages, looking forward to improving the CLI.
  • Misc: The certifi extra has been added to the package to explicitly specify the dependency (install with pip install portablemc[certifi]).
  • Doc: Fixed doc links (for PyPI rendering).
  • Doc: Added sponsors to documentation.
  • AUR: The AUR package automatically installs autocompletion scripts (thanks to Maks Jopek).
portablemc - Version 4.1.0 - NeoForge support

Published by mindstorm38 11 months ago

Changes

  • API: LWJGL fix can now support all present and future 3.3.* versions, including 3.2.3 like before (#181, thanks @snoopchallenge)
  • API: Added unstable support for NeoForge repository in ForgeVersion (#180, thanks @MisileLab)
  • API: Added a default User-Agent for HTTP requests (not for downloads) of portablemc/<version>
  • CLI: LWJGL fix is no longer restricted to specific values, you can enter any value and the launcher will raise an error (download error if the version is not yet available) if it is not supported (#181)
  • CLI: Added support for NeoForge launch with neoforge: id and associated --neoforge-prefix argument (#180)
  • CLI: Notice about the --login argument when using thje login command (#182, thanks @superniels09)
  • CLI: Search is not yet supported for NeoForge!
  • Doc: Improved README
portablemc - Version 4.0.3 - CLI tips to run offline

Published by mindstorm38 about 1 year ago

Changes

  • CLI: When socket errors happen with the search and start commands, the CLI provides tips to use it in offline-mode
  • CLI: Fixed a concerning issue where the locally cached version manifest was not used for the start command.
portablemc - Version 4.0.2 - Patches

Published by mindstorm38 about 1 year ago

Changes

  • CLI: Fixed some printing issues with authentication
  • CLI: Better error message for network errors, and less verbose by default (use -v instead when backtrace needed)
  • API: Fixed issues with relative path for work/main directories: relative paths are still usable in the launcher code, but when running sub processes, absolute paths are used instead (#171, thanks @RiverRyan3000)
  • API: Retro-compatible changes to HttpResponse and HttpError to support network error wrapping (#173, thanks again @RiverRyan3000)
  • Doc: Improved API documentation about authentication and runners (#172, #174, thanks @creeper-0910 and @JXSnack)
  • Doc: Updated README illustration (#167)
portablemc - Version 4.0.1 - Patches

Published by mindstorm38 about 1 year ago

Changes

  • CLI: Now using Bytes instead of octets for download progress (#164, thanks @Ristovski!)
  • API: Standard events VersionLoadingEvent, VersionFetchingEvent, JarFoundEvent, LibrariesResolvingEvent and JvmLoadingEvent are now using slots
  • API: Forge events ForgePostProcessingEvent and ForgePostProcessedEvent are now using slots
  • API: Batch download API (portablemc.download module) now support certifi as an SSL context provider and also supports optional URL port
  • API: Fixed some rare unhandled connection errors that happened when downloading
  • Dev: Added tests for forge/fabric/quilt loader version resolving
  • Doc: Improved versioning and stability documentation of the API
portablemc - Version 4.0.0 - Rewrite!

Published by mindstorm38 about 1 year ago

Changes

API: Full rewrite of the API (except for authentication), brand-new installation process and configuration, supporting event-based diagnostics (#114)
API: New fixes API allowing fixing previse components on demand
API: Fixing LWJGL to a specific version is now included in the API, through the new fixes API
API: Support for fixing LWJGL to version 3.3.2 (#148, thanks @snoopchallenge)
API: Fixing wrong JVM executable path on macOS (#156, #149, thanks @allen546 and @plushTeddy)
API: Fixing multiplayer button being disabled in offline mode for versions 1.16.4 and 1.16.5 (#154, thanks @unaiiglesias)
API: Supporting quick play arguments on modern versions, with retro-compatible support for older ones (#153, thanks @cunhar)
API: Better internal HTTP request API, with easier response and error handling
API: Fabric and Quilt now included by default in the API
API: Forge now included by default in the API
API: Forge installation is no longer running the installer manually, it instead read its inner metadata and manually run processors if required, supporting all versions providing an installer (#133, thanks @rutexd)
API: Resources downloading is no parallelized, much, much faster!
CLI: Wider support of the --timeout argument
CLI: Output format can be selected using the --output argument, supporting by default human and machine outputs, and the default human-color with a bit of coloring
CLI: Verbosity can be set using one or more -v flag, mostly supported by start command
CLI: Search command has no more -l (--local) flag, instead a -k (--kind) has been introduced that support searching for mojang (like before), local (equivalent of old -l flag), forge, fabric and quilt mod loader versions
CLI: On start, login and logout commands, the -m (--microsoft) has been replaced with --auth-service, which now defaults to Microsoft, but still support Yggdrasil
CLI: Start flag --anonymise has been replaced by --auth-anonymize
CLI: Start flag --no-old-fix replaced with --no-fix, because fixes now also applies to modern versions
CLI: Start argument --lwjgl additionally support version 3.3.2
CLI: Start argument --resol renamed --resolution
CLI: When starting the game, the game's logs are now formatted by the launcher itself with better Ctrl-C support, therefore the flag --no-better-logging has been removed
CLI: Fixed Ctrl+C on Windows (#133)
CLI: No add-on support, for now
Doc: Documentation has been fully reworked, both for CLI and API!
Dev: The repository is no longer a mono-repo, everything interesting will be included directly in the launcher now
Dev: Launcher's sources are no better separated in proper modules
Dev: Improved GitHub workflow to avoid running for doc changes
Dev: Now requiring poetry 1.2 at least, and added pytest/toml tests requirements
Contrib: Additional thanks to @Ristovski and @GoodDay360 for their feedbacks! And @TickingFeather for fixing typo in documentation!

portablemc - Version 3.3.1 - Fixed regression

Published by mindstorm38 over 1 year ago

Changes

  • API: Fixed a regression that caused hard errors when no download entry was found for a particular library (thanks @michaelkargl, #138).
portablemc - Version 3.3.0 - Certifi support and improved library resolution

Published by mindstorm38 over 1 year ago

Changes

  • CLI: Improved global errors reporting, should provide clean stack traces;
  • API: When no library's path is given in version metadata, it can be guessed from the given URL (this URL must target Mojang's CDN), if no URL is provided nor based on Mojang's CDN an error is raised (thanks @ItsNiceCraft, #136) ;
  • API: When certifi package is installed, it is used as Root Certificates database, which is sometimes faster than waiting for your OS' database update (thanks @slenered, #134);
  • API: Added constants for common resources URLs;
  • API: The download APL is finally using a memoryview in order to reduce memory allocations when downloading.
portablemc - Version 3.2.1 - Class path and copyright bump

Published by mindstorm38 over 1 year ago

Changes

  • API: Version JAR file is moved to the end of the game's classpath (#125, thanks @onebyte4)
portablemc - Version 3.2.0 - Supporting more systems

Published by mindstorm38 almost 2 years ago

Changes

  • CLI: Added --exclude-lib and --include-bin for supporting the API, see below and in the README (#112);
  • CLI: Help message for --jvm no longer mention javaw executable on non-windows systems (#109);
  • CLI: In case of unexpected systems, the default minecraft's directory is now expanded from ~/.minecraft, basically the linux' default (#106);
  • API: Now possible to exclude Java libraries from classpath with a predicate, given to this predicate is a new class LibrarySpecifier used to represent Gradle/Maven-like library specifiers (#112);
  • API: Now possible to include custom shared binaries (.dll, .so, .dylib) in the game's runtime bin directory (#112);
  • API: Now storing and loading case-folded (lower-case but improved for unicode) email addresses in session database to fix issues for users usually writing upper-case characters in email addresses (#117);
  • Doc: Added mention of MESA_GLSL_VERSION_OVERRIDE in documentation of --lwjgl;
  • Dev: Improved tests' workflow to include coverage reports, the test suite is now testing for coherency of lock files for addons.

A huge thanks to @JamiKettunen for its help on supporting exotic systems, -it's how I name systems where Minecraft was not intended to be run in the first place by Mojang-.

portablemc - Version 3.1.1

Published by mindstorm38 about 2 years ago

Changes:

  • Fixed core to support resolution start option (and CLI --resol) for versions up to 1.6 (#97, thanks @miapuffia)
portablemc - Version 3.1.0

Published by mindstorm38 about 2 years ago

Changes:

  • [Forge] Fixed installation of forge with newer download API (#87, thanks @MTM828);
  • [Forge] Deprecated MINECRAFT_VERSION_NOT_FOUND and added MINECRAFT_VERSION_NOT_SUPPORTED in ForgeVersionNotFound error;
  • New class OfflineAuthSession that aims to replace the username and uuid fields in StartOptions class, these two fields are still supported but deprecated (#83);
  • The DownloadEntry class now allows providing fallbacks.
portablemc - Version 3.0.3

Published by mindstorm38 over 2 years ago

Changes:

  • Fixed directories' creation with invalid version IDs (#80)

Dev changes:

  • Introduced a testy pipeline, will be improved in the future to avoid most regressions
portablemc - Version 3.0.2 - Improved --lwjgl

Published by mindstorm38 over 2 years ago

Changes:

  • The --lwjgl argument now supports the latest LWJGL version 3.3.1
  • The --lwjgl no longer uses the "natives" section of libraries in the version metadata, it simply use the auto-extraction property of LWJGL, so for each OS, all types of natives are downloaded and LWJGL choose the right one.
portablemc - Version 3.0.1 - Now using piston-meta.mojang.com endpoint

Published by mindstorm38 over 2 years ago

Changes:

  • Fixed the launcher core to the https://piston-meta.mojang.com endpoint for API
  • Now using version manifest v2 in order to check metadata integrity with SHA1

Known issues:

  • Internal version (show about) is showing 3.0.0
portablemc - Version 3.0.0 - Addons installable from PyPI

Published by mindstorm38 over 2 years ago

Changes:

  • Workspace has been reworked, all modules resides in the src/ directory, both add-ons and core module.
  • Add-ons should now be installed from PIP, this has been a long-awaited feature, it's now easier to install add-ons.
  • The launcher is no longer distributed as a single-script file.
  • Dropped modrinth add-on in favor of ferium CLI.
  • Improved fabric, forge and archives APIs to provide a non-CLI API in addition to a CLI addon.
  • DownloadList now follows redirects.
portablemc - Version 2.3.1 - Patch for ISO date formatting in Py 3.6

Published by mindstorm38 over 2 years ago

Fixed:

  • Added a fallback function for datetime.datetime.fromisoformat(...) for Python 3.6 (#70).

Download and install:

To install PortableMC, please read this repository README, the single-file script is available below in the portablemc-single archive.

portablemc - Version 2.3.0 - ARM support

Published by mindstorm38 over 2 years ago

Changes:

  • New --lwjgl argument in start subcommand to allow running Minecraft on ARM with updated versions of LWJGL, see README for more information (#62, thanks @GooseDeveloper).
  • In the API, get_minecraft_arch now supports ARM architectures and returns arm32 or arm64 in such cases (#62).
  • Natives archives extraction to bin directory now supports newer formats for LWJGL (#62).
  • Many improvements regarding KeyboardInterrupt, in DownloadList, pretty_download and all command in CLI, in order to write a prettier interrupted message, instead of the default stack trace.

Download and install:

To install PortableMC, please read this repository README, the single-file script is available below in the portablemc-single archive.

portablemc - Version 2.2.2 - Fix batch

Published by mindstorm38 almost 3 years ago

Changes:

  • Network-related errors are now handled for every sub-command handler, it avoids rewriting try..except for each command handler. (#58).
  • Added a "sync" attribute to 'VersionManifest' class to know if the data is in sync with online manifest (#59).

Fixes:

  • The print_task function has been fixed to avoid printing a useless newline when using keep_previous=True with an empty previous line.
  • It's possible again to launch local versions if no internet is available, this issue was a side effect of previous changes (#57).

Download and install:

To install PortableMC, please read this repository README, the single-file script is available below in the portablemc-single archive.

Package Rankings
Top 9.17% on Pypi.org
Badges
Extracted from project README
PyPI - VersionPyPI - Downloads
Related Projects