This command-line tool allows easy installation of CurseForge modpacks on Linux systems. It installs each modpack in a semi-isolated environment, which prevents them from modifying important settings and data in your main Minecraft installation.
This is a small project and may be unstable. If you find a bug, please help me out by posting an issue!
V2.3 update info: Now uses the official CurseForge API. This has some major impacts:
V2.2 update info: After updating to version 2.2, please run the migrate.py
script to create launcher profiles for your modpacks in your main .minecraft
directory. See the changelog below for details.
Minecraft Forge auto-installation should now work with all current versions of the installer. If it does not work properly, please post an issue reporting the error as well as the version of the installer.
V2.1 update info: After updating to version 2.1, please run the clean.py
script
to upgrade all of your existing modpacks.
This program requires the Minecraft launcher, Python 3, and a JDK (8 or higher). The only dependency library that is not automatically installed is Requests, which can be installed with pip (or your favorite method of installing Python libraries):
pip3 install --user requests
python install.py <modpack_name.zip>
replacing <modpack_name.zip>
with the name of the zip file you just downloaded.
packs/
and run the program with the --manual
flag:
python install.py --manual <modpack_name.zip>
This will open the modloader's install GUI. Point it to your main
.minecraft
directory (should be default) and click 'Install Client'.
packs/
directory
and remove the installation from the Minecraft launcher. All of your saves,
resource packs, and shader packs will be retained and available in your other
modpacks.
.modcache
directory. To clean up unused mods, run
the clean.py
script.-b
flag in order to automatically open any modpacks
that need to be installed manually. This will open them in your default
browser using webbrowser
.python install.py -h
for a complete list of available commandsThe installer script goes through several steps to install the modpack:
.packs
folder. The zip file
contains a manifest file defining which version of Forge to use and a list of
all of the mods in the pack, along with resource and configuration files..minecraft
directory for the modpack, which is used to store
the modpack data.forge_install.py
to install Forge. This script downloads the
requested version of the Forge installer and uses the ForgeHack.java
program
to bypass the install GUI and install directly to the user's main .minecraft
folder.
fabric_install.py
directly runs the installer.mod_download.py
script to download the required mods into
the .modcache
folder. The downloader script also generates a list of the mod
jar files that are used by the modpack. The installer script then uses this
list to create symbolic links to each mod. This reduces total disk usage when multiple
modpacks use the same mod.overrides
from the unzipped
modpack folder into the modpack's .minecraft
folder.clean.py
scriptThis script is intended to upgrade modpacks created with previous versions of the installer
as well as remove unused mods from the .modcache
folder. Currently, it
assets
folder from each existing modpack and links it into the global
folder. This should improve download times when installing new modpacks as the assets
(mainly language and sound files) do not need to be entirely re-downloaded for each install.migrate.py
scriptThis script creates launcher profiles for each existing installation in the user's main
.minecraft
directory. It also moves all Minecraft Forge/Fabric installations into the main
.minecraft
directory. This allows all of the modpacks to be launched directly from the Minecraft
launcher and eliminates issues related to launcher login and update files across multiple working
directories.
This project is licensed under the MIT license. See the LICENSE file for details.
This project is not endorsed by or affiliated with CurseForge, Overwolf, or Microsoft in any way. All product and company names are the registered trademarks of their original owners.
--update
option
~/.var/app/<appname>/
unless explicitly specified otherwise. By default, the modpack installer creates a
complete game directory and stores mods relative to itself (in packs/
and .modcache
,
respectively)..minecraft
location so that they exist within the
Flatpak sandbox.shutil
instead of the deprecated distutils
to recursively copy directories
shutil.copytree
in Python versions before 3.8 does not support copying over
existing directories, so those older versions will still use distutils
.--open-browser
option will automatically open all of the manual download links in the
browser (not recommended if there are many mods that need to be downloaded manually, as all
of the links will be opened simultaneously)
(#28)..minecraft
directory
(#15). Automatically checks in the
default location ($HOME/.minecraft
) as well as the flatpak install location. Other locations
can be chosen with the --mcdir
option or by editing the user_preferences.json
file.legacy.curseforge.com
instead of www.curseforge.com
www.curseforge.com
..minecraft/datapacks
. Some modpacks will find datapacks at this location and will automatically
include them in new worlds, but this is not vanilla behavior (AFAIK).status_bar()
function so that the status bar is right-aligned properlyForgeHack
to work with older installer versions (tested on latest major releases down to
1.7.10).ForgeHack
class file when its corresponding source file is updated..minecraft
folder.
migrate.py
script is provided to move existing installations.ForgeHack
so that it works for recent versions of the Forge installer.assets
to a global directoryclean.py
script to migrate the assets
folder in existing modpacks and remove
unused mods.--manual
option to open the modloader installer GUI when automatic installation
failslauncher-profiles.json
file automatically instead of using the Minecraft
launcher to generate itInitial version--uses NodeJS script to fetch mod files